Commit Graph

6163 Commits

Author SHA1 Message Date
Luis Ramos
e99f0dc6b7 Rubocop autocorrect and easy rubocop issues 2020-07-28 23:29:49 +01:00
Luis Ramos
d8a96c9d34 Bring order checkout workflow and some of its specs from spree_core 2020-07-28 23:29:49 +01:00
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
73b1b1f172 DRY specs and fix rubocop failures 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
26ed601996 Test the payment controller handles GatewayError
After that, we can TDD a second one that also handles validation errors.
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
Luis Ramos
3dc9548fb3 Merge pull request #5775 from luisramos0/oc_inv_bug
Make OC advanced settings work by permitting the extra parameter and make the OC edit page work with that option activated
2020-07-22 22:23:28 +01:00
Luis Ramos
e445fc33a1 Add spec to cover SQL query issue with OCs where the only products from the coordinator inventory are renderer 2020-07-21 20:48:16 +01:00
Luis Ramos
7ba8c5ace1 Make OC advanced settings work by permitting the extra parameter 2020-07-21 19:44:41 +01:00
Pau Pérez Fabregat
426c536750 Merge pull request #5677 from luisramos0/remove_spree_root_path
Bring ControllerHelpers from Spree and remove spree root path
2020-07-21 16:15:21 +02:00
Luis Ramos
62a3b6b720 Merge pull request #5406 from kristinalim/fix/5300-optimistic_locking_in_stock_items
5300 Avoid race conditions in Spree::StockItem
2020-07-17 22:24:59 +01:00
Maikel Linke
b0ac188430 Make broken spec fail reliably and set it pending
This spec has been broken for a long time, at least eight months. But it
regularly passed because the search filter is applied with a delay and
in that time the content matches. And once the filter is applied, no
products are shown and the negative matchers pass.
2020-07-17 09:28:17 +10:00
Maikel
4e3502cce7 Merge pull request #5766 from mkllnk/5764-fix-pin-payments
5764 Provide credit card brand to Pin Payments
2020-07-16 10:28:18 +10:00
Luis Ramos
2605c4249b Simplify spec, the 2 minutes wait is not necessary anylonger 2020-07-15 14:54:53 +01:00
Luis Ramos
3599cb2047 Make unauthorized in ControllerHelpers::Auth the same as in Spree::Admin::BaseController
It adapts the method in ControllerHelpers::Auth to also use the after_login mechanism.

Ideally we would remove one of the two after_login mechanisms after_login and spree_user_return_to but they might still be in use.
2020-07-15 14:54:53 +01:00
Luis Ramos
8fac1bc9ca 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 2020-07-15 14:54:52 +01:00
Luis Ramos
7f1797de58 Adapt specs to the move of unauthorized route from the spree routes to the main app routes 2020-07-15 14:54:52 +01:00
Luis Ramos
1666ffb191 Remove try_spree_current_user
This can be done because the method is defined in OFN's ApplicationController, so spree_current_user is available in all controllers
2020-07-15 14:53:35 +01: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
Matt-Yorkley
c009fed6be Update StrongParams for Pin Payments 2020-07-15 14:00:19 +02:00
Maikel Linke
25155cab18 Provide credit card brand to Pin Payments
Spree replaced the Ruby code providing the credit card brand with a
jquery plugin providing it on the checkout screen.

I re-added Ruby code because it's easier and more robust than updating
the user interface with new Javascript.
2020-07-15 17:13:46 +10:00
Luis Ramos
9c8318d828 Merge pull request #5613 from luisramos0/calculators
Move all Calculators from spree to OFN and out of the Spree namespace
2020-07-13 15:16:15 +01:00
Luis Ramos
eb4d648a23 Comment this very flaky spec for now 2020-07-10 19:27:31 +01: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
562f397b22 Isolate Spree's specs into their own context
This way we don't mix contexts while merging in our own decorator tests.
2020-07-10 11:46:59 +02:00
Pau Perez
8fbbb0bb64 Bring back our card factory modification
Merging Spree's an our factory didn't really work.
2020-07-10 11:42:56 +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
eafaa97b0e Temporarily skip spec
I'll move on to other easier issues and get back to it when we're in
a better position.
2020-07-10 10:41:44 +02:00
Pau Perez
31d0d4bcae Fix error "no parent is saved"
The exact error is

```
ActiveRecord::RecordNotSaved:
       You cannot call create unless the parent is saved
```

raised from app/models/spree/payment_decorator.rb:29:in `ensure_correct_adjustment'
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
Pau Perez
0ad8dcc2c5 Fix payment log entries specs
The tight coupling between doesn't give other option but to check the
private method is called. The specs successfully stub
`log_entries#create` but for some reason the model instance that gets
evaluated it's not the stubbed one.
2020-07-10 10:41:44 +02:00
Pau Perez
a01f601363 Fix yet another spec 2020-07-10 10:41:44 +02:00
Pau Perez
e1ea5dbcb3 Fix all but the 7 last payment specs 2020-07-10 10:41:44 +02:00
Pau Perez
abacd06f6b Fix credit card instance in specs 2020-07-10 10:41:44 +02:00
Pau Perez
06aa56164f Bring in Payment model from Spree 2020-07-10 10:41:44 +02:00
Maikel
c1d700196b Merge pull request #5739 from Matt-Yorkley/flaky-spec-complex-oc
Flaky spec order_cycles/complex_updating_specific_time
2020-07-10 14:59:59 +10:00
Luis Ramos
cc3361aaac Merge pull request #5659 from dmarcoux/issue-5555
Filter orders on inclusive dates in admin/orders
2020-07-09 20:40:45 +01:00
Luis Ramos
fabddbd1c0 Merge pull request #5746 from coopdevs/remove-specs-dead-code
Remove dead specs helper method
2020-07-08 12:38:24 +01:00
Matt-Yorkley
d78db16abe Merge pull request #5718 from Matt-Yorkley/available-locales-bug
Available locales bug
2020-07-08 12:30:18 +02:00
Matt-Yorkley
e742069959 Refactor UI interactions for opening exchange product tabs in OC edit 2020-07-08 11:11:39 +02:00
Matt-Yorkley
c8254b8338 Adjust exchange_row assertion to use slightly more specific criteria 2020-07-08 11:11:39 +02:00
Matt-Yorkley
be1e39f0cb Ensure next page has loaded before interacting with form elements 2020-07-08 11:11:39 +02:00
Pau Perez
a1e8c8ad03 Remove dead specs helper method
I found it while reviewing
https://github.com/openfoodfoundation/openfoodnetwork/pull/5718#discussion_r451390809.
2020-07-08 10:59:13 +02:00