```
Spree::Admin::PaymentMethodsController#create and #update can create a payment method of a valid type
Failure/Error: expect(response).to redirect_to spree.edit_admin_payment_method_path(assigns(:payment_method))
NoMethodError:
assigns has been extracted to a gem. To continue using it,
add `gem 'rails-controller-testing'` to your Gemfile.
# ./spec/controllers/spree/admin/payment_methods_controller_spec.rb:41:in `block (3 levels) in <module:Spree>'
```
The removed test here was checking for adjustments that have an amount of zero and are eligible. If the amount is zero, it will already be marked as ineligible.
This new class lets us [Branch by
abstraction](https://www.martinfowler.com/bliki/BranchByAbstraction.html)
by encapsulating an order's balance. As a result, that's the only place
where we need to check the feature toggle, instead of every place where
`#outstanding_balance` is called (quite some). That would be very hard
to review and it'd be more likely to introduce bugs.
What I like about this is that we also managed to group together the
data and logic that we had spread in a few places and have it nicely
encapsulated. So, where we had a number, we'll now have an object.
Once we fully change all `#outstanding_balance` consumers to use this
new abstraction we'll be able to remove the methods this class replaces.
These are: `Spree::Order#outstanding_balance?`,
`Spree::Order#display_oustanding_balance` and
`OrderHelper.outstanding_balance_label`.
This is just the first step. I'll follow this up with a PR per
page/mailer/whatever where we use the balance to replace it with an
instance of `OrderBalance`. That is, splitting up what I explored in
https://github.com/openfoodfoundation/openfoodnetwork/pull/6959 but in
very small and manageable pieces.
The user should need to tick only one box to agree.
We don't remember yet if someone agreed to the platform TOS and
therefore the box is always unticked to start with.
Remembering the agreement is another issue:
https://github.com/openfoodfoundation/openfoodnetwork/issues/6328
Checking for `false` instead of a falsey value allows us to distinguish
from an unset variable and disable the checkout button only when a
checkbox is present and unticked.
This was working with the seller's terms but now it includes the
platform's terms as well.
Pending:
- Simplify Ansible code
- Unify the two terms checkboxes if both required
The checkout page shows a checkbox to accept the platform's Terms of
Service. Ticking the box doesn't have any effect yet but at least people
are aware and are presented with a link to the terms.
This shows things like:
```
Top 10 slowest examples (32.34 seconds, 87.1% of total time):
As a site administrator
I want to configure the site content
fills in a setting shows the result on the home page
19.12 seconds ./spec/features/admin/configuration/content_spec.rb:17
States creating and editing states should allow an admin to edit existing states
7.36 seconds ./spec/features/admin/configuration/states_spec.rb:40
Tax Rates while editing can be deleted
1.22 seconds ./spec/features/admin/configuration/tax_rates_spec.rb:58
States creating and editing states should allow an admin to create states for non default countries
1.16 seconds ./spec/features/admin/configuration/states_spec.rb:52
States creating and editing states should show validation errors
1 seconds ./spec/features/admin/configuration/states_spec.rb:68
Zones edit existing zone
0.90067 seconds ./spec/features/admin/configuration/zones_spec.rb:42
```
and
```
Top 8 slowest example groups:
As a site administrator
I want to configure the site content
6.64 seconds average (19.93 seconds / 3 examples) ./spec/features/admin/configuration/content_spec.rb:5
States
2.42 seconds average (9.68 seconds / 4 examples) ./spec/features/admin/configuration/states_spec.rb:5
Tax Rates
0.51138 seconds average (2.56 seconds / 5 examples) ./spec/features/admin/configuration/tax_rates_spec.rb:4
Zones
0.49488 seconds average (1.48 seconds / 3 examples) ./spec/features/admin/configuration/zones_spec.rb:5
Tax Categories
0.32438 seconds average (1.3 seconds / 4 examples) ./spec/features/admin/configuration/tax_categories_spec.rb:5
Taxonomies
0.30578 seconds average (1.22 seconds / 4 examples) ./spec/features/admin/configuration/taxonomies_spec.rb:5
General Settings
0.28868 seconds average (0.57737 seconds / 2 examples) ./spec/features/admin/configuration/general_settings_spec.rb:5
Mail Methods
0.26415 seconds average (0.26415 seconds / 1 example) ./spec/features/admin/configuration/mail_methods_spec.rb:5
Finished in 37.11 seconds (files took 6.27 seconds to load)
26 examples, 0 failures
```
which is essential to speed up our test suite.