mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-02-11 23:17:48 +00:00
Merge pull request #10539 from filipefurtad0/spec_for_enterprise_fee_selection_tax_inherit
Adds a spec to check enterprise fees creation
This commit is contained in:
@@ -20,14 +20,11 @@ describe '
|
||||
visit spree.edit_admin_general_settings_path
|
||||
click_link 'Enterprise Fees'
|
||||
|
||||
expect(page).to have_select "sets_enterprise_fee_set_collection_attributes_0_enterprise_id"
|
||||
expect(page).to have_select "sets_enterprise_fee_set_collection_attributes_0_fee_type",
|
||||
selected: 'Packing fee'
|
||||
expect(page).to have_select "#{prefix}_enterprise_id"
|
||||
expect(page).to have_select "#{prefix}_fee_type", selected: 'Packing fee'
|
||||
expect(page).to have_selector "input[value='$0.50 / kg']"
|
||||
expect(page).to have_select "sets_enterprise_fee_set_collection_attributes_0_tax_category_id",
|
||||
selected: 'GST'
|
||||
expect(page).to have_select "sets_enterprise_fee_set_collection_attributes_0_calculator_type",
|
||||
selected: 'Flat Rate (per item)'
|
||||
expect(page).to have_select "#{prefix}_tax_category_id", selected: 'GST'
|
||||
expect(page).to have_select "#{prefix}_calculator_type", selected: 'Flat Rate (per item)'
|
||||
expect(page).to have_selector "input[value='#{amount}']"
|
||||
end
|
||||
|
||||
@@ -40,11 +37,11 @@ describe '
|
||||
visit admin_enterprise_fees_path
|
||||
|
||||
# And I fill in the fields for a new enterprise fee and click update
|
||||
select 'Feedme', from: 'sets_enterprise_fee_set_collection_attributes_0_enterprise_id'
|
||||
select 'Admin', from: 'sets_enterprise_fee_set_collection_attributes_0_fee_type'
|
||||
fill_in 'sets_enterprise_fee_set_collection_attributes_0_name', with: 'Hello!'
|
||||
select 'GST', from: 'sets_enterprise_fee_set_collection_attributes_0_tax_category_id'
|
||||
select 'Flat Percent', from: 'sets_enterprise_fee_set_collection_attributes_0_calculator_type'
|
||||
select 'Feedme', from: "#{prefix}_enterprise_id"
|
||||
select 'Admin', from: "#{prefix}_fee_type"
|
||||
fill_in "#{prefix}_name", with: 'Hello!'
|
||||
select 'GST', from: "#{prefix}_tax_category_id"
|
||||
select 'Flat Percent', from: "#{prefix}_calculator_type"
|
||||
click_button 'Update'
|
||||
|
||||
# Then I should see my fee and fields for the calculator
|
||||
@@ -52,12 +49,12 @@ describe '
|
||||
expect(page).to have_selector "input[value='Hello!']"
|
||||
|
||||
# When I fill in the calculator fields and click update
|
||||
fill_in 'sets_enterprise_fee_set_collection_attributes_0_calculator_attributes'\
|
||||
'_preferred_flat_percent', with: '12.34'
|
||||
fill_in "#{prefix}_calculator_attributes"\
|
||||
"_preferred_flat_percent", with: '12.34'
|
||||
click_button 'Update'
|
||||
|
||||
# Then I should see the correct values in my calculator fields
|
||||
expect(page).to have_selector("#sets_enterprise_fee_set_collection_attributes_0_calculator"\
|
||||
expect(page).to have_selector("##{prefix}_calculator"\
|
||||
"_attributes_preferred_flat_percent[value='12.34']")
|
||||
end
|
||||
|
||||
@@ -70,11 +67,11 @@ describe '
|
||||
visit admin_enterprise_fees_path
|
||||
|
||||
# And I fill in the fields for a new enterprise fee and click update
|
||||
select 'Feedme', from: 'sets_enterprise_fee_set_collection_attributes_0_enterprise_id'
|
||||
select 'Admin', from: 'sets_enterprise_fee_set_collection_attributes_0_fee_type'
|
||||
fill_in 'sets_enterprise_fee_set_collection_attributes_0_name', with: 'Hello!'
|
||||
select 'GST', from: 'sets_enterprise_fee_set_collection_attributes_0_tax_category_id'
|
||||
select 'Flat Percent', from: 'sets_enterprise_fee_set_collection_attributes_0_calculator_type'
|
||||
select 'Feedme', from: "#{prefix}_enterprise_id"
|
||||
select 'Admin', from: "#{prefix}_fee_type"
|
||||
fill_in "#{prefix}_name", with: 'Hello!'
|
||||
select 'GST', from: "#{prefix}_tax_category_id"
|
||||
select 'Flat Percent', from: "#{prefix}_calculator_type"
|
||||
click_button 'Update'
|
||||
|
||||
# Then I should see my fee and fields for the calculator
|
||||
@@ -82,10 +79,7 @@ describe '
|
||||
expect(page).to have_selector "input[value='Hello!']"
|
||||
|
||||
# When I fill in the calculator fields and click update
|
||||
fill_in(
|
||||
'sets_enterprise_fee_set_collection_attributes_0_calculator_attributes_'\
|
||||
'preferred_flat_percent', with: "\'20.0'"
|
||||
)
|
||||
fill_in("#{prefix}_calculator_attributes_preferred_flat_percent", with: "\'20.0'")
|
||||
click_button 'Update'
|
||||
|
||||
# Then I should see the flash error message
|
||||
@@ -102,24 +96,21 @@ describe '
|
||||
login_as_admin
|
||||
visit admin_enterprise_fees_path
|
||||
# And I update the fields for the enterprise fee and click update
|
||||
select 'Foo', from: 'sets_enterprise_fee_set_collection_attributes_0_enterprise_id'
|
||||
select 'Admin', from: 'sets_enterprise_fee_set_collection_attributes_0_fee_type'
|
||||
fill_in 'sets_enterprise_fee_set_collection_attributes_0_name', with: 'Greetings!'
|
||||
select 'Foo', from: "#{prefix}_enterprise_id"
|
||||
select 'Admin', from: "#{prefix}_fee_type"
|
||||
fill_in "#{prefix}_name", with: 'Greetings!'
|
||||
select 'Inherit From Product',
|
||||
from: 'sets_enterprise_fee_set_collection_attributes_0_tax_category_id'
|
||||
select 'Flat Percent', from: 'sets_enterprise_fee_set_collection_attributes_0_calculator_type'
|
||||
from: "#{prefix}_tax_category_id"
|
||||
select 'Flat Percent', from: "#{prefix}_calculator_type"
|
||||
click_button 'Update'
|
||||
end
|
||||
|
||||
it "handle the default cases" do
|
||||
# Then I should see the updated fields for my fee
|
||||
expect(page).to have_select "sets_enterprise_fee_set_collection_attributes_0_enterprise_id",
|
||||
selected: 'Foo'
|
||||
expect(page).to have_select "sets_enterprise_fee_set_collection_attributes_0_fee_type",
|
||||
selected: 'Admin fee'
|
||||
expect(page).to have_select "#{prefix}_enterprise_id", selected: 'Foo'
|
||||
expect(page).to have_select "#{prefix}_fee_type", selected: 'Admin fee'
|
||||
expect(page).to have_selector "input[value='Greetings!']"
|
||||
expect(page).to have_select 'sets_enterprise_fee_set_collection_attributes_0_tax_category_id',
|
||||
selected: 'Inherit From Product'
|
||||
expect(page).to have_select "#{prefix}_tax_category_id", selected: 'Inherit From Product'
|
||||
expect(page).to have_selector "option[selected]", text: 'Flat Percent (per item)'
|
||||
|
||||
fee.reload
|
||||
@@ -135,11 +126,11 @@ describe '
|
||||
|
||||
it "handle when updating calculator type for Weight to Flat Rate" do
|
||||
select 'Weight (per kg or lb)',
|
||||
from: 'sets_enterprise_fee_set_collection_attributes_0_calculator_type'
|
||||
from: "#{prefix}_calculator_type"
|
||||
click_button 'Update'
|
||||
|
||||
select 'Flat Rate (per item)',
|
||||
from: 'sets_enterprise_fee_set_collection_attributes_0_calculator_type'
|
||||
from: "#{prefix}_calculator_type"
|
||||
click_button 'Update'
|
||||
|
||||
expect(fee.reload.calculator_type).to eq("Calculator::PerItem")
|
||||
@@ -148,7 +139,7 @@ describe '
|
||||
it 'shows error flash when updating fee amount with invalid values' do
|
||||
# When I fill in the calculator fields and click update
|
||||
fill_in(
|
||||
'sets_enterprise_fee_set_collection_attributes_0_calculator_attributes_'\
|
||||
"#{prefix}_calculator_attributes_"\
|
||||
'preferred_flat_percent', with: "\'20.0'"
|
||||
)
|
||||
click_button 'Update'
|
||||
@@ -157,6 +148,19 @@ describe '
|
||||
expect(flash_message)
|
||||
.to eq('Invalid input. Please use only numbers. For example: 10, 5.5, -20')
|
||||
end
|
||||
|
||||
it "does not allow editing to an invalid combination" do
|
||||
|
||||
# starting with a valid tax category / calculator combination
|
||||
expect(page).to have_select "#{prefix}_tax_category_id", selected: 'Inherit From Product'
|
||||
expect(page).to have_selector "option[selected]", text: 'Flat Percent (per item)'
|
||||
|
||||
# editing to an invalid combination
|
||||
select 'Flat Rate (per order)',
|
||||
from: "#{prefix}_calculator_type"
|
||||
expect{ click_button 'Update' }.to_not change { fee.reload.calculator_type }
|
||||
expect(page).to have_content "Inheriting the tax categeory requires a per-item calculator."
|
||||
end
|
||||
end
|
||||
|
||||
it "deleting an enterprise fee" do
|
||||
@@ -191,28 +195,57 @@ describe '
|
||||
login_as enterprise_user
|
||||
end
|
||||
|
||||
it "creates enterprise fees" do
|
||||
visit edit_admin_enterprise_path(distributor1)
|
||||
within(".side_menu") { click_link 'Enterprise Fees' }
|
||||
click_link "Create One Now"
|
||||
context "creating an enterprise fee" do
|
||||
before do
|
||||
visit edit_admin_enterprise_path(distributor1)
|
||||
within(".side_menu") { click_link 'Enterprise Fees' }
|
||||
click_link "Create One Now"
|
||||
end
|
||||
|
||||
select distributor1.name,
|
||||
from: 'sets_enterprise_fee_set_collection_attributes_0_enterprise_id'
|
||||
select 'Packing', from: 'sets_enterprise_fee_set_collection_attributes_0_fee_type'
|
||||
fill_in 'sets_enterprise_fee_set_collection_attributes_0_name', with: 'foo'
|
||||
select 'GST', from: 'sets_enterprise_fee_set_collection_attributes_0_tax_category_id'
|
||||
select 'Flat Percent', from: 'sets_enterprise_fee_set_collection_attributes_0_calculator_type'
|
||||
click_button 'Update'
|
||||
shared_examples "setting it up" do |tax_category, calculator, flash_message, fee_count|
|
||||
context "as #{tax_category}, with a #{calculator} calculator" do
|
||||
it "triggers the expected message" do
|
||||
select distributor1.name, from: "#{prefix}_enterprise_id"
|
||||
select 'Packing', from: "#{prefix}_fee_type"
|
||||
fill_in "#{prefix}_name", with: 'foo'
|
||||
select tax_category, from: "#{prefix}_tax_category_id"
|
||||
select calculator, from: "#{prefix}_calculator_type"
|
||||
click_button 'Update'
|
||||
|
||||
expect(flash_message).to eq('Your enterprise fees have been updated.')
|
||||
# The correct flash message should be displayed
|
||||
expect(page).to have_content(flash_message)
|
||||
|
||||
# After saving, we should be redirected to the fees for our chosen enterprise
|
||||
expect(page)
|
||||
.not_to have_select 'sets_enterprise_fee_set_collection_attributes_1_enterprise_id',
|
||||
selected: 'Second Distributor'
|
||||
# After saving, we should be redirected to the fees for our chosen enterprise
|
||||
expect(page).
|
||||
not_to have_select 'sets_enterprise_fee_set_collection_attributes_1_enterprise_id',
|
||||
selected: 'Second Distributor'
|
||||
|
||||
# A new enterprise fee is created
|
||||
expect(EnterpriseFee.count).to eq(fee_count)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
enterprise_fee = EnterpriseFee.find_by name: 'foo'
|
||||
expect(enterprise_fee.enterprise).to eq(distributor1)
|
||||
context "an error message is displayed" do
|
||||
message = 'Inheriting the tax categeory requires a per-item calculator.'
|
||||
it_behaves_like "setting it up", 'Inherit From Product',
|
||||
'Flat Rate (per order)', message, 0
|
||||
end
|
||||
|
||||
context "an success message is displayed" do
|
||||
message = 'Your enterprise fees have been updated.'
|
||||
it_behaves_like "setting it up", 'Inherit From Product', 'Flat Rate (per item)', message, 1
|
||||
end
|
||||
|
||||
context "an success message is displayed" do
|
||||
message = 'Your enterprise fees have been updated.'
|
||||
it_behaves_like "setting it up", 'GST', 'Flat Rate (per order)', message, 1
|
||||
end
|
||||
|
||||
context "an success message is displayed" do
|
||||
message = 'Your enterprise fees have been updated.'
|
||||
it_behaves_like "setting it up", 'GST', 'Flat Rate (per item)', message, 1
|
||||
end
|
||||
end
|
||||
|
||||
it "shows me only enterprise fees for the enterprise I select" do
|
||||
@@ -222,18 +255,15 @@ describe '
|
||||
visit edit_admin_enterprise_path(distributor1)
|
||||
within(".side_menu") { click_link 'Enterprise Fees' }
|
||||
click_link "Manage Enterprise Fees"
|
||||
expect(page).to have_field 'sets_enterprise_fee_set_collection_attributes_0_name',
|
||||
with: 'One'
|
||||
expect(page).to have_field "#{prefix}_name", with: 'One'
|
||||
expect(page).not_to have_field 'sets_enterprise_fee_set_collection_attributes_1_name',
|
||||
with: 'Two'
|
||||
|
||||
visit edit_admin_enterprise_path(distributor2)
|
||||
within(".side_menu") { click_link 'Enterprise Fees' }
|
||||
click_link "Manage Enterprise Fees"
|
||||
expect(page).not_to have_field 'sets_enterprise_fee_set_collection_attributes_0_name',
|
||||
with: 'One'
|
||||
expect(page).to have_field 'sets_enterprise_fee_set_collection_attributes_0_name',
|
||||
with: 'Two'
|
||||
expect(page).not_to have_field "#{prefix}_name", with: 'One'
|
||||
expect(page).to have_field "#{prefix}_name", with: 'Two'
|
||||
end
|
||||
|
||||
it "only allows me to select enterprises I have access to" do
|
||||
@@ -244,9 +274,13 @@ describe '
|
||||
visit edit_admin_enterprise_path(distributor2)
|
||||
within(".side_menu") { click_link 'Enterprise Fees' }
|
||||
click_link "Manage Enterprise Fees"
|
||||
expect(page).to have_select('sets_enterprise_fee_set_collection_attributes_0_enterprise_id',
|
||||
expect(page).to have_select("#{prefix}_enterprise_id",
|
||||
selected: 'Second Distributor',
|
||||
options: ['First Distributor', 'Second Distributor'])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def prefix
|
||||
'sets_enterprise_fee_set_collection_attributes_0'
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user