We don't care about the conversion from hash to JSON (that's an
ActiveModel::Serializer responsibility that is thoroughly tested) but
our logic so we can skip that step which only slows down tests.
It consistently reduced ~1.5s on my machine but it's still too slow to wait
~8.5s to get feedback from them.
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.
Prior to this change, there was no way of knowing how much was owed (or
in need of refunding) at a glance for each order on the orders index page,
this information was only available by clicking through to an order
payment page
This change adds the outstanding balance for each order
The PropertySerializer contains :id, :name and :presentation attributes
which leads to JSON objects like `{"id": 1, "name": "foo",
"presentation": "foo"}`. Because of this, we don't care about object
identity, just about their presentation attribute.
By not having to treat producer properties differently we can filter and
fetch all properties from DB without having to process it with Ruby and
with a single query.
In a previous commit we removed the now obsolete scope
Product.not_deleted. Calling Enterprise#supplied_products without
any scope does not issue a new SQL query but returns the products that
were present when the enterprise was loaded.
The fixed spec creates more products after loading the enterprise. So
the enterprise needs to be reloaded or the new products are not visible.
See this commit for more details: 18e5b98f5c (diff-b0846898827183f530c113ad7b83b8ea)
Also:
- remove shipping method restriction on calculators to inherit from Spree::Shipping::ShippingCalculator so that OFN customized calculators keep working
- add shipping method serializer spec to test serialization of all shipping methods configured