Commit Graph

26 Commits

Author SHA1 Message Date
Pau Perez
c0f72f89f2 Handle #refund! as we do with #credit! 2020-07-23 20:24:31 +02:00
Pau Perez
0f0a704147 Skip source validation when applying credit
The original payment may not be valid because its credit card may be
expired. Stripe gives this as a valid scenario returning a success and
we should do too.

When creating the credit payment we end up validating all sources in
a chain as follows.

```
Payment being persisted -> source payment -> original credit card.
```

The source payment was valid when created (It would not be persisted
otherwise) but its source card may now be expired, and that's legit.

There was also an issue with the `#invalidate_old_payments` callback. It
was causing the original payment to be validated again and thus the
credit payment failed to be persisted due to the original credit card
being expired. Switching this callback to use `#update_column` skips
validations and so we don't validate the source payment. We only care
about the state there, so it should be fine.
2020-07-23 20:24:31 +02:00
Pau Perez
f2fd426c4a Fix old Spree specs
Given the importance of this code, it doesn't bring me much confidence.
Apparently, this specs where using a non-existent state by mistake and
this went unnoticed because the payment creation was failing silently in
payment/processing.rb.

This unearthed the fact that our `#ensure_correct_adjustment` needs the
order to be persisted to succeed.
2020-07-23 20:24:31 +02:00
Pau Perez
1c026479f5 Replace spec's syntax to RSpec 3 2020-07-23 20:24:31 +02:00
Pau Perez
59da07de66 Handle all errors when dealing with payment event
This basically catches ActiveRecord::RecordInvalid caused by an invalid
credit record, for instance, but also other situations we haven't
forseen.
2020-07-23 20:24:31 +02:00
Pau Perez
6ca6938df4 Merge branch 'master' into bring-in-payment-model
* master: (91 commits)
  Bump ddtrace from 0.37.0 to 0.38.0
  Add spec to cover SQL query issue with OCs where the only products from the coordinator inventory are renderer
  Remove unnecessary order statement, the relation will only be used for counting products
  Move select out of scope visible_for because it is breaking exchange_product queries and it's just not needed there. The only other use of this product's scope visible_for is the enterprise serializer so we add the select to it.
  Make OC advanced settings work by permitting the extra parameter
  Remove conflicting and duplicate route
  Bump bugsnag from 6.13.1 to 6.14.0
  Make charges update method update the first pending payment
  Move require_login_then_redirect_to to the only place where it is called
  Make broken spec fail reliably and set it pending
  Updating translations for config/locales/en_GB.yml
  Update all locales with the latest Transifex translations
  Doc defensive coding needed by pin payments
  Make method a little simple by extracting method
  Simplify spec, the 2 minutes wait is not necessary anylonger
  Make unauthorized in ControllerHelpers::Auth the same as in Spree::Admin::BaseController
  Move unauthorized view to HomeController only, all other calls to unauthorized will go through Auth which will redirect to the home controller IF the user is logged in or to login if user is not logged in
  Adapt specs to the move of unauthorized route from the spree routes to the main app routes
  Delete spree_user_signup which is from spree promotions code that we dont use
  Remove try_spree_current_user
  ...
2020-07-23 20:20:43 +02:00
Pau Perez
70afcee3fc Fix Spree's spec clashing with a customization
`#save_requested_by_customer` is an accessor we added and thus, the
Spree's spec didn't consider.
2020-07-15 14:18:36 +02:00
Pau Perez
683794636b Rename spec file 2020-07-10 11:57:36 +02:00
Pau Perez
2f4648342f Merge decorator specs with Spree's ones
They are now isolated from each other.
2020-07-10 11:50:20 +02:00
Pau Perez
3fb6193098 Move adjustments logic from decorator into model 2020-07-10 10:41:44 +02:00
Pau Perez
861726200c Move localize_number from decorator to model 2020-07-10 10:41:44 +02:00
Pau Perez
48910aeb77 Move #refund! to the processing.rb 2020-07-10 10:41:44 +02:00
Pau Perez
9935df9f2d Move Pin payment method from decorator into model 2020-07-10 10:41:44 +02:00
Luis Ramos
f62546254f Define DefaultTax calculator outside of spree namespace the tax_rate to be used by the app and make spree specs use calculators outside the spree namespace 2020-07-07 17:26:24 +01:00
Luis Ramos
5e8438c446 Move all calculators outside the spree namespace 2020-07-07 17:26:23 +01:00
luisramos0
86b0d71c7e Result of rubocop auto-correct and rebuilding rubocop_manual_todo 2019-05-28 12:57:29 +01:00
luisramos0
04801e5c2e Run transpec in spec/models 2019-05-09 22:25:29 +01:00
Kristina Lim
dfc8cc0f9e Add failing test for calculation of payment fee 2019-02-28 12:17:44 +11:00
Pierre de Lacroix
f67a8c1f2d Add tests 2017-12-01 13:37:24 +11:00
Rob Harrington
a09a54e4cb Set transaction fee adjustments to ineligible if payment is invalid or failed 2017-09-23 15:15:06 +10:00
Rob Harrington
f3322dd82e Transfer responsibility for checking for orphaned PayPal payments from Payment model to Spree::PayPalController 2017-09-23 14:26:03 +10:00
Rob Harrington
f4b1c5de9c Remove orphaned PayPalExpress payments when processing actual PayPalExpress payment
Fixes both #1074 and #1837
2017-09-21 12:11:39 +10:00
Rohan Mitchell
97e49c2bdb Replace 'array.sort.should == expected.sort' pattern with match_array 2015-05-28 10:46:08 +10:00
Rohan Mitchell
b498c28632 Payments can be refunded 2015-04-30 15:49:48 +10:00
Rohan Mitchell
8184a7c7b2 Pin payments can't void or credit, but they can refund 2015-04-30 15:49:48 +10:00
Rohan Mitchell
b09ae550c8 Add spec for payment actions 2015-04-30 15:49:48 +10:00