From 68cb6300410d296b086037faad4c6b1671b2f7f9 Mon Sep 17 00:00:00 2001 From: bilal Date: Wed, 10 Jun 2020 13:18:03 +0200 Subject: [PATCH] add specs for material release photos dropzone on public signing form --- .../material_releases_controller_spec.rb | 14 +++++++++++ spec/factories/material_releases.rb | 8 ++++++ .../user_managing_material_releases_spec.rb | 25 +++++++++++++++++-- 3 files changed, 45 insertions(+), 2 deletions(-) diff --git a/spec/controllers/public/material_releases_controller_spec.rb b/spec/controllers/public/material_releases_controller_spec.rb index 1ada22f..6ab78be 100644 --- a/spec/controllers/public/material_releases_controller_spec.rb +++ b/spec/controllers/public/material_releases_controller_spec.rb @@ -7,6 +7,15 @@ describe Public::MaterialReleasesController do render_views describe "#create" do + it "allows photos param" do + contract_template = create(:contract_template, project: project) + + post :create, params: { account_id: user.primary_account.to_param, project_id: project, contract_template_id: contract_template, material_release: material_release_params_with_photos } + + expect(response).to be_successful + expect(MaterialRelease.last.photos.attached?).to eq true + end + it "logs analytics" do contract_template = create(:contract_template, project: project) @@ -65,6 +74,11 @@ describe Public::MaterialReleasesController do attributes_for(:material_release, :native).except(:signature).merge(signature_param) end + def material_release_params_with_photos + attributes_for(:material_release, :native, :with_photo).except(:signature).merge(signature_param) + end + + def signature_param file = file_fixture("signature.png") data_uri = Base64Image.from_image(file).data_uri diff --git a/spec/factories/material_releases.rb b/spec/factories/material_releases.rb index 9f6339a..d4ac6d5 100644 --- a/spec/factories/material_releases.rb +++ b/spec/factories/material_releases.rb @@ -15,6 +15,14 @@ FactoryBot.define do end end + trait :with_photo do + photos do + path = Rails.root.join("spec", "fixtures", "files", "material_photo.png") + [Rack::Test::UploadedFile.new(path, "image/png")] + end + end + + trait :non_native do contract do path = Rails.root.join("spec", "fixtures", "files", "contract.pdf") diff --git a/spec/features/user_managing_material_releases_spec.rb b/spec/features/user_managing_material_releases_spec.rb index 6a6e486..d0d732a 100644 --- a/spec/features/user_managing_material_releases_spec.rb +++ b/spec/features/user_managing_material_releases_spec.rb @@ -5,7 +5,7 @@ feature "User managing material releases" do let(:project) { create(:project, members: current_user, account: current_user.primary_account) } context "when signed out" do - scenario "creating a release", js: true do + scenario "creating a release without photos", js: true do contract_template = create(:contract_template, project: project) visit new_account_project_contract_template_material_release_path(project.account, project, contract_template) @@ -17,10 +17,27 @@ feature "User managing material releases" do draw_signature file_fixture("signature.png"), "material_release_signature_base64" end - click_button "I have read and agree to the above" + click_button submit_release_button expect(page).to have_content("Your release was successfully submitted. Thank you.") end + + scenario "creating a release with photos", js: true do + contract_template = create(:contract_template, project: project) + + visit new_account_project_contract_template_material_release_path(project.account, project, contract_template) + + fill_in material_name_field, with: "Pepsi Logo" + fill_in person_first_name_field, with: "Jane" + fill_in person_last_name_field, with: "Doe" + draw_signature file_fixture("signature.png"), "material_release_signature_base64" + + drop_file Rails.root.join(file_fixture("material_photo.png")), type: :dropzone + click_button submit_release_button + + expect(page).to have_content("Your release was successfully submitted. Thank you.") + expect(MaterialRelease.last.photos.attached?).to eq true + end end context "when signed in" do @@ -224,6 +241,10 @@ feature "User managing material releases" do t "helpers.submit.material_release.create" end + def submit_release_button + t 'shared.submit_release_long' + end + def create_release_notice t "material_releases.create.notice" end