- 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.
The original setup of the order calls:
create(:simple_order_cycle)
Which picks an arbitrary distributor as coordinator:
coordinator { Enterprise.is_distributor.first || ... }
There is a chance that any of the existing distributor enterprises
becomes coordinator, causing a test to intermittently fail.
This commit makes the relationship between the reference enterprises and
the order consistent.
We don't know exactly if all adjustments are closed in all
circumstances, so it's better to be conservative until we figure out.
Chances are that non-completed orders have them open.