Pau Perez
46d997406a
Filter out cart orders when fetching customers
...
We only care about non-cart orders and skipping carts, saves PostgreSQL
query planner to go through thousands of records in production use cases
(my food hub).
We go from
```sql
-> Index Scan using index_spree_orders_on_customer_id on spree_orders (cost=0.42..12049.45 rows=152002 width=15) (actual time=0.015..11.703 rows=13867 loops=1)
```
to
```sql
-> Index Scan using index_spree_orders_on_customer_id on spree_orders (cost=0.42..12429.46 rows=10802 width=15) (actual time=0.025..17.705 rows=9954 loops=1)
```
2021-01-11 15:50:19 +01:00
Pau Perez
539c5d067a
Update order payment_total when voiding a payment
...
As is, `payment_total` is only increased after successfully processing
a payment and never updated. This inconsistency breaks
`CustomerWithBalance` which relies on it.
Needless to say that if we keep this denormalized column, we better make
it consistent. I investigated current Spree's master branch (709e686cc0)
and they also realized it was broken. Now `Payment` runs the following
from the `after_save` `update_order` callback.
```rb
order.updater.update_payment_total if completed? || void?
```
I also took the chance to rearrange tests a bit.
2021-01-11 15:50:19 +01:00
Pau Perez
04930877dd
Test that payment_total is stored after payment
...
CustomerWithBalance totally relies on `spree_orders.payment_total` so we
better cover it with tests.
2021-01-11 15:50:19 +01:00
Pau Perez
93cdca85c6
Return 0 balance when the customer has no orders
2021-01-11 15:50:19 +01:00
Pau Perez
96a91969c9
Extract balance-specific serializer
...
So we only show the customer balance where really needed. Aggregating
the balance can be costly. Also, we avoid defensive coding.
2021-01-11 15:50:19 +01:00
Pau Perez
9d0dd968b1
Test customer balance query with guest orders
...
Guest orders also have an associated customer record that is created
by Spree::Order#ensure_customer at checkout. Subsequent orders will use
that one due to Spree::Order#associate_customer.
2021-01-11 15:50:19 +01:00
Pau Perez
1e9a1f340e
Don't consider order total when it is canceled
2021-01-11 15:50:19 +01:00
Pau Perez
d62ab06504
Refactor DB query to aggregate customer balance
...
It's simpler and many orders of magnitude more efficient to ask the DB
to aggregate the customer balance based on their orders. It removes
a nasty N+1.
The resulting SQL query is:
```sql
SELECT customers.*, SUM(spree_orders.total - spree_orders.payment_total) AS balance
FROM "customers"
INNER JOIN "spree_orders"
ON "spree_orders"."customer_id" = "customers"."id"
WHERE "customers"."enterprise_id" = 1
AND (completed_at IS NOT NULL)
AND (state != 'canceled')
GROUP BY customers.id
ORDER BY email;
```
2021-01-11 15:50:19 +01:00
Andy Brett
c12abf8057
Merge pull request #6617 from Matt-Yorkley/stock-items-variant-deletion
...
Stock items and variant deletion
2021-01-09 12:12:24 -08:00
Andy Brett
3877721209
Merge pull request #6631 from Matt-Yorkley/actionmailer-deliver
...
[Deprecation] Replace ActionMailer#deliver with ActionMailer#deliver_now
2021-01-08 17:42:31 -08:00
Matt-Yorkley
69640dc785
Tidy up producer mailer spec
...
This is covered in two other spec files relating to order cycles, the producer mailer spec doesn't need to know what calls the producer mailer.
2021-01-09 00:07:50 +00:00
Matt-Yorkley
9d5eaa1790
Delete dead code in delayed job spec helper
2021-01-08 23:18:55 +00:00
Matt-Yorkley
496f2dab69
Ensure Jobs are instantiated correctly
...
We should not be using `Delayed::Job.enqueue` anywhere...
2021-01-08 23:18:55 +00:00
Matt-Yorkley
ff962c1c9b
Change various Mailer invocations from #deliver_now to #deliver_later
2021-01-08 23:18:55 +00:00
Matt-Yorkley
3e6445c51c
Replace deprecated ActionMailer#deliver with ActionMailer#deliver_now
...
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.
2021-01-08 20:35:47 +00:00
Matt-Yorkley
87b14f0237
Avoid using #allow_any_instance_of
2021-01-08 17:47:09 +00:00
Matt-Yorkley
3b1ad29d20
Fix view rendering in Api::BaseController
2021-01-08 17:47:09 +00:00
Matt-Yorkley
d90ed56603
Add missing test for Api::OrderCyclesController responses
2021-01-08 17:47:09 +00:00
Matt-Yorkley
04e4893723
Update route declarations in caching spec
2021-01-08 17:47:09 +00:00
Matt-Yorkley
4ba3c81f90
Update route declaration in karma test
2021-01-08 17:47:09 +00:00
Pau Pérez Fabregat
95ab6c7d83
Merge pull request #6627 from Matt-Yorkley/dead-code-product-available
...
Delete dead code Spree::Product#available?
2021-01-08 17:35:21 +01:00
Matt-Yorkley
52b43d8c23
Delete dead code
...
This method isn't called from anywhere
2021-01-07 16:03:04 +00:00
Matt-Yorkley
0c9df590d3
Add some improvements to help ensure UI elements are actually loaded by Angular before they are clicked on by Capybara
2021-01-07 14:50:09 +00:00
Matt-Yorkley
cca16c6e1f
Fix stock issue and update specs (now passing)
...
See: dcd5944a29
2021-01-06 20:13:38 +00:00
Matt-Yorkley
c0c7c4f440
Import failing specs for stock items
...
See: dcd5944a29
2021-01-06 20:12:52 +00:00
Matt-Yorkley
0fbf3d6cd9
Merge pull request #6555 from filipefurtad0/tax_rates_spec
...
Extends spec coverage of Tax Rates settings - CRUD operations
2021-01-06 19:16:14 +01:00
Matt-Yorkley
019f4dfa24
Merge pull request #6605 from PauloVilarinho/refactor-pagination-data
...
Refactor pagination data
2021-01-06 19:06:23 +01:00
filipefurtad0
3c123bb947
Simplified the delete test-case
...
Using :xpath may compromise the stability of the test, and make it break upon slight changes to the page.
2021-01-06 16:23:46 +00:00
filipefurtad0
fc062a04a4
Updated the assertion/error to consider PR #6545
2021-01-06 16:23:46 +00:00
filipefurtad0
7f658d4c46
Removed the "_id" ending from objects
...
Renamed objects ":zone_id" and ":tax_category_id" into ":zone" and ":tax_category," as these are full objects and not just ids.
2021-01-06 16:23:46 +00:00
filipefurtad0
8a453abd26
Adding "frozen_string_literal" back to the file
...
Mistakenly removed the line "# frozen_string_literal: true". This commit adds it back in.
2021-01-06 16:23:46 +00:00
filipefurtad0
3edf5fd6d9
Extends spec coverage of Tax Rates settings - CRUD operations
2021-01-06 16:23:46 +00:00
Andy Brett
e58cd8a043
overwrite existing field value
2021-01-05 16:01:04 -08:00
Paulo Vilarinho
ccac16c5b2
fix orders controllers specs errors
2021-01-05 00:07:38 -03:00
Andy Brett
115d3d0bfe
Merge pull request #6587 from andrewpbrett/comment-out-oc-spec
...
Comment out flaky spec for complex order cycle updating
2021-01-02 15:03:20 -08:00
Andy Brett
3d8c7cc9f0
Merge pull request #6522 from arku/feat/stripe-credit-card-removal
...
Extract Stripe credit card deletion logic to a service object
2021-01-02 14:56:00 -08:00
Andy Brett
042b4faf1e
comment out flaky spec
2021-01-02 14:53:55 -08:00
Andy Brett
51ee21e294
Merge pull request #6556 from Matt-Yorkley/adjustments-eligible
...
[Adjustments] Delete dead code #eligible_for_originator?
2021-01-01 20:48:27 -08:00
Andy Brett
d0888415e2
Merge pull request #6594 from Matt-Yorkley/credit-card-spec-expired
...
Ensure credit card is not out of date in credit card spec
2021-01-01 17:29:31 -08:00
Matt-Yorkley
f6d0d43622
Ensure credit card is not out of date in credit card spec
...
This just blew up on New Years Eve 🙈
2021-01-01 11:54:14 +00:00
Andy Brett
fc4634cd67
comment out flaky spec
2020-12-29 19:22:09 -08:00
Matt-Yorkley
70f7d76723
Delete dead code #eligible_for_originator?
...
This check is used only by Spree::Promotion objects, which are not used in OFN. There are no objects which can be originators of an adjustment that respond to #eligible? in this way, so the method always returns true.
2020-12-23 08:29:12 +00:00
Pau Pérez Fabregat
9a199ae02c
Merge pull request #6540 from PauloVilarinho/add-internationalization-to-payment-method-clean-name
...
Add internationalization to payment method clean name
2020-12-18 18:06:19 +01:00
Matt-Yorkley
1269e5f2e9
Merge pull request #6533 from andrewpbrett/sca-backend
...
Patch #6469 : use `purchase` to charge offline for Stripe Connect
2020-12-17 17:17:14 +01:00
Paulo Vilarinho
50955d735c
Add tests for internationalization of payment method clean name
...
The clean name payment method tests now uses the internationalization string
2020-12-17 00:34:21 -03:00
Andy Brett
7fc9cc9f31
test that purchase is called by SCA and Connect providers
2020-12-16 11:09:15 -08:00
Andy Brett
934f4f278e
add spec to subscription confirm job
2020-12-15 12:24:38 -08:00
Andy Brett
484576d1ac
add unit test for stripe connect
2020-12-15 10:30:05 -08:00
Pau Pérez Fabregat
d4fc3f2118
Merge pull request #6516 from coopdevs/per-user-feature-toggles
...
Refactor FeatureToggle to toggle depending on user
2020-12-14 16:03:05 +01:00
Pau Pérez Fabregat
fa812364ff
Merge pull request #6453 from andrewpbrett/fix-void-payment-error
...
fix #5829 (Voiding an initial payment (i.e. a full refund) after partially refunding the order is not possible with Stripe-SCA)
2020-12-14 09:48:41 +01:00