require " rails_helper "
RSpec . describe BulkUploadSalesResultsController , type : :request do
let ( :user ) { create ( :user ) }
let ( :support_user ) { create ( :user , :support ) }
let ( :bulk_upload ) { create ( :bulk_upload , :sales , user : , bulk_upload_errors : ) }
let ( :bulk_upload_errors ) { create_list ( :bulk_upload_error , 2 ) }
let ( :viewing_user ) { user }
before do
sign_in viewing_user
end
describe " GET /sales-logs/bulk-upload-results/:ID/summary " do
context " when viewed by another user in the same org " do
let ( :other_user ) { create ( :user , organisation : user . organisation ) }
let ( :viewing_user ) { other_user }
it " is accessible " do
get " /sales-logs/bulk-upload-results/ #{ bulk_upload . id } /summary "
expect ( response ) . to be_successful
expect ( response . body ) . to include ( bulk_upload . filename )
end
context " and bulk upload has been cancelled by not the current moved user " do
let ( :bulk_upload ) { create ( :bulk_upload , :sales , user : , bulk_upload_errors : , choice : " cancelled-by-moved-user " , moved_user_id : user . id ) }
it " is displays a correct banner " do
get " /sales-logs/bulk-upload-results/ #{ bulk_upload . id } /summary "
expect ( response . body ) . to include ( " This error report is out of date. " )
expect ( response . body ) . to include ( " Some logs in this upload are assigned to #{ user . name } , who has moved to a different organisation since this file was uploaded. Reupload the file to get an accurate error report. " )
end
end
context " and bulk upload has been cancelled by the current moved user " do
let ( :bulk_upload ) { create ( :bulk_upload , :sales , user : , bulk_upload_errors : , choice : " cancelled-by-moved-user " , moved_user_id : other_user . id ) }
it " is displays a correct banner " do
get " /sales-logs/bulk-upload-results/ #{ bulk_upload . id } /summary "
expect ( response . body ) . to include ( " This error report is out of date. " )
expect ( response . body ) . to include ( " You moved to a different organisation since this file was uploaded. Reupload the file to get an accurate error report. " )
end
end
end
end
describe " GET /sales-logs/bulk-upload-results/:ID " do
it " renders correct year " do
get " /sales-logs/bulk-upload-results/ #{ bulk_upload . id } "
expect ( response ) . to be_successful
expect ( response . body ) . to include ( " Bulk Upload for sales ( #{ bulk_upload . year_combo } ) " )
end
it " renders correct number of errors " do
get " /sales-logs/bulk-upload-results/ #{ bulk_upload . id } "
expect ( response ) . to be_successful
expect ( response . body ) . to include ( " We found 2 errors in your file " )
end
it " renders filename of the upload " do
get " /sales-logs/bulk-upload-results/ #{ bulk_upload . id } "
expect ( response ) . to be_successful
expect ( response . body ) . to include ( bulk_upload . filename )
end
it " renders Purchaser code " do
get " /sales-logs/bulk-upload-results/ #{ bulk_upload . id } "
expect ( response . body ) . to include ( " Purchaser code: #{ bulk_upload . bulk_upload_errors . first . purchaser_code } " )
end
it " does not render tenant code or property reference " do
get " /sales-logs/bulk-upload-results/ #{ bulk_upload . id } "
expect ( response . body ) . not_to include ( " Tenant code: " )
expect ( response . body ) . not_to include ( " Property reference: " )
end
context " when there are errors for more than 1 row " do
let ( :bulk_upload_errors ) { [ bulk_upload_error_1 , bulk_upload_error_2 ] }
let ( :bulk_upload_error_1 ) { create ( :bulk_upload_error , row : 1 ) }
let ( :bulk_upload_error_2 ) { create ( :bulk_upload_error , row : 2 ) }
it " renders no. of tables equal to no. of rows with errors " do
get " /sales-logs/bulk-upload-results/ #{ bulk_upload . id } "
expect ( response . body ) . to include ( " <table " ) . twice
end
end
context " when viewing lettings log " do
let ( :bulk_upload ) { create ( :bulk_upload , :lettings , user : , bulk_upload_errors : ) }
it " renders a 404 " do
get " /sales-logs/bulk-upload-results/ #{ bulk_upload . id } "
expect ( response ) . not_to be_successful
expect ( response ) . to be_not_found
end
end
context " and bulk upload has been cancelled by not the current moved user " do
let ( :other_user ) { create ( :user , organisation : user . organisation ) }
let ( :bulk_upload ) { create ( :bulk_upload , :sales , user : , bulk_upload_errors : , choice : " cancelled-by-moved-user " , moved_user_id : other_user . id ) }
it " is displays a correct banner " do
get " /sales-logs/bulk-upload-results/ #{ bulk_upload . id } /summary "
expect ( response . body ) . to include ( " This error report is out of date. " )
expect ( response . body ) . to include ( " Some logs in this upload are assigned to #{ other_user . name } , who has moved to a different organisation since this file was uploaded. Reupload the file to get an accurate error report. " )
end
end
context " and bulk upload has been cancelled by the current moved user " do
let ( :bulk_upload ) { create ( :bulk_upload , :sales , user : , bulk_upload_errors : , choice : " cancelled-by-moved-user " , moved_user_id : user . id ) }
it " is displays a correct banner " do
get " /sales-logs/bulk-upload-results/ #{ bulk_upload . id } /summary "
expect ( response . body ) . to include ( " This error report is out of date. " )
expect ( response . body ) . to include ( " You moved to a different organisation since this file was uploaded. Reupload the file to get an accurate error report. " )
end
end
end
end