Add changelog entry for #3946
Persist address ids on UserAddress module

Otherwise addresses would not be associated with the user at all
Introduce channel attr to Order model

Could be set when importing orders from other storefronts
Make api helper attributes class attributes

To make it easier to append more attributes. Other applications /
extensions can append their own stuff without having to override
methods. e.g.

        Spree::Api::ApiHelpers.order_attributes.push :locked_at
Persist address ids on UserAddress module

Otherwise addresses would not be associated with the user at all
Stub calculator to return a non-zero value in create_item_adjustments test
Promotion calculator must have something to discount within cart_spec

Otherwise no adjustment will be applied
Fix issue where CreateItemAdjustments action was not creating more than one adjustment

This was caught by the tests(!). This is why you good test coverage is vitally important.
Stub item_total and ship_total on order in coupon_spec so that promo adjustment 'wins'
[api] Cache products/show view

This can reduce the time it takes for a request to /products from > 1 second to < 75ms

Before: 1048.7ms
After: 65ms

If a product property, option value, option type, image or variant of a product changes then the product will be touched which will invalidate the cache.
Use templates for option_values + option_types in products/show to DRY up things