The `registration_path` helper resolves to `/signup` in Spree
controllers due to spree_auth_device > config > routes.rb.
We worked around that in:
https://github.com/openfoodfoundation/openfoodnetwork/pull/3174
Here we add a spec for this so that we can test more easily if we
remove that workaround or detect it's accidental removal.
This separates logic for bang and non-bang versions of
Spree::Order#next.
The different conditions used in both methods (state == "completed" vs
order.completed?) have implications in whether a transition is attempted
or not.
- Make order_with_totals_and_distribution shorter by inheriting from order_with_distributor
- Make completed_order_with_fees more correct by inheriting only from order_with_distributor: this removes the line_item_with_shipment of order_with_totals_and_distribution that was causing an extra shipping adjustment to be kept in the order. This adjustment was being tested in the order controller spec (fixed the explanation comment in the spec which was wrong, there was no enterprise fee in this order)
This keeps the override of Spree's model leaner. More importantly, it
prepares us for using `destroy` instead of `delete`.
In the past, `Product#delete` soft-deleted the product, but didn't
delete the variants. When we use `Product#destroy` to soft-delete the
product, it will also call destroy on the variants. If the model doesn't
allow the deletion of the last variant, it will fail. So when a product
is deleted we want to allow the deletion of all variants. But the user
should not be allowed to delete the last variant. That's why I'm moving
the check to the controller level.
Related commits:
- e6c7acdff3
- 2b47c9145a
- b9f19d5777 (diff-412c5af2ec1ba9f6643f6df5a673c1d4R105)
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.