* 2-0-stable: (121 commits)
Stub default value for other calls to File.exist?
Add specs for error cases in shipments_controller_spec
Move features/admin/reports/enterprise_fee_summaries_spec to xdescribe (will be fixed as part of spree upgrade phase 2)
Add missing translation to fix shipping methods spec
Test tagging polymorphism on a payment method
Workaround Rails inheritance bug in Spree::Gateway
Improve method names in shipments_controller_spec
Move ProductImporter spec to xdescribe until all its specs are green (spree upgrade phase 2)
Make bulk invoices part of spree upgrade phase 2
Make Api::ShipmentsController#create re-use order.shipment if it exists Improve code and add specs to this controller
Decorate spree api shipments controller to scope variants as they are added/removed from shipments
Delete all Spree::Admin::LineItemsController customizations as they are no longer used
Update spec/controllers/spree/orders_controller_spec.rb
Fix broken spec from refactored method
Wait for button to disappear before checking flash
Use flash matcher in shipping method feature specs
Add RSpec matchers for flash messages
Do not expect modal open when checking spinner gone
Fix layout violation in Spree::Ability decorator
Fix description for feature flag example groups
...
Also, removed product.count_on_hand negative test (there's no such attriubte in v2) and added product.on_hand, this should not be returned because a variant is provided
This fixes the following error
```
1) Spree::Admin::InvoicesController#poll when the file is available returns true
Failure/Error: spree_get :poll, invoice_id: invoice_id
#<File (class)> received :exist? with unexpected arguments
expected: ("tmp/invoices/479186263.pdf")
got: ("/home/pau/dev/openfoodnetwork/tmp/cache/paralleltests/3B7/CD1/spree%2Fapp_configuration%2Fredirect_https_to_http")
Please stub a default value first if message might be received with other args as well.
# ./spec/controllers/spree/admin/invoices_controller_spec.rb:28:in `block (4 levels) in <top (required)>'
# -e:1:in `<main>'
```
`paralleltests` also relies on `File.exist?` and so stubbing it breaks
it unless we purposefully allow other calls.
Due to a bug in ActiveRecord we need to load the tagging code in Gateway which
should have inherited it from its parent PaymentMethod.
We have to call it before loading the PaymentMethod decorator because the
tagging code won't load twice within the inheritance chain.
https://github.com/openfoodfoundation/openfoodnetwork/issues/3121