diff --git a/app/helpers/admin/products_helper.rb b/app/helpers/admin/products_helper.rb index 74fe24a0b1..5c13c4a0d3 100644 --- a/app/helpers/admin/products_helper.rb +++ b/app/helpers/admin/products_helper.rb @@ -11,19 +11,20 @@ module Admin end def prepare_new_variant(product) - product.variants.build do |variant| - variant.unit_value = 1.0 * (product.variant_unit_scale || 1) - variant.unit_presentation = VariantUnits::OptionValueNamer.new(variant).name - end + product.variants.build end def unit_value_with_description(variant) - scaled_unit_value = (variant.unit_value || 1) / (variant.product.variant_unit_scale || 1) - precised_unit_value = number_with_precision( - scaled_unit_value, - precision: nil, - strip_insignificant_zeros: true - ) + precised_unit_value = nil + + if variant.unit_value + scaled_unit_value = variant.unit_value / (variant.product.variant_unit_scale || 1) + precised_unit_value = number_with_precision( + scaled_unit_value, + precision: nil, + strip_insignificant_zeros: true + ) + end [precised_unit_value, variant.unit_description].compact_blank.join(" ") end diff --git a/app/views/admin/products_v3/_variant_row.html.haml b/app/views/admin/products_v3/_variant_row.html.haml index a1244e1d47..ad29b77108 100644 --- a/app/views/admin/products_v3/_variant_row.html.haml +++ b/app/views/admin/products_v3/_variant_row.html.haml @@ -18,7 +18,7 @@ = f.hidden_field :unit_value = f.hidden_field :unit_description = f.text_field :unit_value_with_description, - value: unit_value_with_description(variant), 'aria-label': t('admin.products_page.columns.unit_value'), required: true + value: unit_value_with_description(variant), 'aria-label': t('admin.products_page.columns.unit_value') .field = f.label :display_as, t('admin.products_page.columns.display_as') = f.text_field :display_as, placeholder: VariantUnits::OptionValueNamer.new(variant).name diff --git a/spec/helpers/admin/products_helper_spec.rb b/spec/helpers/admin/products_helper_spec.rb index 8a06f12c4b..cdd4df9e2a 100644 --- a/spec/helpers/admin/products_helper_spec.rb +++ b/spec/helpers/admin/products_helper_spec.rb @@ -16,8 +16,8 @@ RSpec.describe Admin::ProductsHelper do context 'when unit_value is nil' do before { variant.update_column(:unit_value, nil) } - it 'defaults to 1 and returns the scaled unit value with the description' do - expect(helper.unit_value_with_description(variant)).to eq('0.001 kg') + it 'returns the description' do + expect(helper.unit_value_with_description(variant)).to eq('kg') end end @@ -40,8 +40,8 @@ RSpec.describe Admin::ProductsHelper do context 'when both unit_value and unit_description are nil' do before { variant.update_columns(unit_description: nil, unit_value: nil) } - it 'returns the default unit value without description' do - expect(helper.unit_value_with_description(variant)).to eq('0.001') + it 'returns empty string' do + expect(helper.unit_value_with_description(variant)).to eq('') end end end diff --git a/spec/system/admin/products_v3/update_spec.rb b/spec/system/admin/products_v3/update_spec.rb index 0b184f4353..ea0bfcb6bf 100644 --- a/spec/system/admin/products_v3/update_spec.rb +++ b/spec/system/admin/products_v3/update_spec.rb @@ -517,6 +517,7 @@ RSpec.describe 'As an enterprise user, I can update my products' do expect(page).to have_field "SKU", with: "n" * 256 expect(page).to have_content "is too long" expect(page.find_button("Unit")).to have_text "" # have_button selector don't work here + expect(page).to have_content "can't be blank" expect(page).to have_field "Price", with: "10.25" # other updated value is retained end