From 7d5bb4a6fa449152e7c2a2427bc8fa4c8cdfa41a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20Gon=C3=A7alves?= Date: Sun, 1 Dec 2024 15:13:49 +0000 Subject: [PATCH 1/6] Added the :selected option with the default tax category --- app/views/spree/admin/products/_tax_category_form.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/spree/admin/products/_tax_category_form.html.haml b/app/views/spree/admin/products/_tax_category_form.html.haml index 5c8080ca3b..aa919ae4f1 100644 --- a/app/views/spree/admin/products/_tax_category_form.html.haml +++ b/app/views/spree/admin/products/_tax_category_form.html.haml @@ -1,5 +1,5 @@ = f.field_container :tax_category_id do = f.label :tax_category_id, t(:tax_category) %br - = f.collection_select(:tax_category_id, Spree::TaxCategory.all, :id, :name, {:include_blank => Spree::Config.products_require_tax_category ? false : t(:none)}, {:class => "select2 fullwidth"}) + = f.collection_select(:tax_category_id, Spree::TaxCategory.all, :id, :name, {:include_blank => Spree::Config.products_require_tax_category ? false : t(:none), selected: Spree::TaxCategory.find_by(is_default: true)&.id}, {:class => "select2 fullwidth"}) = f.error_message_on :tax_category_id From d95bb7736a4d850284d75f56fbc3b10c2fcb3d0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20Gon=C3=A7alves?= Date: Sun, 1 Dec 2024 20:43:31 +0000 Subject: [PATCH 2/6] Fixed the logic and moved the code to a helper file --- app/controllers/spree/admin/products_controller.rb | 1 + app/helpers/spree/admin/tax_categories_helper.rb | 8 ++++++++ .../spree/admin/products/_tax_category_form.html.haml | 2 +- 3 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 app/helpers/spree/admin/tax_categories_helper.rb diff --git a/app/controllers/spree/admin/products_controller.rb b/app/controllers/spree/admin/products_controller.rb index 788d019dce..6aa006b151 100644 --- a/app/controllers/spree/admin/products_controller.rb +++ b/app/controllers/spree/admin/products_controller.rb @@ -11,6 +11,7 @@ module Spree include OrderCyclesHelper include EnterprisesHelper helper ::Admin::ProductsHelper + helper Spree::Admin::TaxCategoriesHelper before_action :load_data before_action :load_producers, only: [:index, :new] diff --git a/app/helpers/spree/admin/tax_categories_helper.rb b/app/helpers/spree/admin/tax_categories_helper.rb new file mode 100644 index 0000000000..d163437213 --- /dev/null +++ b/app/helpers/spree/admin/tax_categories_helper.rb @@ -0,0 +1,8 @@ +module Spree::Admin::TaxCategoriesHelper + def tax_category_dropdown_options(require_tax_category) + { + :include_blank => Spree::Config.products_require_tax_category ? false : t(:none), + selected: Spree::Config.products_require_tax_category ? Spree::TaxCategory.find_by(is_default: true)&.id : nil + } + end +end \ No newline at end of file diff --git a/app/views/spree/admin/products/_tax_category_form.html.haml b/app/views/spree/admin/products/_tax_category_form.html.haml index aa919ae4f1..38dd54ac87 100644 --- a/app/views/spree/admin/products/_tax_category_form.html.haml +++ b/app/views/spree/admin/products/_tax_category_form.html.haml @@ -1,5 +1,5 @@ = f.field_container :tax_category_id do = f.label :tax_category_id, t(:tax_category) %br - = f.collection_select(:tax_category_id, Spree::TaxCategory.all, :id, :name, {:include_blank => Spree::Config.products_require_tax_category ? false : t(:none), selected: Spree::TaxCategory.find_by(is_default: true)&.id}, {:class => "select2 fullwidth"}) + = f.collection_select(:tax_category_id, Spree::TaxCategory.all, :id, :name, tax_category_dropdown_options(Spree::Config.products_require_tax_category), {:class => "select2 fullwidth"}) = f.error_message_on :tax_category_id From 980f86ce8941e30fe5be872e41256aa5612ae049 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20Gon=C3=A7alves?= Date: Mon, 2 Dec 2024 21:22:12 +0000 Subject: [PATCH 3/6] Fixed the lint errors --- .../spree/admin/tax_categories_helper.rb | 27 ++++++++++++++----- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/app/helpers/spree/admin/tax_categories_helper.rb b/app/helpers/spree/admin/tax_categories_helper.rb index d163437213..32eedf6a6d 100644 --- a/app/helpers/spree/admin/tax_categories_helper.rb +++ b/app/helpers/spree/admin/tax_categories_helper.rb @@ -1,8 +1,21 @@ -module Spree::Admin::TaxCategoriesHelper - def tax_category_dropdown_options(require_tax_category) - { - :include_blank => Spree::Config.products_require_tax_category ? false : t(:none), - selected: Spree::Config.products_require_tax_category ? Spree::TaxCategory.find_by(is_default: true)&.id : nil - } +# frozen_string_literal: true + +module Spree + module Admin + module TaxCategoriesHelper + def tax_category_dropdown_options(require_tax_category) + if require_tax_category + { + include_blank: false, + selected: Spree::TaxCategory.find_by(is_default: true)&.id + } + else + { + include_blank: t(:none), + selected: nil + } + end + end + end end -end \ No newline at end of file +end From 3199118bae08532fcad45f32ec366ffe94600eb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20Gon=C3=A7alves?= Date: Tue, 3 Dec 2024 08:54:35 +0000 Subject: [PATCH 4/6] Removed the :selected attribute when the tax category is not required (like original version) --- app/helpers/spree/admin/tax_categories_helper.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/app/helpers/spree/admin/tax_categories_helper.rb b/app/helpers/spree/admin/tax_categories_helper.rb index 32eedf6a6d..ec9bb5ad42 100644 --- a/app/helpers/spree/admin/tax_categories_helper.rb +++ b/app/helpers/spree/admin/tax_categories_helper.rb @@ -12,7 +12,6 @@ module Spree else { include_blank: t(:none), - selected: nil } end end From 5def2b53e5e70e29c504306456cf36b6df071eb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20Gon=C3=A7alves?= Date: Sun, 8 Dec 2024 10:52:14 +0000 Subject: [PATCH 5/6] Added a spec file in order to test the tax categories helper --- .../spree/admin/tax_categories_helper_spec.rb | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 spec/helpers/spree/admin/tax_categories_helper_spec.rb diff --git a/spec/helpers/spree/admin/tax_categories_helper_spec.rb b/spec/helpers/spree/admin/tax_categories_helper_spec.rb new file mode 100644 index 0000000000..51ccb4b881 --- /dev/null +++ b/spec/helpers/spree/admin/tax_categories_helper_spec.rb @@ -0,0 +1,43 @@ +# frozen_string_literal: true + +require "spec_helper" + +RSpec.describe Spree::Admin::TaxCategoriesHelper do + describe '#tax_category_dropdown_options' do + let!(:default_tax_category) { create(:tax_category, is_default: true) } + let!(:other_tax_category) { create(:tax_category, is_default: false) } + + context 'when products require a tax category' do + it 'returns include_blank as false' do + options = helper.tax_category_dropdown_options(true) + expect(options[:include_blank]).to eq(false) + end + + it 'returns the default tax category as selected' do + options = helper.tax_category_dropdown_options(true) + expect(options[:selected]).to eq(default_tax_category.id) + end + + context 'when no default tax category exists' do + before { default_tax_category.update(is_default: false) } + + it 'returns nil for the selected value' do + options = helper.tax_category_dropdown_options(true) + expect(options[:selected]).to be_nil + end + end + end + + context 'when products do not require a tax category' do + it 'returns include_blank as the translated "none" string' do + options = helper.tax_category_dropdown_options(false) + expect(options[:include_blank]).to eq(I18n.t(:none)) + end + + it 'does not include a selected tax category' do + options = helper.tax_category_dropdown_options(false) + expect(options[:selected]).to be_nil + end + end + end +end From 0d4904d9e45d7772233660944d6c28e5e61e0299 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20Gon=C3=A7alves?= Date: Mon, 9 Dec 2024 09:07:22 +0000 Subject: [PATCH 6/6] Small change in spec file --- spec/helpers/spree/admin/tax_categories_helper_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/helpers/spree/admin/tax_categories_helper_spec.rb b/spec/helpers/spree/admin/tax_categories_helper_spec.rb index 51ccb4b881..a9463dc41e 100644 --- a/spec/helpers/spree/admin/tax_categories_helper_spec.rb +++ b/spec/helpers/spree/admin/tax_categories_helper_spec.rb @@ -31,7 +31,7 @@ RSpec.describe Spree::Admin::TaxCategoriesHelper do context 'when products do not require a tax category' do it 'returns include_blank as the translated "none" string' do options = helper.tax_category_dropdown_options(false) - expect(options[:include_blank]).to eq(I18n.t(:none)) + expect(options[:include_blank]).to eq("None") end it 'does not include a selected tax category' do