From 6842cbfda4a09d0adbdb63a9307d9c8ecfabe773 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Bellet Date: Wed, 12 May 2021 11:41:50 +0200 Subject: [PATCH 1/3] Force content type to "text/html" - Force the content type to be `text/html` (instead of `application/json`) --- app/controllers/api/v0/enterprises_controller.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/controllers/api/v0/enterprises_controller.rb b/app/controllers/api/v0/enterprises_controller.rb index 804808f53b..9dd4737a5d 100644 --- a/app/controllers/api/v0/enterprises_controller.rb +++ b/app/controllers/api/v0/enterprises_controller.rb @@ -44,9 +44,9 @@ module Api authorize! :update, @enterprise if params[:logo] && @enterprise.update( logo: params[:logo] ) - render plain: @enterprise.logo.url(:medium), status: :ok + render html: @enterprise.logo.url(:medium), status: :ok elsif params[:promo] && @enterprise.update( promo_image: params[:promo] ) - render plain: @enterprise.promo_image.url(:medium), status: :ok + render html: @enterprise.promo_image.url(:medium), status: :ok else invalid_resource!(@enterprise) end From 0306732a3d0f851ac2e41636166f832c85b25475 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Bellet Date: Tue, 25 May 2021 15:29:52 +0200 Subject: [PATCH 2/3] Add test for enterprise logo and promo image uploading - Add a fixture image to do the upload thanks to `fixture_file_upload` - Check the response status, the content type and the response body for both logo image and promo image --- .../api/v0/enterprises_controller_spec.rb | 15 ++++++++++++--- spec/fixtures/files/logo.png | Bin 0 -> 6274 bytes 2 files changed, 12 insertions(+), 3 deletions(-) create mode 100644 spec/fixtures/files/logo.png diff --git a/spec/controllers/api/v0/enterprises_controller_spec.rb b/spec/controllers/api/v0/enterprises_controller_spec.rb index cff8140784..609b5329af 100644 --- a/spec/controllers/api/v0/enterprises_controller_spec.rb +++ b/spec/controllers/api/v0/enterprises_controller_spec.rb @@ -75,15 +75,24 @@ describe Api::V0::EnterprisesController, type: :controller do end describe "submitting a valid image" do + let!(:logo) { fixture_file_upload("files/logo.png", "image/png") } before do allow(Enterprise) .to receive(:find_by).with({ permalink: enterprise.id.to_s }) { enterprise } - allow(enterprise).to receive(:update).and_return(true) end - it "I can update enterprise image" do - api_post :update_image, logo: 'a logo', id: enterprise.id + it "I can update enterprise logo image" do + api_post :update_image, logo: logo, id: enterprise.id expect(response.status).to eq 200 + expect(response.content_type).to eq "text/html" + expect(response.body).to match %r{/images/enterprises/logos/\d*/medium/logo\.png\?\d*} + end + + it "I can update enterprise promo image" do + api_post :update_image, promo: logo, id: enterprise.id + expect(response.status).to eq 200 + expect(response.content_type).to eq "text/html" + expect(response.body).to match %r{/images/enterprises/promo_images/\d*/medium/logo\.jpg\?\d*} end end end diff --git a/spec/fixtures/files/logo.png b/spec/fixtures/files/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..c8f2fb0098d154e51ce54e43d21484bdefc9dbf0 GIT binary patch literal 6274 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 literal 0 HcmV?d00001 From 0c8bfea2f7b218c4a1d85927099b9a3bffaa84d9 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Bellet Date: Tue, 25 May 2021 15:30:06 +0200 Subject: [PATCH 3/3] Add feature tests for upload images on enterprise registration For both logo and promo images --- spec/features/consumer/registration_spec.rb | 10 ++++++++++ spec/fixtures/files/promo.png | Bin 0 -> 4511 bytes 2 files changed, 10 insertions(+) create mode 100644 spec/fixtures/files/promo.png diff --git a/spec/features/consumer/registration_spec.rb b/spec/features/consumer/registration_spec.rb index 9dc76828b5..4975206323 100644 --- a/spec/features/consumer/registration_spec.rb +++ b/spec/features/consumer/registration_spec.rb @@ -100,10 +100,20 @@ feature "Registration", js: true do expect(e.charges_sales_tax).to be true # Images + # Upload logo image + attach_file "image-select", Rails.root.join("spec/fixtures/files/logo.png"), visible: false + expect(page).to have_no_css('#image-placeholder .loading') + expect(page.find('#image-placeholder img')['src']).to_not be_empty + # Move from logo page click_button "Continue" expect(page).to have_content 'Step 3. Select Promo Image' + # Upload promo image + attach_file "image-select", Rails.root.join("spec/fixtures/files/promo.png"), visible: false + expect(page).to have_no_css('#image-placeholder .loading') + expect(page.find('#image-placeholder img')['src']).to_not be_empty + # Move from promo page click_button "Continue" expect(page).to have_content 'How can people find My Awesome Enterprise online?' diff --git a/spec/fixtures/files/promo.png b/spec/fixtures/files/promo.png new file mode 100644 index 0000000000000000000000000000000000000000..6058b26a750d96d49f4fb99e73f1ae969e26abe7 GIT binary patch literal 4511 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 literal 0 HcmV?d00001