require "rails_helper"

RSpec.describe AudioConfirmation do
  describe "associations" do
    it { is_expected.to belong_to(:video) }
  end

  describe "validations" do
    it { is_expected.to validate_presence_of(:time_elapsed) }

    describe "confirmation_type" do
      it "validates only original_music and library_music are allowed" do
        expect(build(:audio_confirmation, confirmation_type: "original_music").valid?).to eq true
        expect(build(:audio_confirmation, confirmation_type: "library_music").valid?).to eq true
        expect(build(:audio_confirmation, confirmation_type: "unknown_music").valid?).to eq false
      end
    end
  end

  describe "#appears_at" do
    it "returns formatted timecode" do
      audio_confirmation = build(:audio_confirmation, time_elapsed: "1.039")

      expect(audio_confirmation.appears_at).to eq "00:00:01:01"
    end
  end

  describe "#presented_source_file_name" do
    context "when confirmation_type is original_music" do
      it "returns source_file_name with (O) prefix" do
        audio_confirmation = build(:audio_confirmation, confirmation_type: "original_music", source_file_name: "source_file_name")

        expect(audio_confirmation.presented_source_file_name).to eq "(O) source_file_name"
      end
    end

    context "when confirmation_type is library_music" do
      it "returns source_file_name with (L) prefix" do
        audio_confirmation = build(:audio_confirmation, confirmation_type: "library_music", source_file_name: "source_file_name")

        expect(audio_confirmation.presented_source_file_name).to eq "(L) source_file_name"
      end
    end
  end

  describe "#confirmation_type_library?" do
    it "returns true when confirmation_type is library" do
      expect(build(:audio_confirmation, :library)).to be_confirmation_type_library
    end

    it "returns false when confirmation_type is not library" do
      expect(build(:audio_confirmation, :original)).not_to be_confirmation_type_library
    end
  end
end
