require "rails_helper"

RSpec.describe BulkUpload::Sales::Validator do
  subject(:validator) { described_class.new(bulk_upload:, path:) }

  let(:bulk_upload) { create(:bulk_upload) }
  let(:path) { file.path }
  let(:file) { Tempfile.new }

  describe "validations" do
    context "when file is empty" do
      it "is not valid" do
        expect(validator).not_to be_valid
      end
    end

    context "when file has too many columns" do
      before do
        file.write((%w[a] * 127).join(","))
        file.rewind
      end

      it "is not valid" do
        expect(validator).not_to be_valid
      end
    end

    context "when incorrect headers"
  end

  context "when a valid csv that contains errors" do
    let(:path) { file_fixture("2022_23_sales_bulk_upload.csv") }

    it "persists bulk upload errors" do
      expect {
        validator.call
      }.to change(BulkUploadError, :count).by(1)
    end

    it "populates purchaser_code" do
      validator.call

      error = BulkUploadError.last
      expect(error.purchaser_code).to eql("1")
    end
  end
end