You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							134 lines
						
					
					
						
							4.4 KiB
						
					
					
				
			
		
		
	
	
							134 lines
						
					
					
						
							4.4 KiB
						
					
					
				require "rails_helper" | 
						|
 | 
						|
RSpec.describe "Bulk upload lettings log" do | 
						|
  include CollectionTimeHelper | 
						|
 | 
						|
  let(:user) { create(:user) } | 
						|
  let(:current_year) { current_collection_start_year } | 
						|
  let(:current_formatted_year) { "#{current_year} to #{current_year + 1}" } | 
						|
 | 
						|
  let(:stub_file_upload) do | 
						|
    vcap_services = { "aws-s3-bucket" => {} } | 
						|
    mock_storage_service = instance_double("S3Service") | 
						|
 | 
						|
    allow(ENV).to receive(:[]) | 
						|
    allow(ENV).to receive(:[]).with("VCAP_SERVICES").and_return(vcap_services.to_json) | 
						|
 | 
						|
    allow(Storage::S3Service).to receive(:new).and_return(mock_storage_service) | 
						|
    allow(mock_storage_service).to receive(:write_file) | 
						|
  end | 
						|
 | 
						|
  before do | 
						|
    stub_file_upload | 
						|
    sign_in user | 
						|
  end | 
						|
 | 
						|
  # rubocop:disable RSpec/AnyInstance | 
						|
  context "when during crossover period" do | 
						|
    before do | 
						|
      allow(FormHandler.instance).to receive(:lettings_in_crossover_period?).and_return(true) | 
						|
    end | 
						|
 | 
						|
    it "shows journey with year option" do | 
						|
      visit("/lettings-logs") | 
						|
      expect(page).to have_link("Upload lettings logs in bulk") | 
						|
      click_link("Upload lettings logs in bulk") | 
						|
 | 
						|
      expect(page).to have_content("Which year") | 
						|
      click_button("Continue") | 
						|
 | 
						|
      expect(page).to have_content("You must select a collection period to upload for") | 
						|
      choose(current_formatted_year) | 
						|
      click_button("Continue") | 
						|
 | 
						|
      click_link("Back") | 
						|
 | 
						|
      expect(page.find_field("form-year-#{current_year}-field")).to be_checked | 
						|
      click_button("Continue") | 
						|
 | 
						|
      expect(page).to have_content("Upload lettings logs in bulk (#{current_formatted_year})") | 
						|
      click_button("Continue") | 
						|
 | 
						|
      expect(page).not_to have_content("What is the needs type?") | 
						|
 | 
						|
      expect(page).to have_content("Upload lettings logs in bulk (#{current_formatted_year})") | 
						|
      expect(page).to have_content("Upload your file") | 
						|
      click_button("Upload") | 
						|
 | 
						|
      allow_any_instance_of(Forms::BulkUploadForm::UploadYourFile).to receive(:`).and_return("not a csv") | 
						|
 | 
						|
      expect(page).to have_content("Select which file to upload") | 
						|
      attach_file "file", file_fixture("2023_24_lettings_bulk_upload.xlsx") | 
						|
      click_button("Upload") | 
						|
 | 
						|
      allow_any_instance_of(Forms::BulkUploadForm::UploadYourFile).to receive(:`).and_return("text/csv") | 
						|
 | 
						|
      expect(page).to have_content("Your file must be in CSV format") | 
						|
      attach_file "file", file_fixture("blank_bulk_upload_sales.csv") | 
						|
      expect { | 
						|
        click_button("Upload") | 
						|
      }.to change(BulkUpload, :count).by(1) | 
						|
 | 
						|
      expect(page).to have_content("Once this is done") | 
						|
      click_link("Back") | 
						|
 | 
						|
      expect(page).to have_content("Upload lettings logs in bulk") | 
						|
    end | 
						|
 | 
						|
    it "shows file to large error" do | 
						|
      stub_const("Forms::BulkUploadForm::UploadYourFile::MAX_FILE_SIZE", 1.bytes) | 
						|
      visit("/lettings-logs") | 
						|
 | 
						|
      click_link("Upload lettings logs in bulk") | 
						|
      expect(page).to have_content("Which year") | 
						|
      click_button("Continue") | 
						|
      choose(current_formatted_year) | 
						|
      click_button("Continue") | 
						|
      click_button("Continue") | 
						|
 | 
						|
      allow_any_instance_of(Forms::BulkUploadForm::UploadYourFile).to receive(:`).and_return("text/csv") | 
						|
 | 
						|
      attach_file "file", file_fixture("2023_24_lettings_bulk_upload.xlsx") | 
						|
      click_button("Upload") | 
						|
 | 
						|
      expect(page).to have_content("File must be 10MB or less. Check your file and delete data that does not need to be uploaded.") | 
						|
    end | 
						|
  end | 
						|
  # rubocop:enable RSpec/AnyInstance | 
						|
 | 
						|
  context "when not it crossover period" do | 
						|
    before do | 
						|
      allow(FormHandler.instance).to receive(:lettings_in_crossover_period?).and_return(false) | 
						|
    end | 
						|
 | 
						|
    it "shows journey with year option" do | 
						|
      visit("/lettings-logs") | 
						|
      expect(page).to have_link("Upload lettings logs in bulk") | 
						|
      click_link("Upload lettings logs in bulk") | 
						|
 | 
						|
      expect(page).to have_content("Upload lettings logs in bulk (#{current_formatted_year})") | 
						|
      click_button("Continue") | 
						|
 | 
						|
      expect(page).to have_content("Upload your file") | 
						|
    end | 
						|
 | 
						|
    it "shows journey without the needstype" do | 
						|
      visit("/lettings-logs") | 
						|
      expect(page).to have_link("Upload lettings logs in bulk") | 
						|
      click_link("Upload lettings logs in bulk") | 
						|
 | 
						|
      expect(page).to have_content("Prepare your file") | 
						|
      click_button("Continue") | 
						|
 | 
						|
      click_link("Back") | 
						|
 | 
						|
      expect(page).to have_content("Prepare your file") | 
						|
      click_button("Continue") | 
						|
 | 
						|
      expect(page).to have_content("Upload lettings logs in bulk (#{current_formatted_year})") | 
						|
 | 
						|
      expect(page).to have_content("Upload your file") | 
						|
      click_button("Upload") | 
						|
    end | 
						|
  end | 
						|
end
 | 
						|
 |