Add top level rake task to run all tests
fix for payments made via /admin

orders placed via /admin were being charged twice.

See these two lines from Spree::Admin::PaymentsController:

    while @order.next; end
    @payment.process! if @order.completed?

For incomplete orders the first line will trigger callbacks that cause
the payment to be charged if the order reaches the "completed" state.
Then the second line will process the payment *again*, resulting in a
double charge.

We can't just remove the second line because orders that are already
complete won't trigger any callbacks from the first line, so these
orders need to have their payments charged manually.

The effect of the bug in our case was that Braintree rejected the second
(duplicate) billing on the payment, and this resulted in the Payment
object being marked as failed when actually it succeeded on the first
attempt. So it appeared from within Spree that a successful payment
was a failed payment.

Fixes #4768
remove reference to shipment.adjustment

shipment.adjustment no longer exists so we can kill this. also wasn't
tested, so no need to change test cases.

My understanding is with the adjustment refactoring we don't need to
deal with the open/close anymore anyway.
Add spec for overriding order token
check_authorization should use params token first

in check_authorization method.
The original code is:
session[:access_token] ||= params[:token]

So once session[:access_token] has been set, I can't reset it unless I close my browser to invalidate session.

The example scenario is below.

If I had a order url with token "http://www.example.com/orders/R176458284/token/383caf1a6dd71df4"
However, I incorrectly copy and paste it to browser and open it:
"http://www.example.com/orders/R176458284/token/383caf1a6dd71"
Now I got a unauthorized 401 page, that's correct because my token is wrong.
But after that, I try the correct link again and it still won't work since session[:access_token] has already been set and won't be set again even I pass a new params[:token]

I believe the correct logic is to check params[:token] first, once params[:token] is available, session[:access_token] should always be overridden by params[:token].

Thanks.

Fixes #4791
Better errors on coupon code failing

Assuming everything that wouldn't activate properly was "already
applied" doesn't work since anything that fails to activate but wasn't
"already applied" shows up to an end-user as "already applied". By
explicitly checking for coupons already applied we can put a more
generic error if activate fails.

Fixes #4781

Conflicts:
	core/app/models/spree/promotion_handler/coupon.rb
Refactor stock transfers variant select JS - Allow user to search for a variant by name or SKU, rather than just returning the first 25 items from a stock location

Closes #4795
update the default email template to include all the proper taxes, shipments and adjustments

Fixes #4798
Update payment risk assessment, and fix broken specs. Fixes #4630
Ensure shipments are also destroyed when the order is emptied.
Re-choose best available promotion when an order changes

Before this change, we could end up with multiple eligible promotions on
the same order. This happened because changing the order (for example,
by adding line items) rechecked the eligibility of promotions,
potentially making multiple ones eligible, but forgot to re-choose the
one best promotion.

This change adds a call to the logic that chooses the best promotion any
time the ```OrderUpdater``` recalculates adjustments.

Adds test to ensure we do not apply multiple line item promotions

Spec and style improvements

Runs two specs twice with different ordering to ensure the order in
which promos are applied doesn't matter. Also cleans up some style
issues and removes an unnecessary stub.

Add specs for taxable items + promos

Correctly limit a promotion to its maximum amount

You should never be able to reduce the price of an adjustable to less
than zero. Thus, we have to guard against a promo applying a discount
larger than the pre-promo amount.

However, as we also do recalculations, we cannot just use the
post-adjustment amount as a limit here. We have to use the
pre-adjustment amount -- i.e. pre-tax, pre-promotions. That is correct
because a) tax gets calculated on the post-promotion amount and b) there
can only be one active promo per line item.

fix for line_item amount instead of price with associated spec

Conflicts:
	core/spec/models/spree/promotion_handler/coupon_spec.rb

CreateItemAdjustments handles only LineItems

Fixes #4675
Fixes #4775
Fixes #4799
Merge branch '2-2-stable' into 2-2-nemo-stable

Conflicts:
	core/spec/models/spree/item_adjustments_spec.rb