Skip to content

Commit

Permalink
Updated controller tests to pass the new parameters that the form uses
Browse files Browse the repository at this point in the history
  • Loading branch information
hectorcorrea committed Mar 31, 2023
1 parent ea233a0 commit 436f52c
Showing 1 changed file with 32 additions and 60 deletions.
92 changes: 32 additions & 60 deletions spec/controllers/works_controller_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,7 @@
"family_name_2" => "lovelace",
"sequence_2" => "2",
"creator_count" => "2",
"pre_curation_uploads" => uploaded_file
"pre_curation_uploads_added" => uploaded_file
}
sign_in user
expect(work.pre_curation_uploads).to be_empty
Expand Down Expand Up @@ -289,7 +289,7 @@
"family_name_2" => "lovelace",
"sequence_2" => "2",
"creator_count" => "2",
"pre_curation_uploads" => uploaded_files
"pre_curation_uploads_added" => uploaded_files
}
sign_in user
expect(work.pre_curation_uploads).to be_empty
Expand All @@ -307,62 +307,22 @@
fixture_file_upload("us_covid_2019.csv", "text/csv")
end

let(:temp_file1) do
file = Tempfile.new("temp_file1")
file.write("hello world")
file.close
file
end
let(:uploaded_temp_file1) { Rack::Test::UploadedFile.new(temp_file1.path, "text/plain") }
let(:temp_file2) do
file = Tempfile.new("temp_file2")
file.write("hello world 2")
file.close
file
end
let(:uploaded_temp_file2) { Rack::Test::UploadedFile.new(temp_file2.path, "text/plain") }
let(:temp_file3) do
file = Tempfile.new("temp_file3")
file.write("hello world 3")
file.close
file
end
let(:uploaded_temp_file3) { Rack::Test::UploadedFile.new(temp_file3.path, "text/plain") }

after do
temp_file1.unlink
temp_file2.unlink
temp_file3.unlink
end

let(:uploaded_file2) do
fixture_file_upload("us_covid_2020.csv", "text/csv")
end

let(:uploaded_files) do
{
work.pre_curation_uploads_fast[0].key => uploaded_file1,
work.pre_curation_uploads_fast[2].key => uploaded_file2
}
end
let(:uploaded_files) { [uploaded_file1, uploaded_file2] }

let(:bucket_url) do
"https://example-bucket.s3.amazonaws.com/"
end

let(:fake_s3_service) { stub_s3 }
let(:file1) { FactoryBot.build :s3_file, filename: temp_file1.path, last_modified: Time.parse("2022-04-21T18:29:40.000Z") }
let(:file2) { FactoryBot.build :s3_file, filename: temp_file2.path, last_modified: Time.parse("2022-04-21T18:29:40.000Z") }
let(:file3) { FactoryBot.build :s3_file, filename: temp_file3.path, last_modified: Time.parse("2022-04-21T18:29:40.000Z") }
let(:replaced_file1) { FactoryBot.build :s3_file, filename: uploaded_file1.path, last_modified: Time.parse("2022-04-21T18:29:40.000Z") }
let(:replaced_file3) { FactoryBot.build :s3_file, filename: uploaded_file2.path, last_modified: Time.parse("2022-04-21T18:29:40.000Z") }

before do
# This is utilized for active record to send the file to S3
stub_request(:put, /#{bucket_url}/).to_return(status: 200)
allow(fake_s3_service).to receive(:client_s3_files).and_return([file1, file2, file3], [replaced_file1, file2, replaced_file3])
let(:file1) { FactoryBot.build :s3_file, filename: uploaded_file1.path, last_modified: Time.parse("2022-04-21T18:29:40.000Z") }
let(:file2) { FactoryBot.build :s3_file, filename: uploaded_file2.path, last_modified: Time.parse("2022-04-21T18:29:40.000Z") }

params = {
let(:base_params) do
{
"title_main" => "test dataset updated",
"description" => "a new description",
"collection_id" => work.collection.id,
Expand All @@ -378,24 +338,33 @@
"given_name_2" => "ada",
"family_name_2" => "lovelace",
"sequence_2" => "2",
"creator_count" => "2",
"replaced_uploads" => uploaded_files
"creator_count" => "2"
}
end

before do
# This is utilized for active record to send the file to S3
stub_request(:put, /#{bucket_url}/).to_return(status: 200)
allow(fake_s3_service).to receive(:client_s3_files).and_return([file1, file2])

params = base_params.clone
params["pre_curation_uploads_added"] = [uploaded_file1, uploaded_file2]
sign_in user
post :update, params: params
end

it "handles the update page" do
saved_work = Work.find(work.id)
expect(work.pre_curation_uploads_fast.count).to eq 2

expect(saved_work.pre_curation_uploads_fast).not_to be_empty
expect(saved_work.pre_curation_uploads_fast.length).to eq(3)
params = base_params.clone
params["pre_curation_uploads_added"] = [uploaded_file2]
params["work[deleted_files_count]"] = "1"
params["work[deleted_file_1]"] = uploaded_file2.original_filename
post :update, params: params

# Remeber! Order is alpabetical
expect(saved_work.pre_curation_uploads_fast[0].filename.to_s).to include(File.basename(temp_file2.path))
expect(saved_work.pre_curation_uploads_fast[1].filename.to_s).to include("us_covid_2019")
expect(saved_work.pre_curation_uploads_fast[2].filename.to_s).to include("us_covid_2020")
expect(fake_s3_service).to have_received(:delete_s3_object).twice
saved_work = Work.find(work.id)
expect(saved_work.pre_curation_uploads_fast.count).to eq 2
expect(fake_s3_service).to have_received(:delete_s3_object).once
end
end

Expand Down Expand Up @@ -602,7 +571,10 @@
"family_name_2" => "lovelace",
"sequence_2" => "2",
"creator_count" => "2",
"pre_curation_uploads" => uploaded_files
"pre_curation_uploads_added" => uploaded_files,
"work[deleted_files_count]" => "2",
"work[deleted_file_1]" => uploaded_file1.original_filename,
"work[deleted_file_2]" => uploaded_file2.original_filename
}
end
let(:fake_s3_service) { stub_s3(data: [file1, file2]) }
Expand Down Expand Up @@ -692,7 +664,7 @@
"_method" => "patch",
"authenticity_token" => "MbUfIQVvYoCefkOfSpzyS0EOuSuOYQG21nw8zgg2GVrvcebBYI6jy1-_3LSzbTg9uKgehxWauYS8r1yxcN1Lwg",
"patch" => {
"pre_curation_uploads" => uploaded_file
"pre_curation_uploads_added" => [uploaded_file]
},
"commit" => "Continue",
"controller" => "works",
Expand Down Expand Up @@ -745,7 +717,7 @@
"_method" => "patch",
"authenticity_token" => "MbUfIQVvYoCefkOfSpzyS0EOuSuOYQG21nw8zgg2GVrvcebBYI6jy1-_3LSzbTg9uKgehxWauYS8r1yxcN1Lwg",
"patch" => {
"pre_curation_uploads" => uploaded_file
"pre_curation_uploads_added" => [uploaded_file]
},
"commit" => "Continue",
"controller" => "works",
Expand Down

0 comments on commit 436f52c

Please sign in to comment.