Compare commits

...

11 Commits

Author SHA1 Message Date
Maikel
4f7059d0c7 Merge pull request #10838 from filipefurtad0/fix_negative_adjustment_error
Adds minus sign to validation criteria
2023-05-15 11:07:45 +10:00
Gaetan Craig-Riou
d715b6b3bb Spec fix LocalisedNumber validation to allow negative number
As part of this PR https://github.com/openfoodfoundation/openfoodnetwork/pull/10329
LocalisedNumber validation was tightened, but that means negative number
were not valid anymore.

This commit has been cherry-picked after this fix has already been
applied. Now we just change the order of characters in the regex because
humans are used to reading the minus at the beginning of the number. But
this change doesn't change the logic at all.
2023-05-15 10:55:59 +10:00
Maikel
5045e26792 Merge pull request #10834 from mkllnk/variant-spec
Improve readability and performance of variant spec
2023-05-15 09:48:06 +10:00
filipefurtad0
0442f2da7e Fixes spec warning
An example was being ignored due to legacy syntax - WARNING: ignoring the provided expectation message argument since it is not a string or a proc.
2023-05-14 23:02:44 +01:00
filipefurtad0
e7ab839fb3 Adds minus sign as validation criteria
Removes pending from passing examples
2023-05-14 23:02:44 +01:00
filipefurtad0
596b318778 Adds spec on negative adjustment
with different localization settings

Using shared examples and setting failing

ones as pending
2023-05-14 23:02:00 +01:00
Maikel Linke
87c4c5373b Spec more variant naming with realistic data 2023-05-12 14:10:54 +10:00
Maikel Linke
f70607259a Spec Variant#product_and_full_name with real data
Mocking skips a lot of code execution which we want to test as well.
2023-05-12 13:34:34 +10:00
Maikel Linke
ce180caad9 Test with in-memory data when possible
This should speed up specs but I observed only one second less run time.
2023-05-12 13:21:58 +10:00
Maikel Linke
01be934caf Reduce spec run time by not creating unused subject
The `variant` instance isn't used in all specs and doesn't need to be
created every time. This reduced run time from 1min5sec to 43sec on my
machine.
2023-05-12 13:21:58 +10:00
Maikel Linke
54c6559b97 Move Spree::Variant spec out of Spree module
I also discovered that some specs were just in the Spee module and not
within the `describe Variant` block. I moved them inside the block.
2023-05-12 13:21:19 +10:00
4 changed files with 751 additions and 684 deletions

View File

@@ -45,7 +45,7 @@ module Spree
def self.valid_localizable_number?(number)
return true unless number.is_a?(String) || number.respond_to?(:to_d)
# Invalid if only two digits between dividers, or if any non-number characters
return false if number.to_s =~ /[.,]\d{2}[.,]/ || number.to_s =~ /[^0-9,.]+/
return false if number.to_s =~ /[.,]\d{2}[.,]/ || number.to_s =~ /[^-0-9,.]+/
true
end

View File

@@ -58,6 +58,12 @@ describe Spree::LocalizedNumber do
it "returns true" do
expect(described_class.valid_localizable_number?(1599.99)).to eql true
end
context "with a negative number" do
it "returns true" do
expect(described_class.valid_localizable_number?(-1599.99)).to eql true
end
end
end
context "with letters" do

File diff suppressed because it is too large Load Diff

View File

@@ -23,6 +23,10 @@ describe '
zone: create(:zone_with_member), tax_category: tax_category)
}
let!(:tax_category_included) { create(:tax_category, name: 'TVA 20%', is_default: true) }
let!(:default_tax_zone) { create(:zone, default_tax: true) }
let!(:tax_rate2) { create(:tax_rate, name: "TVA 20%", amount: 0.2, zone: default_tax_zone, included_in_price: true, tax_category: tax_category_included, calculator: Calculator::DefaultTax.new ) }
before do
order.finalize!
create(:check_payment, order: order, amount: order.total)
@@ -30,22 +34,78 @@ describe '
visit spree.admin_orders_path
end
it "adding taxed adjustments to an order" do
# When I go to the adjustments page for the order
page.find('td.actions a.icon-edit').click
click_link 'Adjustments'
shared_examples "when the enable_localized_number preference" do |adjustment_label, adjustment_amount, tax_category, tax, tax_total|
it "creates the adjustment and calculates taxes" do
# When I go to the adjustments page for the order
page.find('td.actions a.icon-edit').click
click_link 'Adjustments'
# And I create a new adjustment with tax
click_link 'New Adjustment'
fill_in 'adjustment_amount', with: 110
fill_in 'adjustment_label', with: 'Late fee'
select 'GST', from: 'adjustment_tax_category_id'
click_button 'Continue'
# And I create a new adjustment with tax
click_link 'New Adjustment'
fill_in 'adjustment_amount', with: adjustment_amount
fill_in 'adjustment_label', with: adjustment_label
select tax_category.to_s, from: 'adjustment_tax_category_id'
click_button 'Continue'
# Then I should see the adjustment, with the correct tax
expect(page).to have_selector 'td.label', text: 'Late fee'
expect(page).to have_selector 'td.amount', text: '110.00'
expect(page).to have_selector 'td.tax', text: '10.00'
# Then I should see the adjustment, with tax included in the amount
expect(page).to have_selector 'td.label', text: adjustment_label.to_s
expect(page).to have_selector 'td.amount', text: adjustment_amount.to_s
expect(page).to have_selector 'td.tax-category', text: tax_category.to_s
expect(page).to have_selector 'td.tax', text: tax.to_s
expect(page).to have_selector 'td.total', text: tax_total.to_s
end
end
context "is active" do
before do
allow(Spree::Config).to receive(:enable_localized_number?).and_return(true)
end
context "included tax" do
context "adding negative, taxed adjustments to an order" do
it_behaves_like "when the enable_localized_number preference", "Discount", "-2", "TVA 20%", "$0.33", "$-1.67"
end
context "adding positive, taxed adjustments to an order" do
it_behaves_like "when the enable_localized_number preference", "Late fee", "100", "TVA 20%", "$-16.67", "$83.33"
end
end
context "added tax" do
context "adding negative, taxed adjustments to an order" do
it_behaves_like "when the enable_localized_number preference", "Discount", "-2", "GST", "$10.00", "$8.00"
end
context "adding positive, taxed adjustments to an order" do
it_behaves_like "when the enable_localized_number preference", "Late fee", "110", "GST", "$10.00", "$120"
end
end
end
context "is not active" do
before do
allow(Spree::Config).to receive(:enable_localized_number?).and_return(false)
end
context "included tax" do
context "adding negative, taxed adjustments to an order" do
it_behaves_like "when the enable_localized_number preference", "Discount", "-2", "TVA 20%", "$0.33", "$-1.67"
end
context "adding positive, taxed adjustments to an order" do
it_behaves_like "when the enable_localized_number preference", "Late fee", "100", "TVA 20%", "$-16.67", "$83.33"
end
end
context "added tax" do
context "adding negative, taxed adjustments to an order" do
it_behaves_like "when the enable_localized_number preference", "Discount", "-2", "GST", "$10.00", "$8.00"
end
context "adding positive, taxed adjustments to an order" do
it_behaves_like "when the enable_localized_number preference", "Late fee", "110", "GST", "$10.00", "$120"
end
end
end
it "modifying taxed adjustments on an order" do
@@ -105,8 +165,8 @@ describe '
it "displays adjustments" do
click_link 'Adjustments'
expect(page).to_not have_selector('tr a.icon-edit')
expect(page).to_not have_selector('a.icon-plus'), text: 'New Adjustment'
expect(page).to_not have_selector 'tr a.icon-edit'
expect(page).to_not have_selector 'a.icon-plus', text: 'New Adjustment'
end
end
end