require "rails_helper"

RSpec.describe AudioReportsController, type: :controller do
  let(:user) { create(:user) }
  let(:video) { create(:video, project: create(:project, account: user.primary_account)) }

  before :each do
    sign_in user
  end

  describe "show" do
    context "when type is big" do
      it "builds the report and responds successfully" do
        get :show, params: { video_id: video, format: "xlsx", type: "big" }

        expect(response).to be_successful
        expect(response.body.unpack("C*").pack("U*")).to_not be_blank
        expect(response.header["Content-Type"]).to eq "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
        expect(response.header["Content-Disposition"]).to match "video_file-mp4_big-cue-sheet.xlsx"
      end
    end

    context "when type is discovery music" do
      it "builds the report and responds successfully" do
        get :show, params: { video_id: video, format: "xlsx", type: "discovery" }

        expect(response).to be_successful
        expect(response.body.unpack("C*").pack("U*")).to_not be_blank
        expect(response.header["Content-Type"]).to eq "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
        expect(response.header["Content-Disposition"]).to match "discovery-cue-sheet.xlsx"
      end
    end

    context "when type is nat geo music" do
      it "builds the report and responds successfully" do
        get :show, params: { video_id: video, format: "xlsx", type: "nat_geo" }

        expect(response).to be_successful
        expect(response.body.unpack("C*").pack("U*")).to_not be_blank
        expect(response.header["Content-Type"]).to eq "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
        expect(response.header["Content-Disposition"]).to match "music-cue-sheet.xlsx"
      end
    end

    context "when type is nat geo original music" do
      it "builds the report and responds successfully" do
        get :show, params: { video_id: video, format: "xlsx", type: "nat_geo-original" }

        expect(response).to be_successful
        expect(response.body.unpack("C*").pack("U*")).to_not be_blank
        expect(response.header["Content-Type"]).to eq "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
        expect(response.header["Content-Disposition"]).to match "original-music-log.xlsx"
      end
    end
  end
end
