require 'rails_helper'

describe UnreleasedAppearance do
  describe 'associations' do
    it { is_expected.to belong_to(:video) }
  end

  describe 'validations' do
    it do 
     is_expected.to validate_presence_of(:time_elapsed)
     is_expected.to validate_presence_of(:note_category)
    end
  end

  describe "enums" do
    it { is_expected.to define_enum_for(:note_category).with_values([:other, :missing_talent_release, :missing_appearance_release, :missing_location_release, :missing_acquired_media_license, :missing_materials_release, :missing_music_license, :logo_may_require_blurring]) }
  end

  describe ".note_text" do
    let(:unreleased_appearance) do
      create(:unreleased_appearance)
    end

    it "returns notes field in case category is 'other'" do
      unreleased_appearance.notes = "good note"
      result = unreleased_appearance.note_text
      expect(result).to eq "good note"
    end 

    it "returns human readable predefined value if category is not 'other'" do
      UnreleasedAppearance.note_categories.each_pair do |category, value|
        next if category == 'other'  
        unreleased_appearance.note_category = category
        result = unreleased_appearance.note_text
        expect(result).to eq unreleased_appearance.note_category.humanize
      end
    end 
  end
end
