The previous mechanism didn't seem to work and newer Rails versions have
an easier config for this now.
Also fixing all i18n errors which were now failing specs.
This will let us branch by abstraction. All existing calls to
`#outstanding_balance` will go through `OrderBalance` hence, will
check the feature toggle.
Note that by default, `OrderBalance` will end up calling
`#old_outstanding_balance`. As the name states, that's exactly what
`#outstanding_balance` was so far. This means no consumers will see any
change in behavior. We just added on item in the call stack (sort of).
If these are unit tests, it's much easier to find a `describe` with the
method under test and putting all the tests exercising that method
together.
It turns out that `#update_payment_state` is by far the method that we
test the most which leads me to think:
a) this class might be doing too many things.
b) other methods might not be that well covered.
It's a code smell to have a boolean control argument.
`Permissions::Order` goes too far and assumes we want to filter out
canceled orders when using report's search params and this is not the
case.
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.
OrderManagement::Stock::Packer builds a package with all the items
Failure/Error: expect(package.weight).to be_positive
expected `0.0 (#<BigDecimal:7f156c99fda8,'0.0',9(18)>).positive?` to be truthy, got false
# ./engines/order_management/spec/services/order_management/stock/packer_spec.rb:19:in `block (2 levels) in <module:Stock>'
The #table_items methos seems to return line items in different order sometimes making this test a bit flaky. The test passed on Semaphore previously and is passing in development. I don't think the order matters so using :match_array instead of :eq.
Also add tests for each of the different report types. I didn't make these JavaScript tests because not sure that is necessary and they would be slower.
Before the date and distributor filters would have no effect. This is because the BulkCoopReport is still generated using an older style method, and isn't generated using the newer method like in the EnterpriseFeeSummaryReport. This older style report expects to receive a :q parameter but it actually received the newer style :report parameter so the filters were not being applied.
This keeps the newer style report params but converts them, after they are authorised as safe, into the older style in the controller.