Instead of relying on Spree::Order#outstanding_balance we make us of the
result set `balance_value` computed column. So, we ask PostgreSQL to
compute it instead of Ruby and then serialize it from that computed
column. That's a bit faster to compute that way and let's reuse logic.
We hide this new implementation under this features' toggle so it's only
used when enabled. We want hit the old behaviour by default.
I'm not sure why this spec started failing. Fixes:
```
Spree::OrdersController viewing cart when an item is in the cart the page provides the right registration path
Failure/Error: expect(subject.registration_path).to eq registration_path
ActionController::UrlGenerationError:
No route matches {:action=>"index", :controller=>"registration"}
# ./spec/controllers/spree/orders_controller_spec.rb:140:in `block (5 levels) in <top (required)>'
```
DEPRECATION WARNING: `#deliver` is deprecated and will be removed in Rails 5. Use `#deliver_now` to deliver immediately or `#deliver_later` to deliver through Active Job.
For some reason the process is now working correctly, the authorization step succeeds and a redirect link is stored in the payment with state pending. The payment state is correctly left at pending. Here we add a check for the redirect path sent by stripe and fail the authorization if there is one (it means the payment would need an extra auth step only available in the frontoffice now and probably through email to customer at some point in the future). For some reason the flash with the authorization failure message is not showing up for the user
Error:
As an Administrator
I want to be able to manage products in bulk
updating when a filter has been applied
Failure/Error: expect(page.find("#status-message")).to have_content "Changes saved."
expected to find text "Changes saved." in "Saving.."
# ./spec/features/admin/bulk_product_update_spec.rb:451:in `block (2 levels) in <top (required)>'