Background: ActiveMerchant’s BogusGateway class which is usually used in a Test environment, does not have setup_purchase/setup_authorization method which is used in Paypal’s Express Checkout.
This gives an:
undefined method `setup_purchase' for #
When testing for controller actions that interact with ActiveMerchant’s Paypal Express Gateway.
To fix this, according to Skud, you will need to download and unpack the active_merchant and active_utils gems into your local vendor directory.
/webapps/myapp/$ gem unpack /path/to/activemerchant-1.x.x.gem --target vendor/gems /webapps/myapp/$ gem unpack /path/to/active_utils-1.x.x.gem --target vendor/gems
Once that is done, copy paypal_bogus.rb into ../vendor/gems/activemerchant-1.x.x/lib/active_merchant/billing/gateways/paypal_bogus.rb
This is taken from sideshowcoder’s pull request that was rejected by active_merchant’s maintainers.
Next in /webapps/myapp/config/environments/test.rb, replace the following (or whatever variant you have)
::EXPRESS_GATEWAY = ActiveMerchant::Billing::BogusGateway.new
::EXPRESS_GATEWAY = ActiveMerchant::Billing::PaypalBogusGateway.new