From 3edf5fd6d94210e5f4eb24cd2e29bf26c8e00a6b Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Mon, 21 Dec 2020 19:16:16 +0000 Subject: [PATCH 1/5] Extends spec coverage of Tax Rates settings - CRUD operations --- .../admin/configuration/tax_rates_spec.rb | 39 +++++++++++++++++-- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/spec/features/admin/configuration/tax_rates_spec.rb b/spec/features/admin/configuration/tax_rates_spec.rb index b6bf97fc5b..db841096ca 100644 --- a/spec/features/admin/configuration/tax_rates_spec.rb +++ b/spec/features/admin/configuration/tax_rates_spec.rb @@ -1,12 +1,12 @@ -# frozen_string_literal: true - require 'spec_helper' describe "Tax Rates" do include AuthenticationHelper let!(:calculator) { create(:calculator_per_item, calculable: create(:order)) } - let!(:tax_rate) { create(:tax_rate, calculator: calculator) } + let!(:tax_rate) { create(:tax_rate, name: "IVA", calculator: calculator) } + let!(:zone_id) { create(:zone, name: "Ilhas") } + let!(:tax_category_id) { create(:tax_category, name: "Full") } before do login_as_admin_and_visit spree.edit_admin_general_settings_path @@ -29,4 +29,37 @@ describe "Tax Rates" do click_button "Create" expect(page).to have_content("Tax rate has been successfully created!") end + + # Adds further CRUD operations: editing, deleting + context "while editing" do + it "fields can be filled in and dropfdowns retains changes" do + visit spree.edit_admin_tax_rate_path(tax_rate.id) + fill_in "Rate", with: "0.23" + fill_in "Name", with: "GST" + + find(:id, "tax_rate_zone_id").select "Ilhas" + find(:id, "tax_rate_tax_category_id").select "Full" + click_button "Update" + expect(page).to have_content('Tax rate "GST" has been successfully updated!') + expect(page).to have_content("0.23") + end + + # See #6554: in order to set a Tax Rate as included in the price, + # there must be at least one Zone set the "Default Tax Zone" + it "checkboxes can be ticked" do + visit spree.edit_admin_tax_rate_path(tax_rate.id) + uncheck("tax_rate[show_rate_in_label]") + check("tax_rate[included_in_price]") + click_button "Update" + expect(page).to have_content("Included Price Validation") + end + + it "can be deleted", js: true do + click_link "Tax Rates" + accept_alert do + find(:xpath, "/html/body/div[1]/div[3]/div/div/div/table/tbody/tr[1]/td[8]/a[2]").click + end + expect(page).not_to have_content("IVA") + end + end end From 8a453abd264af7d6431e363cbe8fdb56b23fb2e2 Mon Sep 17 00:00:00 2001 From: filipefurtad0 <49817236+filipefurtad0@users.noreply.github.com> Date: Sun, 3 Jan 2021 17:46:41 +0000 Subject: [PATCH 2/5] Adding "frozen_string_literal" back to the file Mistakenly removed the line "# frozen_string_literal: true". This commit adds it back in. --- spec/features/admin/configuration/tax_rates_spec.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/features/admin/configuration/tax_rates_spec.rb b/spec/features/admin/configuration/tax_rates_spec.rb index db841096ca..52fc00eef8 100644 --- a/spec/features/admin/configuration/tax_rates_spec.rb +++ b/spec/features/admin/configuration/tax_rates_spec.rb @@ -1,3 +1,4 @@ +# frozen_string_literal: true require 'spec_helper' describe "Tax Rates" do From 7f658d4c46bee8cc8d47b317f2e80daf005dbea0 Mon Sep 17 00:00:00 2001 From: filipefurtad0 <49817236+filipefurtad0@users.noreply.github.com> Date: Sun, 3 Jan 2021 18:33:20 +0000 Subject: [PATCH 3/5] Removed the "_id" ending from objects Renamed objects ":zone_id" and ":tax_category_id" into ":zone" and ":tax_category," as these are full objects and not just ids. --- spec/features/admin/configuration/tax_rates_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/features/admin/configuration/tax_rates_spec.rb b/spec/features/admin/configuration/tax_rates_spec.rb index 52fc00eef8..a86ae32264 100644 --- a/spec/features/admin/configuration/tax_rates_spec.rb +++ b/spec/features/admin/configuration/tax_rates_spec.rb @@ -6,8 +6,8 @@ describe "Tax Rates" do let!(:calculator) { create(:calculator_per_item, calculable: create(:order)) } let!(:tax_rate) { create(:tax_rate, name: "IVA", calculator: calculator) } - let!(:zone_id) { create(:zone, name: "Ilhas") } - let!(:tax_category_id) { create(:tax_category, name: "Full") } + let!(:zone) { create(:zone, name: "Ilhas") } + let!(:tax_category) { create(:tax_category, name: "Full") } before do login_as_admin_and_visit spree.edit_admin_general_settings_path From fc062a04a4905f9fe2a4032d4d10891f141f674e Mon Sep 17 00:00:00 2001 From: filipefurtad0 <49817236+filipefurtad0@users.noreply.github.com> Date: Sun, 3 Jan 2021 18:39:13 +0000 Subject: [PATCH 4/5] Updated the assertion/error to consider PR #6545 --- spec/features/admin/configuration/tax_rates_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/features/admin/configuration/tax_rates_spec.rb b/spec/features/admin/configuration/tax_rates_spec.rb index a86ae32264..3af39187b0 100644 --- a/spec/features/admin/configuration/tax_rates_spec.rb +++ b/spec/features/admin/configuration/tax_rates_spec.rb @@ -52,7 +52,7 @@ describe "Tax Rates" do uncheck("tax_rate[show_rate_in_label]") check("tax_rate[included_in_price]") click_button "Update" - expect(page).to have_content("Included Price Validation") + expect(page).to have_content("cannot be selected unless you have set a Default Tax Zone") end it "can be deleted", js: true do From 3c123bb9474977796b160e8fef0eb6606af1a40d Mon Sep 17 00:00:00 2001 From: filipefurtad0 <49817236+filipefurtad0@users.noreply.github.com> Date: Sun, 3 Jan 2021 18:47:49 +0000 Subject: [PATCH 5/5] Simplified the delete test-case Using :xpath may compromise the stability of the test, and make it break upon slight changes to the page. --- spec/features/admin/configuration/tax_rates_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/features/admin/configuration/tax_rates_spec.rb b/spec/features/admin/configuration/tax_rates_spec.rb index 3af39187b0..c0108c18c3 100644 --- a/spec/features/admin/configuration/tax_rates_spec.rb +++ b/spec/features/admin/configuration/tax_rates_spec.rb @@ -58,7 +58,7 @@ describe "Tax Rates" do it "can be deleted", js: true do click_link "Tax Rates" accept_alert do - find(:xpath, "/html/body/div[1]/div[3]/div/div/div/table/tbody/tr[1]/td[8]/a[2]").click + find(".delete-resource").click end expect(page).not_to have_content("IVA") end