Compare commits

..

1197 Commits

Author SHA1 Message Date
Matt-Yorkley
74f27544f7 Merge pull request #7647 from andrewpbrett/default-country-codes
Use correct default country code
2021-05-25 11:21:34 +02:00
Matt-Yorkley
5868765087 Merge pull request #7673 from Matt-Yorkley/spree-config-caching
Fix clashing loggers
2021-05-25 11:09:33 +02:00
Maikel
545d64a2e5 Merge pull request #7682 from openfoodfoundation/dependabot/bundler/i18n-js-3.8.3
Bump i18n-js from 3.8.2 to 3.8.3
2021-05-25 14:48:19 +10:00
Matt-Yorkley
c69dee4c96 Merge pull request #7636 from psychoslave/tip/zeus
Remove all material related to Zeus
2021-05-25 00:10:01 +02:00
Andy Brett
b367001b95 Merge pull request #7641 from luisramos0/order_path
[Rails 6.1] Fix view specs
2021-05-24 14:41:32 -07:00
Andy Brett
120fc4ca42 Merge pull request #7605 from filipefurtad0/import_item_products
Products and Inventory import: Items units
2021-05-24 14:17:43 -07:00
Andy Brett
e4756a523a Merge pull request #7678 from mkllnk/schema
Update schema syntax with Rails 5.2
2021-05-24 13:22:18 -07:00
Andy Brett
46843a5efa Merge pull request #7662 from Matt-Yorkley/enterprise-rendering
Render enterprise rows as a collection
2021-05-24 09:37:58 -07:00
Matt-Yorkley
6377736f43 Allow :site_url to be picked up from ENV vars 2021-05-24 14:58:53 +01:00
dependabot[bot]
e90403dbbe Bump i18n-js from 3.8.2 to 3.8.3
Bumps [i18n-js](https://github.com/fnando/i18n-js) from 3.8.2 to 3.8.3.
- [Release notes](https://github.com/fnando/i18n-js/releases)
- [Changelog](https://github.com/fnando/i18n-js/blob/main/CHANGELOG.md)
- [Commits](https://github.com/fnando/i18n-js/compare/v3.8.2...v3.8.3)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-24 05:49:51 +00:00
Matt-Yorkley
3dc3581e6b Ensure Mail configs are applied when the app starts
Previously we only set these part-way through deployment, so the values could be out of sync between our ENV vars and Spree::Config (which itself is a mix of both cached values and database-persisted values).
2021-05-23 23:05:16 +01:00
Matt-Yorkley
ff82f70e9a Remove custom logger object
This is handled already in Delayed::Command and Delayed::Worker
2021-05-23 23:05:16 +01:00
Andy Brett
560f462f7b Merge pull request #7679 from mkllnk/sample-data
Fix sample_data by filtering params for products
2021-05-22 10:37:30 -07:00
Pau Pérez Fabregat
23b2b5ba56 Merge pull request #7563 from filipefurtad0/import_products_fixture_path
Adds file and fixture path to test product import
2021-05-21 10:12:20 +02:00
Maikel Linke
11cb8cbbdc Fix sample_data by filtering params for products
We were passing too many parameters to the product creation. Rails 5.2
complained that products don't have a distributor. Filtering the
parameters helps.
2021-05-21 12:41:55 +10:00
Maikel Linke
41799b2663 Update schema syntax with Rails 5.2
The style seems to be different. This avoids a modified schema after
running rake db:migrate.
2021-05-21 11:50:34 +10:00
filipefurtad0
2f842bcbdd Adds file and fixture path to test product import
Adds file and fixture path to test product import

Reverts changes on context and it descriptions
2021-05-20 20:08:47 +01:00
Matt-Yorkley
336a8b5825 Merge pull request #7671 from Matt-Yorkley/licence
Add Spree copyright notice
2021-05-20 18:56:16 +02:00
Andy Brett
d2f54f5bd2 Merge pull request #7666 from mkllnk/codecov
Stop Codecov failing good pull requests
2021-05-20 09:18:34 -07:00
Pau Pérez Fabregat
8c81c14c8d Merge pull request #7580 from apricot12/Remove-LineItems-N+1
Removed N+1 queries while counting line_items
2021-05-20 11:42:14 +02:00
Matt-Yorkley
1f6d872fa5 Add Spree copyright notice 2021-05-20 10:25:48 +01:00
Jean-Baptiste Bellet
ae1b9b8dd5 Update all locales with the latest Transifex translations 2021-05-20 10:12:46 +02:00
Maikel
1e1706d371 Merge pull request #7280 from Matt-Yorkley/atomic
Remove atomic gem
2021-05-20 17:53:36 +10:00
Maikel Linke
5ccaa521cf Stop Codecov failing good pull requests
Something doesn't quite work with our Codecov setup. It somehow thinks
that the coverage is decreasing even though it's either not changing or
even increasing.

Until those problems are resolved, let's not mark pull requests as
failed so that we can rely on the pull's overall status report.
2021-05-20 14:18:43 +10:00
Maikel Linke
90bb9870ab Bump Codecov from 1.3.1 to 1.5.0 2021-05-20 14:17:36 +10:00
Andy Brett
70ac719725 Merge pull request #7649 from andrewpbrett/payments-when-out-of-stock
Check stock before doing anything related to admin payments
2021-05-19 14:45:38 -07:00
Andy Brett
08d540a761 Merge pull request #7648 from Matt-Yorkley/redis
Switch cache store from memcached to redis
2021-05-19 10:36:20 -07:00
Andy Brett
304a3804bc Merge pull request #7594 from luisramos0/update_attributes
[Rails 6.1] Replace AR's update_attributes! with update! (and rename order.update! and adjustment.update! in the process)
2021-05-19 10:34:12 -07:00
Luis Ramos
f7726e552a Adapt code coming from master to the new order api with update_order! 2021-05-19 10:09:42 -07:00
Luis Ramos
a1ac4e85ed Replace update_attributes with update 2021-05-19 09:54:25 -07:00
Luis Ramos
f8e5370b0b Replace update_attributes with update 2021-05-19 09:54:25 -07:00
Luis Ramos
fb560089b9 Replace usages of update_attributes! with usage of update! 2021-05-19 09:54:25 -07:00
Luis Ramos
341f6c9f62 Now that adjustment.update! has been renamed to adjustment.update_adjustment! we can use AR's update! on adjustment 2021-05-19 09:54:25 -07:00
Luis Ramos
b2e97fe1d2 Rename order.update! to order.update_order! and adjustment.update! to adjustment.update_adjustment! 2021-05-19 09:54:22 -07:00
Andy Brett
e73584fef7 remove setters from DefaultCountry service 2021-05-19 09:42:52 -07:00
Andy Brett
45ad4bbcf1 remove setting of Spree::Config country code 2021-05-19 09:33:02 -07:00
Matt-Yorkley
096847ea07 Merge pull request #7618 from openfoodfoundation/dependabot/npm_and_yarn/hosted-git-info-2.8.9
Bump hosted-git-info from 2.8.8 to 2.8.9
2021-05-19 13:51:01 +02:00
Pau Pérez Fabregat
faf6a37c9f Merge pull request #7631 from openfoodfoundation/dependabot/bundler/ddtrace-0.49.0
Bump ddtrace from 0.48.0 to 0.49.0
2021-05-19 12:32:52 +02:00
Pau Pérez Fabregat
d4ec1bda54 Merge pull request #7652 from openfoodfoundation/dependabot/bundler/webmock-3.13.0
Bump webmock from 3.12.2 to 3.13.0
2021-05-19 12:32:08 +02:00
Pau Pérez Fabregat
5560a99423 Merge pull request #7663 from openfoodfoundation/transifex
Transifex
2021-05-19 11:50:02 +02:00
Matt-Yorkley
0c4e191f3b Render enterprise rows as a collection
Note: this is a bit like an N+1 query, but for rendering. If there are 30 enterprises, the partial file would be loaded and parsed 30 times; but if we render it as a collection it'll load the partial once and substantially improve the performance.
2021-05-19 08:48:25 +01:00
Andy Brett
2bb38619ea Merge pull request #7656 from openfoodfoundation/dependabot/bundler/rubocop-1.15.0
Bump rubocop from 1.14.0 to 1.15.0
2021-05-18 13:36:56 -07:00
Andy Brett
4b352da402 Merge pull request #7630 from apricot12/persistent_flash_after_reload
Persistent flash after reload
2021-05-18 12:55:37 -07:00
Transifex-Openfoodnetwork
75243b8e6a Updating translations for config/locales/en_US.yml 2021-05-19 05:54:38 +10:00
Andy Brett
7df2915fbd add DefaultCountry service 2021-05-18 12:44:53 -07:00
Matt-Yorkley
6427a3846b Merge pull request #7651 from openfoodfoundation/dependabot/bundler/activerecord-import-1.1.0
Bump activerecord-import from 1.0.8 to 1.1.0
2021-05-18 20:06:21 +02:00
Andy Brett
5169ee91ea add comment for before_action 2021-05-18 10:42:19 -07:00
Andy Brett
5917accdd2 refactor using Extract Method 2021-05-18 10:38:35 -07:00
Matt-Yorkley
5dd24623f7 Merge pull request #7479 from Matt-Yorkley/payment-callbacks
Update Payment after_save callback
2021-05-18 16:19:29 +02:00
Matt-Yorkley
befb6f632f Merge pull request #7659 from openfoodfoundation/dependabot/bundler/nokogiri-1.11.4
Bump nokogiri from 1.11.3 to 1.11.4
2021-05-18 11:14:32 +02:00
dependabot[bot]
92e0f8349c Bump nokogiri from 1.11.3 to 1.11.4
Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.11.3 to 1.11.4.
- [Release notes](https://github.com/sparklemotion/nokogiri/releases)
- [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.11.3...v1.11.4)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-18 08:37:29 +00:00
dependabot[bot]
ffbba01c41 Bump rubocop from 1.14.0 to 1.15.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.14.0 to 1.15.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.14.0...v1.15.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-18 05:24:48 +00:00
Pau Pérez Fabregat
5f9679655c Merge pull request #7645 from Matt-Yorkley/stripe-payment-processing
Stripe payment processing
2021-05-17 16:17:21 +02:00
dependabot[bot]
6ded80d2c6 Bump webmock from 3.12.2 to 3.13.0
Bumps [webmock](https://github.com/bblimke/webmock) from 3.12.2 to 3.13.0.
- [Release notes](https://github.com/bblimke/webmock/releases)
- [Changelog](https://github.com/bblimke/webmock/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bblimke/webmock/compare/v3.12.2...v3.13.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-17 05:51:55 +00:00
dependabot[bot]
eb3c33b091 Bump activerecord-import from 1.0.8 to 1.1.0
Bumps [activerecord-import](https://github.com/zdennis/activerecord-import) from 1.0.8 to 1.1.0.
- [Release notes](https://github.com/zdennis/activerecord-import/releases)
- [Changelog](https://github.com/zdennis/activerecord-import/blob/master/CHANGELOG.md)
- [Commits](https://github.com/zdennis/activerecord-import/compare/v1.0.8...v1.1.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-17 05:51:01 +00:00
Matt-Yorkley
794216713a Ensure payment is processed if order is in completed state 2021-05-16 23:03:07 +01:00
Matt-Yorkley
a2862e604c Find relevant payment that matches the payment intent, not the last payment 2021-05-16 23:00:31 +01:00
Matt-Yorkley
8429da3d2a Remove unused argument from ProcessPaymentIntent 2021-05-16 22:19:01 +01:00
Matt-Yorkley
381b0e78d5 Improve ProcessPaymentIntent specs 2021-05-16 20:14:14 +01:00
Matt-Yorkley
2e63cd8116 Add explanatory comment on payment processing flow 2021-05-16 20:11:45 +01:00
Matt-Yorkley
52e0d84238 Reload in-memory payment before checking it's new state
The state should have changed in the database if the payment was processed successfully, and the memoized version here will not know that without a reload.
2021-05-16 20:11:45 +01:00
Matt-Yorkley
5725535715 Fix payment state checking 2021-05-16 20:11:45 +01:00
Matt-Yorkley
05ed98aa0c Use :order_with_totals in ProcessPaymentIntent
If we just use the :order factory here, it has no line items and no total, which means when we try to push it into complete state, the #requires_payment? check fails because the order total is zero, which means the call to #process_payments is ignored
2021-05-16 20:11:45 +01:00
Matt-Yorkley
fd021d4778 Refactor payment intent status checking and return "ok" if the payment has already been processed successfully in a previous request
If the page is reloaded after the payment has already gone through, we can skip the processing and give a non-error response; the payment is already completed and Stripe's response confirms it was successful.
2021-05-16 20:11:45 +01:00
Matt-Yorkley
2b9f9fce86 Fix flash session memory-effect when showing errors after payment processing
We're not doing a redirect after setting this flash message, so we need to ensure it's discarded after the current page load.
2021-05-16 20:11:45 +01:00
Matt-Yorkley
81aac442f2 Improve conditional in raise_if_not_in_capture_state 2021-05-16 20:11:45 +01:00
Matt-Yorkley
16e3af9b49 Update OrderController spec 2021-05-16 20:11:45 +01:00
Matt-Yorkley
227bdd7d4c Update ProcessPaymentIntent spec 2021-05-16 12:55:48 +01:00
Matt-Yorkley
471a7903f6 Update PaymentIntentValidator spec 2021-05-16 12:19:04 +01:00
Matt-Yorkley
37177e7207 Add test coverage to StripeSCA spec 2021-05-16 12:19:04 +01:00
Matt-Yorkley
5805104d13 Tidy up controller and add explanatory comment 2021-05-16 12:19:04 +01:00
Matt-Yorkley
e686a4f627 Move raising of errors when payment intent state != "requires_capture" out of PaymentIntentValidator service
When we're fetching the payment intent via PaymentIntentValidator in StripeSCA#purhcase (to capture it), we want it to fail loudly if it's not in "requires_capture" state. We're now also re-using the same PaymentIntentValidator service to check if payment processing was *successful*, in which case we need it *not* to fail loudly if the state == "succeeded", eg != "requires_capture".
2021-05-16 12:19:04 +01:00
Andy Brett
c7f80d86a8 Merge pull request #7638 from Matt-Yorkley/dead-code-order-distribution
Delete dead code in OrdersController#update_distribution
2021-05-15 12:40:25 -07:00
Andy Brett
19187583e1 Merge pull request #7643 from openfoodfoundation/dependabot/bundler/test-prof-1.0.5
Bump test-prof from 1.0.3 to 1.0.5
2021-05-15 12:28:22 -07:00
Andy Brett
f2c3b096a0 Merge pull request #7566 from luisramos0/erb
[Rails 6.0] Fix problem in erb template by explicitly setting format to js
2021-05-15 10:45:01 -07:00
Andy Brett
816d752dc8 Merge pull request #7439 from openfoodfoundation/dependabot/bundler/jwt-2.2.3
Bump jwt from 2.2.2 to 2.2.3
2021-05-15 10:36:13 -07:00
Andy Brett
0a880a2bf3 flip conditional order for performance 2021-05-15 07:08:07 -07:00
Matt-Yorkley
d6b3b0a3d3 Ensure a basic level of fault-tolerance on Redis connections
The default for reconnect_attempts is 0, which is not helpful! 1 is generally considered to be enough.
2021-05-15 11:36:19 +01:00
Andy Brett
ca38948e21 check stock before doing anything related to admin payments 2021-05-14 17:42:37 -07:00
Andy Brett
fe67c01e57 guard against no database, but not against .connected?
Similar to b22ce43efe
2021-05-14 12:56:24 -07:00
Matt-Yorkley
37053239c0 Switch cache store from memcached to redis 2021-05-14 20:46:13 +01:00
dependabot[bot]
2bb5a4b11f Bump test-prof from 1.0.3 to 1.0.5
Bumps [test-prof](https://github.com/test-prof/test-prof) from 1.0.3 to 1.0.5.
- [Release notes](https://github.com/test-prof/test-prof/releases)
- [Changelog](https://github.com/test-prof/test-prof/blob/master/CHANGELOG.md)
- [Commits](https://github.com/test-prof/test-prof/compare/v1.0.3...v1.0.5)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-14 05:17:23 +00:00
Maikel Linke
cea3ee4ef9 Transifex updates 2021-05-14 10:06:31 +10:00
Luis Ramos
90db52e5f5 Fix route 2021-05-14 00:14:02 +01:00
Luis Ramos
b1896733ca Fix routes 2021-05-14 00:08:20 +01:00
Luis Ramos
a949422ac9 Adapt view spec stubs to rails 6 2021-05-13 23:28:35 +01:00
Luis Ramos
0243e5cbb8 Fix route in order view 2021-05-13 23:08:50 +01:00
Andy Brett
ebdbfe0027 Merge pull request #7639 from drummer83/patch-1
Remove Ruby version from WIKI
2021-05-13 13:26:34 -07:00
Konrad
b680697af6 Remove Ruby version
Let's remove the Ruby version from the text. It changes regularly and have the link where to find it right behind it.
2021-05-13 21:16:02 +02:00
Matt-Yorkley
2e248744c0 Merge pull request #7520 from Matt-Yorkley/shipment-controller
Shipment controller: test coverage and improvements
2021-05-13 20:26:51 +02:00
Matt-Yorkley
82a6befce7 Delete dead code in OrdersController#update_distribution
I can't see any evidence that these params ever get sent to this action...
2021-05-13 15:29:53 +01:00
Mathieu Lovato Stumpf Guntz
ccef65039a Remove all material related to Zeus 2021-05-13 12:21:58 +02:00
dependabot[bot]
e4a670da5a Bump ddtrace from 0.48.0 to 0.49.0
Bumps [ddtrace](https://github.com/DataDog/dd-trace-rb) from 0.48.0 to 0.49.0.
- [Release notes](https://github.com/DataDog/dd-trace-rb/releases)
- [Changelog](https://github.com/DataDog/dd-trace-rb/blob/master/CHANGELOG.md)
- [Commits](https://github.com/DataDog/dd-trace-rb/compare/v0.48.0...v0.49.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-13 05:24:45 +00:00
Nihal Mohammed
c930b2ee60 Fix persistet flash after /cart page reload 2021-05-13 05:57:25 +05:30
Matt-Yorkley
4932e1dcb5 Merge pull request #7628 from viktorsmari/remove-distributer-sample-data
Remove distributer from sample_data
2021-05-12 23:53:13 +02:00
Viktor Smari
536281ec80 Remove distributer from sample_data
Closes #7625
2021-05-12 23:01:08 +02:00
Nihal Mohammed
367cee593f Move eager loading line_items to controller 2021-05-13 01:12:13 +05:30
Matt-Yorkley
99cf23df26 Merge pull request #7530 from Matt-Yorkley/email-after-commit
Email after commit
2021-05-12 21:22:55 +02:00
Matt-Yorkley
f49d4592a0 Merge pull request #7506 from guidoDutra/5546-prevent-deleting-only-item-in-confirmed-order
prevent deleting only item in confirmed order
2021-05-12 21:10:09 +02:00
Pau Pérez Fabregat
7f27544acb Merge pull request #7612 from openfoodfoundation/dependabot/bundler/actionpack-action_caching-1.2.2
Bump actionpack-action_caching from 1.2.1 to 1.2.2
2021-05-12 16:24:25 +02:00
Pau Pérez Fabregat
2aac44d95e Merge pull request #7620 from openfoodfoundation/transifex
Transifex
2021-05-12 15:50:25 +02:00
Pau Pérez Fabregat
8f921b8b08 Merge pull request #7593 from viktorsmari/add-bullet-footer
Add bullet footer
2021-05-12 15:47:54 +02:00
Transifex-Openfoodnetwork
dfe485b079 Updating translations for config/locales/ru.yml 2021-05-12 17:49:31 +10:00
dependabot[bot]
ad9096b5a8 Bump hosted-git-info from 2.8.8 to 2.8.9
Bumps [hosted-git-info](https://github.com/npm/hosted-git-info) from 2.8.8 to 2.8.9.
- [Release notes](https://github.com/npm/hosted-git-info/releases)
- [Changelog](https://github.com/npm/hosted-git-info/blob/v2.8.9/CHANGELOG.md)
- [Commits](https://github.com/npm/hosted-git-info/compare/v2.8.8...v2.8.9)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-11 23:49:14 +00:00
Matt-Yorkley
e60a513c88 Merge pull request #7571 from coopdevs/make-specs-accurate
Properly mock validator and extend tests
2021-05-11 22:24:01 +02:00
Pau Pérez Fabregat
1f8e731594 Merge pull request #7596 from openfoodfoundation/transifex
Transifex
2021-05-11 11:56:35 +02:00
dependabot[bot]
d69ef31bf9 Bump actionpack-action_caching from 1.2.1 to 1.2.2
Bumps [actionpack-action_caching](https://github.com/rails/actionpack-action_caching) from 1.2.1 to 1.2.2.
- [Release notes](https://github.com/rails/actionpack-action_caching/releases)
- [Changelog](https://github.com/rails/actionpack-action_caching/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rails/actionpack-action_caching/compare/v1.2.1...v1.2.2)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-11 05:05:32 +00:00
Andy Brett
9ae7c5efbc Merge pull request #7578 from psychoslave/master
Update things related to some package manager influencing setup process
2021-05-10 17:01:46 -07:00
Matt-Yorkley
902bbf7dc4 Merge pull request #7576 from Matt-Yorkley/bulk-line-items
Add test coverage to BulkLineItemsController actions
2021-05-11 01:47:17 +02:00
Andy Brett
d29ef0d7b1 Merge branch 'master' into make-specs-accurate 2021-05-10 16:10:33 -07:00
Andy Brett
d2a3d9049f Merge pull request #7588 from andrewpbrett/enterprise-permalink-spec
[Rails 6.0] Fix enterprise permalink spec
2021-05-10 15:30:45 -07:00
filipefurtad0
0cd6c53e0d Adds test-case on the inventory import for unit Items 2021-05-10 19:12:41 +01:00
filipefurtad0
5475b79cde Adds test-case on the product import unit Items 2021-05-10 19:07:05 +01:00
filipefurtad0
8e24c655b0 Adds verification of inventory import on inventory page 2021-05-10 19:01:41 +01:00
filipefurtad0
bb5452ad26 Adds verification of product import on products page 2021-05-10 18:57:47 +01:00
Matt-Yorkley
85b8e9b51f Merge pull request #7595 from openfoodfoundation/dependabot/bundler/factory_bot_rails-6.2.0
Bump factory_bot_rails from 6.1.0 to 6.2.0
2021-05-10 19:55:54 +02:00
Andy Brett
3239c893ba Merge pull request #7590 from viktorsmari/ransack-search-deprecation
Ransack.search is deprecated. Use .ransack instead
2021-05-10 08:43:09 -07:00
Andy Brett
17a0063b40 Merge pull request #7402 from filipefurtad0/products_spec_add_ons
Adds coverage for product deletion and cloning
2021-05-10 06:26:11 -07:00
Transifex-Openfoodnetwork
75dc7af0ed Updating translations for config/locales/en_GB.yml 2021-05-10 18:16:04 +10:00
dependabot[bot]
cb15e28cef Bump factory_bot_rails from 6.1.0 to 6.2.0
Bumps [factory_bot_rails](https://github.com/thoughtbot/factory_bot_rails) from 6.1.0 to 6.2.0.
- [Release notes](https://github.com/thoughtbot/factory_bot_rails/releases)
- [Changelog](https://github.com/thoughtbot/factory_bot_rails/blob/master/NEWS.md)
- [Commits](https://github.com/thoughtbot/factory_bot_rails/compare/v6.1.0...v6.2.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-10 05:55:18 +00:00
Andy Brett
cbefa5f882 Merge pull request #7589 from andrewpbrett/order-adjustments-spec
[Rails 6.0] Fix order adjustments spec
2021-05-09 10:38:19 -07:00
Andy Brett
231f01dad2 fix order adjustments spec 2021-05-09 10:09:22 -07:00
Viktor Smari
c14ccdc21c Add bullet footer
Left corner of the page will show the bullet warnings
2021-05-09 16:49:00 +02:00
Nihal Mohammed
fcf70c242e edit item_count method to shorthand for improved readability 2021-05-09 18:31:26 +05:30
Andy Brett
a0476be2c9 Merge pull request #7568 from andrewpbrett/stripe-mock-js
[Rails 6.0] Use raw to render stripe mock js file
2021-05-08 17:46:24 -07:00
Matt-Yorkley
24a5407c8f Merge pull request #7565 from luisramos0/rails6_success
[Rails 6.0] Replace be_success on test_response with status 200
2021-05-09 02:33:49 +02:00
Andy Brett
66da72ccc2 use raw to render stripe mock js 2021-05-08 17:29:38 -07:00
Viktor Smari
6a342ae368 Ransack.search is deprecated. Use .ransack instead
https://github.com/activerecord-hackery/ransack/pull/975
2021-05-09 01:05:37 +02:00
Andy Brett
dd851edbdc fix enterprise permalink spec 2021-05-08 14:21:45 -07:00
Andy Brett
2910cbf15c Merge pull request #7582 from openfoodfoundation/transifex
Transifex
2021-05-08 13:55:11 -07:00
Transifex-Openfoodnetwork
d24d7fce56 Updating translations for config/locales/de_DE.yml 2021-05-09 05:16:39 +10:00
Nihal Mohammed
e485a4a8ef Remove untested change to payments 2021-05-08 23:51:38 +05:30
Nihal Mohammed
026942dd72 Fix item_count to properly count quantity of every item 2021-05-08 23:45:41 +05:30
Nihal Mohammed
237ebd6ec4 Removed N+1 queries while counting line_items 2021-05-08 21:09:06 +05:30
Mathieu Lovato Stumpf Guntz
a4d6e69309 Replace nmp with yarn, remove newrelic 2021-05-07 21:10:55 +02:00
Mathieu Lovato Stumpf Guntz
29e04dd8c8 Merge branch 'master' of https://github.com/openfoodfoundation/openfoodnetwork 2021-05-07 16:00:08 +02:00
Mathieu Lovato Stumpf Guntz
5a8e271037 Update .node-version to last LTS and drop setup tests 2021-05-07 15:54:15 +02:00
Andy Brett
5a16954bf6 Merge pull request #7572 from openfoodfoundation/transifex
Transifex
2021-05-07 06:46:56 -07:00
Matt-Yorkley
43e41f4980 Add more explicit test coverage to BulkLineItemsController acitons
This spec includes taxes on line items, fees on the order and on line items, taxes on fees (inherited and non-inherited), shipping and payment fees and taxes on shipping. It checks all of these things are correctly updated after the order is changed via BOM.
2021-05-07 11:54:04 +01:00
Matt-Yorkley
39156ec988 Merge pull request #7574 from Matt-Yorkley/dfc-routes
Update DFC routes
2021-05-07 11:27:50 +02:00
Matt-Yorkley
c71d4bce6a Update DFC routes 2021-05-07 09:42:35 +01:00
Pau Pérez Fabregat
8d8abed529 Merge pull request #7496 from jibees/4957-flaky-specs
Uncomment flaky spec on variant_overrides_spec.rb
2021-05-07 10:29:36 +02:00
Transifex-Openfoodnetwork
55018260df Updating translations for config/locales/en_FR.yml 2021-05-07 17:53:34 +10:00
Transifex-Openfoodnetwork
cbdeef064a Updating translations for config/locales/fr.yml 2021-05-07 17:53:20 +10:00
Transifex-Openfoodnetwork
ac2c02a983 Updating translations for config/locales/es.yml 2021-05-07 16:40:26 +10:00
Transifex-Openfoodnetwork
c71a4918a0 Updating translations for config/locales/ca.yml 2021-05-07 16:40:03 +10:00
Pau Perez
fd5e0fd60f Properly mock validator and extend tests
Tests were passing but not due to the expected reason. While at it, we
extended the assertions to be more precise.
2021-05-07 08:35:54 +02:00
Andy Brett
dbd0d4a795 Merge pull request #7570 from openfoodfoundation/release/v3.6.10
Update all locales with the latest Transifex translations
2021-05-06 20:41:25 -07:00
Andy Brett
328381b732 Update all locales with the latest Transifex translations 2021-05-06 20:38:41 -07:00
Luis Ramos
de000228cf Fix problem in erb template by explicitly setting format to js while calling it 2021-05-06 23:52:16 +01:00
Luis Ramos
a2de86c23e Replace be_success on test_reponse with status 200
In rails 6 response.success? is not supported.
2021-05-06 23:51:30 +01:00
Andy Brett
415d86bff0 Merge pull request #7562 from coopdevs/fix-failed-sca-auth
Fix failed SCA authentication on subs. order payment not reflected in OFN
2021-05-06 15:25:16 -07:00
Andy Brett
8b9083d28f Merge pull request #7560 from openfoodfoundation/dependabot/bundler/rails-5.2.6
Bump rails from 5.2.5 to 5.2.6
2021-05-06 15:14:06 -07:00
dependabot[bot]
7f5dddffa0 Bump rails from 5.2.5 to 5.2.6
Bumps [rails](https://github.com/rails/rails) from 5.2.5 to 5.2.6.
- [Release notes](https://github.com/rails/rails/releases)
- [Commits](https://github.com/rails/rails/compare/v5.2.5...v5.2.6)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-06 17:35:58 +00:00
Andy Brett
cfa4bde965 Merge pull request #7559 from openfoodfoundation/dependabot/bundler/rubocop-rails-2.10.1
Bump rubocop-rails from 2.10.0 to 2.10.1
2021-05-06 10:34:20 -07:00
Andy Brett
9e6ede4072 Merge pull request #7561 from openfoodfoundation/dependabot/bundler/rubocop-1.14.0
Bump rubocop from 1.13.0 to 1.14.0
2021-05-06 10:33:40 -07:00
Pau Perez
9a63f38790 I18n-ize error messages. 2021-05-06 16:34:29 +02:00
Pau Perez
69b91ea136 Wait until the end to mark payment as processed
This gives us the opportunity to retry the operation in case the
processing fails.
2021-05-06 16:19:01 +02:00
Pau Perez
dea6a01e61 Handle SCA payments that can't complete 2021-05-06 16:19:01 +02:00
Pau Perez
2147584daf Validate intents against Stripe and display errors
Now the existing validation is redundant. It's Stripe's API who does
that now. It's up to them to decide what's a valid intent.
2021-05-06 16:19:01 +02:00
Pau Perez
b723ed4a98 Skip Stripe logic when no payment data is passed 2021-05-06 16:19:01 +02:00
dependabot[bot]
ccfe352d62 Bump rubocop from 1.13.0 to 1.14.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.13.0 to 1.14.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.13.0...v1.14.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-06 05:22:38 +00:00
dependabot[bot]
76fb157518 Bump rubocop-rails from 2.10.0 to 2.10.1
Bumps [rubocop-rails](https://github.com/rubocop/rubocop-rails) from 2.10.0 to 2.10.1.
- [Release notes](https://github.com/rubocop/rubocop-rails/releases)
- [Changelog](https://github.com/rubocop/rubocop-rails/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop-rails/compare/v2.10.0...v2.10.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-06 05:18:52 +00:00
Andy Brett
a7331efd67 Merge pull request #7477 from luisramos0/require_dependency
Remove require_dependency or use require
2021-05-05 13:24:19 -07:00
Pau Pérez Fabregat
b57755398c Merge pull request #7531 from openfoodfoundation/dependabot/bundler/daemons-1.4.0
Bump daemons from 1.3.1 to 1.4.0
2021-05-05 21:42:25 +02:00
dependabot[bot]
076081929f Bump daemons from 1.3.1 to 1.4.0
Bumps [daemons](https://github.com/thuehlinger/daemons) from 1.3.1 to 1.4.0.
- [Release notes](https://github.com/thuehlinger/daemons/releases)
- [Changelog](https://github.com/thuehlinger/daemons/blob/master/Releases)
- [Commits](https://github.com/thuehlinger/daemons/compare/v1.3.1...v1.4.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-05 18:07:37 +00:00
Andy Brett
4b183bb6c1 Merge pull request #7555 from openfoodfoundation/dependabot/bundler/rubocop-rails-2.10.0
Bump rubocop-rails from 2.9.1 to 2.10.0
2021-05-05 11:06:43 -07:00
Andy Brett
d2f3cdd6b9 Merge pull request #7546 from openfoodfoundation/dependabot/bundler/activerecord-session_store-2.0.0
Bump activerecord-session_store from 1.1.3 to 2.0.0
2021-05-05 11:06:10 -07:00
Andy Brett
baf3d4b2cd Merge pull request #6488 from openfoodfoundation/dependabot/bundler/pg-1.2.3
Bump pg from 0.21.0 to 1.2.3
2021-05-05 11:05:52 -07:00
Andy Brett
f8f3cb78e3 Merge pull request #7549 from openfoodfoundation/dependabot/bundler/roadie-rails-2.2.0
Bump roadie-rails from 1.3.0 to 2.2.0
2021-05-05 11:05:24 -07:00
dependabot[bot]
18373533e6 Bump roadie-rails from 1.3.0 to 2.2.0
Bumps [roadie-rails](https://github.com/Mange/roadie-rails) from 1.3.0 to 2.2.0.
- [Release notes](https://github.com/Mange/roadie-rails/releases)
- [Changelog](https://github.com/Mange/roadie-rails/blob/master/Changelog.md)
- [Commits](https://github.com/Mange/roadie-rails/compare/v1.3.0...v2.2.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-05 17:40:59 +00:00
dependabot[bot]
679ceaead7 Bump pg from 0.21.0 to 1.2.3
Bumps [pg](https://github.com/ged/ruby-pg) from 0.21.0 to 1.2.3.
- [Release notes](https://github.com/ged/ruby-pg/releases)
- [Changelog](https://github.com/ged/ruby-pg/blob/master/History.rdoc)
- [Commits](https://github.com/ged/ruby-pg/compare/v0.21.0...v1.2.3)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-05 17:40:49 +00:00
Pau Pérez Fabregat
64baebd791 Merge pull request #7545 from openfoodfoundation/dependabot/bundler/ransack-2.4.1
Bump ransack from 2.3.0 to 2.4.1
2021-05-05 19:39:42 +02:00
dependabot[bot]
31adbdbf7a Bump activerecord-session_store from 1.1.3 to 2.0.0
Bumps [activerecord-session_store](https://github.com/rails/activerecord-session_store) from 1.1.3 to 2.0.0.
- [Release notes](https://github.com/rails/activerecord-session_store/releases)
- [Commits](https://github.com/rails/activerecord-session_store/compare/v1.1.3...v2.0.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-05 17:15:11 +00:00
Pau Pérez Fabregat
819479f05c Merge pull request #7552 from luisramos0/rails525
Upgrade to rails 5.2.5 with "bundle update rails"
2021-05-05 19:14:04 +02:00
Pau Pérez Fabregat
324999494b Merge pull request #7523 from openfoodfoundation/transifex
Transifex
2021-05-05 18:31:30 +02:00
Andy Brett
82845e1cfc Merge pull request #7528 from Matt-Yorkley/has_many_through
Reorder has_many relationship with :through option
2021-05-05 08:08:15 -07:00
Andy Brett
3e714b1539 Merge pull request #7527 from Matt-Yorkley/dead-code-deleted
Remove #deleted? method from Product and Variant
2021-05-05 08:07:39 -07:00
Andy Brett
002420304d Merge pull request #7526 from Matt-Yorkley/dead-currency
Remove currency from OrderContents
2021-05-05 08:06:53 -07:00
dependabot[bot]
aa90c4f34f Bump rubocop-rails from 2.9.1 to 2.10.0
Bumps [rubocop-rails](https://github.com/rubocop/rubocop-rails) from 2.9.1 to 2.10.0.
- [Release notes](https://github.com/rubocop/rubocop-rails/releases)
- [Changelog](https://github.com/rubocop/rubocop-rails/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop-rails/compare/v2.9.1...v2.10.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-05 05:14:36 +00:00
Luis Ramos
63e2122593 Upgrade to rails 5.2.5 with a bundle update rails 2021-05-04 21:31:09 +01:00
Andy Brett
35671e2464 Merge pull request #7548 from openfoodfoundation/dependabot/bundler/rspec-rails-5.0.1
Bump rspec-rails from 4.1.2 to 5.0.1
2021-05-04 13:22:48 -07:00
Andy Brett
4b9418ebd6 Merge pull request #7547 from openfoodfoundation/dependabot/bundler/coffee-rails-5.0.0
Bump coffee-rails from 4.2.2 to 5.0.0
2021-05-04 13:02:50 -07:00
dependabot[bot]
ec8f42513b Bump rspec-rails from 4.1.2 to 5.0.1
Bumps [rspec-rails](https://github.com/rspec/rspec-rails) from 4.1.2 to 5.0.1.
- [Release notes](https://github.com/rspec/rspec-rails/releases)
- [Changelog](https://github.com/rspec/rspec-rails/blob/main/Changelog.md)
- [Commits](https://github.com/rspec/rspec-rails/compare/v4.1.2...v5.0.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-04 19:21:11 +00:00
dependabot[bot]
3ba439ec0d Bump coffee-rails from 4.2.2 to 5.0.0
Bumps [coffee-rails](https://github.com/rails/coffee-rails) from 4.2.2 to 5.0.0.
- [Release notes](https://github.com/rails/coffee-rails/releases)
- [Changelog](https://github.com/rails/coffee-rails/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rails/coffee-rails/compare/v4.2.2...v5.0.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-04 19:20:07 +00:00
dependabot[bot]
47e79a8d60 Bump ransack from 2.3.0 to 2.4.1
Bumps [ransack](https://github.com/activerecord-hackery/ransack) from 2.3.0 to 2.4.1.
- [Release notes](https://github.com/activerecord-hackery/ransack/releases)
- [Changelog](https://github.com/activerecord-hackery/ransack/blob/master/CHANGELOG.md)
- [Commits](https://github.com/activerecord-hackery/ransack/compare/v2.3.0...2.4.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-04 19:19:33 +00:00
Transifex-Openfoodnetwork
119fdd9e53 Updating translations for config/locales/en_CA.yml 2021-05-05 03:12:14 +10:00
Matt-Yorkley
00c4a28d22 Extract order-updating logic to Order::Updater 2021-05-04 16:40:10 +01:00
Matt-Yorkley
8e10f7af0e Update payments controller test setup
We need to use a completed order in the test setup here or it doesn't behave correctly. `order.completed_at` is nil, for example.
2021-05-04 16:40:10 +01:00
Matt-Yorkley
135a311c05 Update void payments
Backport from Spree 2.4 stable: 4121992398
2021-05-04 16:40:10 +01:00
Matt-Yorkley
13bb5aa8dd Update Payment after_save callback
Backport from Spree 2.4 stable: 4d652a77fd
2021-05-04 16:40:09 +01:00
Matt-Yorkley
2b1becfd47 Merge pull request #7185 from openfoodfoundation/rails-5-2
Rails 5.2 upgrade
2021-05-04 17:21:03 +02:00
Pau Perez
cb1e4caad8 Update all locales with the latest Transifex translations 2021-05-04 08:34:04 +02:00
Andy Brett
edc51d1155 Merge pull request #7532 from openfoodfoundation/dependabot/bundler/test-prof-1.0.3
Bump test-prof from 1.0.2 to 1.0.3
2021-05-03 11:31:50 -07:00
filipefurtad0
a476416dc4 Removes html tr tag; Clarifies it block 2021-05-03 17:03:34 +01:00
Transifex-Openfoodnetwork
55b1b860d1 Updating translations for config/locales/en_US.yml 2021-05-04 02:03:25 +10:00
Matt-Yorkley
e2a411c23c Add map helper to RegistrationController
Fixes 3 errors including:

Registration Terms of Service agreement if accepting Terms of Service is not required allows registration as normal
     Failure/Error: super

     ActionView::Template::Error:
       undefined method `using_google_maps?' for #<#<Class:0x00007fd4949c4558>:0x00007fd499dd0ae8>
     # ./app/helpers/application_helper.rb:20:in `method_missing'
     # ./app/views/registration/steps/_details.html.haml:60:in `_app_views_registration_steps__details_html_haml___1911121144363058234_70275472163280'
     # ./app/views/registration/index.html.haml:12:in `block in _app_views_registration_index_html_haml__993897347679518865_70275545598940'
     # ./app/views/registration/index.html.haml:11:in `each'
     # ./app/views/registration/index.html.haml:11:in `_app_views_registration_index_html_haml__993897347679518865_70275545598940'
     # ./lib/open_food_network/rack_request_blocker.rb:36:in `call'
     # ------------------
     # --- Caused by: ---
     # NoMethodError:
     #   undefined method `using_google_maps?' for #<#<Class:0x00007fd4949c4558>:0x00007fd499dd0ae8>
     #   ./app/helpers/application_helper.rb:20:in `method_missing'
2021-05-03 14:17:54 +01:00
Matt-Yorkley
aa013ef76a Update redirect_back syntax for Rails 5
Introduced in 5.0, the old syntax is removed in 5.2
2021-05-03 14:17:54 +01:00
Matt-Yorkley
a645b8c58f Re-apply previous 5.2 commit: Don't reload payments in after_save callback
This causes issues in master, but is needed in the 5.2 branch.
2021-05-03 14:17:54 +01:00
Matt-Yorkley
4888f1cd06 Stub OrderPaymentFinder to return correct object
OrderPaymentFinder was re-fetching the payment object from the database, so the subsequent line that stubs #authorize! on that payment was not being applied to the correct object.
2021-05-03 14:17:54 +01:00
Matt-Yorkley
31fc6201fc Include payment method helper in ApplicationController 2021-05-03 14:17:54 +01:00
Matt-Yorkley
ab65b01fcf Rename payments helper 2021-05-03 14:17:54 +01:00
Matt-Yorkley
1de68d091a Update guard clause in line item callbacks (take two)
The `changed?` method is more accurately replaced by `saved_changes.present?`

In some cases here (where the object had just been saved for the first time) the guard clause was still stopping execution unexpectedly.
2021-05-03 14:17:54 +01:00
Matt-Yorkley
ac53df37d9 Fix callback in LineItem
#changed? here was not working as before, and the code was never getting past this guard in various places where previously it did. This meant the callback was effectively disabled, and order.update! was not being called when it should be.
2021-05-03 14:17:54 +01:00
Luis Ramos
279c15c306 Adapt spec to rails 5.2 2021-05-03 14:17:54 +01:00
Luis Ramos
47a5809100 Fix rspec syntax 2021-05-03 14:17:54 +01:00
Andy Brett
705666ecd0 fix /spec/models/spree/credit_card_spec.rb:301 2021-05-03 14:17:54 +01:00
Luis Ramos
aaf4710694 Fix cart_service_spec to adapt to the actual usage of it from cart_controller, params are now sent inside a Parameters object, not as a hash 2021-05-03 14:17:54 +01:00
Luis Ramos
f5a7ff0f0a Switch from map, that does not exist in ActionController::Parameters, to each 2021-05-03 14:17:54 +01:00
Andy Brett
203dbb7a8b Revert "Switch from map, that does not exist in ActionController::Parameters, to each"
This reverts commit 69a15d4f04.
2021-05-03 14:17:54 +01:00
Andy Brett
ea5f9c6747 Revert "Fix cart_service_spec to adapt to the actual usage of it from cart_controller, params are now sent inside a Parameters object, not as a hash"
This reverts commit bb465b5715.
2021-05-03 14:17:54 +01:00
Andy Brett
d255ca22f5 use new attribute_changed method for taxons take 2 2021-05-03 14:17:54 +01:00
Andy Brett
be0eb5f5f9 ignore nil in payment report spec expectation 2021-05-03 14:17:54 +01:00
Andy Brett
52525dc437 Fix /spec/models/spree/product_spec.rb:118 2021-05-03 14:17:54 +01:00
Andy Brett
d381b2a544 Use saved_change_to prefix to check for changes 2021-05-03 14:17:54 +01:00
Luis Ramos
c08bc743d3 Replace usage of changed? with saved_change_to_ 2021-05-03 14:17:54 +01:00
Luis Ramos
c1402fe4f2 Upgrade state_machines 2021-05-03 14:17:54 +01:00
Matt-Yorkley
e9b6f89ae0 Update params syntax in engine controller specs 2021-05-03 14:17:54 +01:00
Matt-Yorkley
26688dda36 Add angular_form helper
Fixes:

Failure/Error: super

     ActionView::Template::Error:
       undefined method `ng_options_for_select' for #<#<Class:0x00007fbf8e43e310>:0x000055783fbebec0>
       Did you mean?  options_for_select
     # ./app/helpers/application_helper.rb:20:in `method_missing'
     # ./app/helpers/angular_form_builder.rb:26:in `ng_select'
     # ./app/views/admin/enterprise_fees/index.html.haml:34:in `block (2 levels) in _app_views_admin_enterprise_fees_index_html_haml__800455454875182851_46987476952700'
     # ./app/helpers/angular_form_builder.rb:6:in `ng_fields_for'
     # ./app/views/admin/enterprise_fees/index.html.haml:28:in `block in _app_views_admin_enterprise_fees_index_html_haml__800455454875182851_46987476952700'
     # ./app/helpers/application_helper.rb:11:in `ng_form_for'
     # ./app/views/admin/enterprise_fees/index.html.haml:4:in `_app_views_admin_enterprise_fees_index_html_haml__800455454875182851_46987476952700'
     # ./lib/open_food_network/rack_request_blocker.rb:36:in `call'
     # ------------------
     # --- Caused by: ---
     # NoMethodError:
     #   undefined method `ng_options_for_select' for #<#<Class:0x00007fbf8e43e310>:0x000055783fbebec0>
     #   Did you mean?  options_for_select
     #   ./app/helpers/application_helper.rb:20:in `method_missing'
2021-05-03 14:17:54 +01:00
Matt-Yorkley
b7aeceaf67 Add enterprise_fees helper
Fixes:

Failure/Error: super

     ActionView::Template::Error:
       undefined method `angular_id' for #<#<Class:0x00007f57c7126670>:0x00007f57c55754f8>
     # ./app/helpers/application_helper.rb:20:in `method_missing'
     # ./app/views/admin/enterprise_fees/index.html.haml:32:in `block (2 levels) in _app_views_admin_enterprise_fees_index_html_haml__3854507252304647884_70007474860840'
     # ./app/helpers/angular_form_builder.rb:6:in `ng_fields_for'
     # ./app/views/admin/enterprise_fees/index.html.haml:28:in `block in _app_views_admin_enterprise_fees_index_html_haml__3854507252304647884_70007474860840'
     # ./app/helpers/application_helper.rb:11:in `ng_form_for'
     # ./app/views/admin/enterprise_fees/index.html.haml:4:in `_app_views_admin_enterprise_fees_index_html_haml__3854507252304647884_70007474860840'
     # ./lib/open_food_network/rack_request_blocker.rb:36:in `call'
     # ------------------
     # --- Caused by: ---
     # NoMethodError:
     #   undefined method `angular_id' for #<#<Class:0x00007f57c7126670>:0x00007f57c55754f8>
     #   ./app/helpers/application_helper.rb:20:in `method_missing'
2021-05-03 14:17:54 +01:00
Matt-Yorkley
e6a3041f45 Add admin/enterprises helper
Fixes:

Failure/Error: super

     ActionView::Template::Error:
       undefined method `add_check_if_single' for #<#<Class:0x0000564501a3c838>:0x00007f446cdd68e8>
     # ./app/helpers/application_helper.rb:20:in `method_missing'
     # ./app/views/spree/admin/shared/_hubs_sidebar.html.haml:16:in `block in _app_views_spree_admin_shared__hubs_sidebar_html_haml___1973426344114200431_69965928779540'
     # ./app/views/spree/admin/shared/_hubs_sidebar.html.haml:11:in `each'
     # ./app/views/spree/admin/shared/_hubs_sidebar.html.haml:11:in `_app_views_spree_admin_shared__hubs_sidebar_html_haml___1973426344114200431_69965928779540'
     # ./app/views/spree/admin/payment_methods/edit.html.haml:15:in `block in _app_views_spree_admin_payment_methods_edit_html_haml__571217921761730685_69965930474120'
     # ./app/views/spree/admin/payment_methods/edit.html.haml:11:in `_app_views_spree_admin_payment_methods_edit_html_haml__571217921761730685_69965930474120'
     # ./app/controllers/admin/resource_controller.rb:23:in `block (2 levels) in edit'
     # ./lib/spree/core/controller_helpers/respond_with.rb:24:in `respond_with'
     # ./app/controllers/admin/resource_controller.rb:22:in `edit'
     # ./lib/open_food_network/rack_request_blocker.rb:36:in `call'
     # ------------------
     # --- Caused by: ---
     # NoMethodError:
     #   undefined method `add_check_if_single' for #<#<Class:0x0000564501a3c838>:0x00007f446cdd68e8>
     #   ./app/helpers/application_helper.rb:20:in `method_missing'
2021-05-03 14:17:54 +01:00
Matt-Yorkley
b0787e83b2 Add checkout helper
Fixes:

      Failure/Error: super

      ActionView::Template::Error:
        undefined method `checkout_adjustments_for' for #<#<Class:0x000055f4bd847a30>:0x000055f4bd845c30>
      # ./app/helpers/application_helper.rb:20:in `method_missing'
      # ./app/views/spree/admin/orders/_invoice_table.html.haml:26:in `_app_views_spree_admin_orders__invoice_table_html_haml___3617932924646213210_47254819384740'
      # ./app/views/spree/admin/orders/invoice.html.haml:67:in `_app_views_spree_admin_orders_invoice_html_haml__1476001169744481148_47254819971700'
      # ./app/services/invoice_renderer.rb:8:in `render_to_string'
      # ./app/controllers/spree/admin/orders_controller.rb:81:in `invoice'
      # ./spec/support/controller_requests_helper.rb:49:in `process_action_with_route'
      # ./spec/support/controller_requests_helper.rb:23:in `spree_get'
      # ./spec/controllers/spree/admin/orders/invoices_spec.rb:58:in `block (6 levels) in <top (required)>'
      # ------------------
      # --- Caused by: ---
      # NoMethodError:
      #   undefined method `checkout_adjustments_for' for #<#<Class:0x000055f4bd847a30>:0x000055f4bd845c30>
      #   ./app/helpers/application_helper.rb:20:in `method_missing'
2021-05-03 14:17:54 +01:00
Luis Ramos
1b4930de8f Fix mimemagic 036 yank issue 2021-05-03 14:17:54 +01:00
Matt-Yorkley
f874397115 Fix errors in PermittedAttributes::OrderCycle 2021-05-03 14:17:54 +01:00
Matt-Yorkley
5fc60f53ba Update mimemagic gem!
The package maintainer nuked this gem last night as part of a major licence change for the repo, and chaos ensued. It's a dependency for ActiveStorage which is now part of Rails. Versions *above* 0.3.5 are now available, and work. All versions below 0.3.6 have been removed without warning (currently used by ~576,971 repos on Github!) D:
2021-05-03 14:17:54 +01:00
Matt-Yorkley
943c00c924 WIP - Update loading of helpers in controllers
Rails has changed the way helpers are loaded. It's a bit weird. It was throwing lots of errors, and recommended using this setting, but now requires that all helpers are loaded explicitly. I'm not sure about this.
2021-05-03 14:17:54 +01:00
Matt-Yorkley
138f00876b Update Rails to 5.2 2021-05-03 14:17:54 +01:00
Transifex-Openfoodnetwork
b00dcecd52 Updating translations for config/locales/en_GB.yml 2021-05-03 18:16:39 +10:00
dependabot[bot]
d3b3ed3b9c Bump test-prof from 1.0.2 to 1.0.3
Bumps [test-prof](https://github.com/test-prof/test-prof) from 1.0.2 to 1.0.3.
- [Release notes](https://github.com/test-prof/test-prof/releases)
- [Changelog](https://github.com/test-prof/test-prof/blob/master/CHANGELOG.md)
- [Commits](https://github.com/test-prof/test-prof/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-03 05:47:40 +00:00
filipefurtad0
19768e1398 adds coverage for product deletion and cloning 2021-05-02 18:33:13 +01:00
Matt-Yorkley
7c2d77a3ee Fix assertion in ModelSet test
The mismatched use of hash attributes as strings and hash attributes as symbols here (attrs['name'] and attrs[:name]) meant that the conditional was not returning the expected results in the test.
2021-05-02 13:42:38 +01:00
Matt-Yorkley
2560757ea2 Change Enterprise after_create callback to after_create_commit
As a general rule, if you're triggering an email job as part of an after create/save callback, it should use after commit instead.

Why? The transaction can't finish until after the record is persisted (the data is committed) which includes the logic in all callbacks. So for example if the transaction fails after the email job has been placed it will be rolled back, but the email job will already be in the queue, and it'll be referencing a record that doesn't actually exist (due to the rollback).
2021-05-02 13:23:31 +01:00
Matt-Yorkley
9d23c0d9e2 Reorder has_many relationship with :through option
If it's using :through it should be defined after the relationship it's connected to
2021-05-01 16:20:36 +01:00
Matt-Yorkley
7948c5943d Remove #deleted? method from Product and Variant
This method is already supplied via the paranoia gem, there's no need to re-implement it here.
2021-05-01 12:54:33 +01:00
Matt-Yorkley
2eb17dbbd1 Remove currency from OrderContents
The currency argument here is not actually used anywhere. The related conditional logic is also not covered in any tests.
2021-05-01 11:10:51 +01:00
Transifex-Openfoodnetwork
0a9fc429ac Updating translations for config/locales/de_DE.yml 2021-05-01 08:32:50 +10:00
Andy Brett
8672969798 Merge pull request #7515 from openfoodfoundation/dependabot/bundler/devise-4.8.0
Bump devise from 4.7.3 to 4.8.0
2021-04-30 11:24:20 -07:00
Andy Brett
1be730fcfb Merge pull request #7512 from Matt-Yorkley/package-refactor
Package update
2021-04-30 08:51:51 -07:00
Transifex-Openfoodnetwork
7fd82540ce Updating translations for config/locales/en_IE.yml 2021-05-01 00:27:53 +10:00
Matt-Yorkley
e290c128bf Fix error in Api::ShipmentController#update with :unlock parameter
This is a generic issue caused by a clash between state machines trying to define (or failing to define) the #open method on adjustments as part of their state changes interface. This method is already defined in Object. For more details, see: bb42e33bf7/lib/state_machines/machine.rb (L323-L350)
2021-04-30 14:13:22 +01:00
Matt-Yorkley
95a73704a2 Add more test coverage to Api::ShipmentController#update 2021-04-30 14:09:32 +01:00
Matt-Yorkley
b843b871f6 Ensure order totals and payment/shipment states are correct when changing shipping method on a completed order.
This used to happen via an after_save callback in Shipment, which called `order.update!`. That has recently been removed. After changing a shipment's selected shipping rate (shipping method), we need to ensure the order's totals and states are updated. We don't need to update all of the order's adjustments though (see previous commit).

FYI Spree handled this issue like this: 24388485ed, but there are lots of things about that commit that are clearly awful, like: params handling in a model, duplication of Order::Updater logic across the codebase, the Shipment class having responsiblity for knowing which things need to be updated on the order, etc. The result is ultimately the same as what we're doing here though.
2021-04-30 12:57:01 +01:00
Matt-Yorkley
925676f136 Split Order::Updater#update into two methods
There are two distinct (and very important) operations happening here. The first is to update all adjustments (which can be *incredibly* expensive) and the second is to ensure the order's totals and shipping/payment states are correct. There are lots of places where we currently do both of these things where in fact we only need to do the latter (and skip the really expensive part).
2021-04-30 12:48:53 +01:00
Matt-Yorkley
d3f41f14c7 Add test coverage for Api::ShipmentsController#update 2021-04-30 12:45:49 +01:00
Matt-Yorkley
045ce73c83 Simplify shipment controller params 2021-04-30 12:20:47 +01:00
Matt-Yorkley
932d000c9d Improve shipping method factory
You can now specify an amount for the flat_rate option.
2021-04-30 12:19:43 +01:00
Matt-Yorkley
c7ce10f998 Handle order objects with no distributor 2021-04-30 11:12:41 +01:00
Matt-Yorkley
5b29243847 Delete unused method Stock::Package#currency 2021-04-30 11:10:20 +01:00
Matt-Yorkley
3897c3af68 Refactor Stock::Package#shipping_methods 2021-04-30 11:10:20 +01:00
Matt-Yorkley
c3c396eaea Add soft-deletion test coverage to Package#shipping_methods 2021-04-30 11:10:19 +01:00
Pau Perez
03b2e558b3 Update all locales with the latest Transifex translations 2021-04-30 11:58:13 +02:00
Pau Pérez Fabregat
fca4fde9a6 Merge pull request #7518 from openfoodfoundation/transifex
Transifex
2021-04-30 11:54:01 +02:00
Pau Pérez Fabregat
057bcddee9 Merge pull request #7478 from jibees/7458-get-products-on-order-cycle-change-events
Get the whole list of products on order cycle changes
2021-04-30 11:39:15 +02:00
Transifex-Openfoodnetwork
05b1e598e0 Updating translations for config/locales/es.yml 2021-04-30 19:37:16 +10:00
Transifex-Openfoodnetwork
0faee508b5 Updating translations for config/locales/ca.yml 2021-04-30 19:34:42 +10:00
Pau Pérez Fabregat
3aaa818d00 Merge pull request #7516 from openfoodfoundation/transifex
Transifex
2021-04-30 11:30:07 +02:00
Pau Pérez Fabregat
006cf45f2a Merge pull request #7514 from openfoodfoundation/dependabot/bundler/rack-mini-profiler-2.3.2
Bump rack-mini-profiler from 2.3.1 to 2.3.2
2021-04-30 11:29:28 +02:00
Transifex-Openfoodnetwork
afd17d6cf8 Updating translations for config/locales/ru.yml 2021-04-30 18:45:03 +10:00
Transifex-Openfoodnetwork
f6b6564048 Updating translations for config/locales/fr.yml 2021-04-30 17:48:22 +10:00
Transifex-Openfoodnetwork
9c49040fbb Updating translations for config/locales/en_FR.yml 2021-04-30 17:47:48 +10:00
Transifex-Openfoodnetwork
a8b3d10377 Updating translations for config/locales/fr.yml 2021-04-30 17:45:21 +10:00
dependabot[bot]
c1d246081e Bump devise from 4.7.3 to 4.8.0
Bumps [devise](https://github.com/plataformatec/devise) from 4.7.3 to 4.8.0.
- [Release notes](https://github.com/plataformatec/devise/releases)
- [Changelog](https://github.com/heartcombo/devise/blob/master/CHANGELOG.md)
- [Commits](https://github.com/plataformatec/devise/compare/v4.7.3...v4.8.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-30 05:20:39 +00:00
dependabot[bot]
cf6545e501 Bump rack-mini-profiler from 2.3.1 to 2.3.2
Bumps [rack-mini-profiler](https://github.com/MiniProfiler/rack-mini-profiler) from 2.3.1 to 2.3.2.
- [Release notes](https://github.com/MiniProfiler/rack-mini-profiler/releases)
- [Changelog](https://github.com/MiniProfiler/rack-mini-profiler/blob/master/CHANGELOG.md)
- [Commits](https://github.com/MiniProfiler/rack-mini-profiler/compare/v2.3.1...v2.3.2)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-30 05:17:41 +00:00
Andy Brett
f64d5a9f59 Merge pull request #7438 from jibees/7353-fix-OC-display-issue-text-on-two-lines
Change the position of order_cycle component into a shop front
2021-04-29 14:05:06 -07:00
Andy Brett
c069a23926 Merge pull request #7476 from cillian/admin-stripe-elements-width
Increase the width of Stripe Elements fields in admin so they don't overlap
2021-04-29 14:04:44 -07:00
Andy Brett
8ba139c6fb Merge pull request #6825 from julesemmac/6584-map-location-confirm
6584 map location confirm
2021-04-29 14:04:06 -07:00
Matt-Yorkley
0291a7c471 Merge pull request #7482 from Matt-Yorkley/updater-update
Updater update
2021-04-29 21:12:15 +02:00
Andy Brett
699f1c4f41 Merge pull request #7497 from andrewpbrett/fix-double-stripe-payments
Use capture! if payment is already authorized
2021-04-29 08:35:19 -07:00
Jean-Baptiste Bellet
5a3771fc42 Add special config to avoid a inconsistant LoadError
Error is
```
Failure/Error: @app.call(env)
     LoadError:
       Unable to autoload constant Api::V0::OrderCyclesController, expected /Users/jibees/dev/openfoodnetwork/app/controllers/api/v0/order_cycles_controller.rb to define it
```
2021-04-29 15:31:24 +02:00
Pau Pérez Fabregat
6c5db0f836 Merge pull request #7507 from Matt-Yorkley/shipment-state-update
Shipment callback state update
2021-04-29 12:01:55 +02:00
Matt-Yorkley
2f49d089ea Use Time.zone.now 2021-04-29 08:56:17 +01:00
Matt-Yorkley
290c1d0ebf Bring in shipment state updating from Spree 2.2 2021-04-28 21:43:28 +01:00
Matt-Yorkley
2fda550821 Add test for shipment state after ship action 2021-04-28 21:40:08 +01:00
Guido Oliveira
84285ff985 prevent deleting only item in confirmed order 2021-04-28 17:37:28 -03:00
Andy Brett
4f246da79f add feature spec 2021-04-28 11:25:43 -07:00
Andy Brett
73e5fd3f5b use method to clarify intent on payment intents 2021-04-28 10:43:06 -07:00
Andy Brett
4736013946 update spec 2021-04-28 10:43:06 -07:00
Pau Pérez Fabregat
6ee6e4ed04 Merge pull request #7472 from openfoodfoundation/transifex
Transifex
2021-04-28 19:36:43 +02:00
Pau Pérez Fabregat
ef9720aee7 Merge pull request #7461 from andrewpbrett/fix-blocked-bo-orders
Scope variant to take overrides into account in packer
2021-04-28 19:36:02 +02:00
Matt-Yorkley
4bd2fb8930 Merge pull request #7498 from openfoodfoundation/dependabot/bundler/view_component-2.31.1
Bump view_component from 2.31.0 to 2.31.1
2021-04-28 12:47:55 +02:00
dependabot[bot]
2494ba0def Bump view_component from 2.31.0 to 2.31.1
Bumps [view_component](https://github.com/github/view_component) from 2.31.0 to 2.31.1.
- [Release notes](https://github.com/github/view_component/releases)
- [Changelog](https://github.com/github/view_component/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/view_component/compare/v2.31.0...v2.31.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-28 05:28:59 +00:00
Andy Brett
9906afa1a6 use capture! if payment is already authorized 2021-04-27 17:59:03 -07:00
Matt-Yorkley
1d29e277f2 Merge pull request #7493 from Matt-Yorkley/order-states-bug-redux
Reload order before updating in Payment callback
2021-04-27 17:43:34 +02:00
Matt-Yorkley
c7e65185ee Regression test for new order with variant overrides 2021-04-27 07:44:41 -07:00
Matt-Yorkley
22f79fe540 Reload order before updating in Payment callback 2021-04-27 14:27:35 +01:00
Matt-Yorkley
a5a324fd6f Add failing spec for payment and shipment states bug
The order was being left in an unexpected condition here, it's states are not set and there seem to be some weird issues.
2021-04-27 14:27:35 +01:00
Matt-Yorkley
5934b100e9 Test payment and shipment states in checkout spec
If these aren't behaving correctly we need to know about it...
2021-04-27 14:27:35 +01:00
Jean-Baptiste Bellet
81385b63c7 Uncomment (not so) flaky spec 2021-04-27 15:27:16 +02:00
Matt-Yorkley
574d78403d Merge pull request #7433 from coopdevs/raise-on-failed-customer-creation
Notify Bugsnag if customer fails to be created
2021-04-27 12:42:39 +02:00
Matt-Yorkley
3c1889d719 Merge pull request #7490 from openfoodfoundation/dependabot/bundler/view_component-2.31.0
Bump view_component from 2.30.0 to 2.31.0
2021-04-27 12:08:29 +02:00
Jean-Baptiste Bellet
5085501f89 Add automated tests around pagination in product list for a shop
- with two order cycles and go from one to the other
2021-04-27 11:24:56 +02:00
Jean-Baptiste Bellet
07881ede2d Do not trigger loadMore method immediatly
- This avoid to request unwanted resources, ie. the next 10 products of a shop
2021-04-27 11:24:48 +02:00
Jean-Baptiste Bellet
cdbcbf4214 Reinitialize page params when changing order cycle 2021-04-27 11:24:48 +02:00
Jean-Baptiste Bellet
523b957ba7 Initialize activeTaxons and activeProperties
- so there is no unwanted changes (from `undefined` to `[]`) that  would trigger a loadProducts request
2021-04-27 11:24:48 +02:00
Jean-Baptiste Bellet
71466e643f Instanciate only one ProductsCtrl
- instead of 2: therefore, for each shop display, we only request products one time instead of two times.
2021-04-27 11:24:48 +02:00
Matt-Yorkley
cc85bf791a Merge pull request #7481 from openfoodfoundation/dependabot/bundler/codecov-0.5.2
Bump codecov from 0.5.1 to 0.5.2
2021-04-27 09:24:51 +02:00
dependabot[bot]
fa32aecebf Bump view_component from 2.30.0 to 2.31.0
Bumps [view_component](https://github.com/github/view_component) from 2.30.0 to 2.31.0.
- [Release notes](https://github.com/github/view_component/releases)
- [Changelog](https://github.com/github/view_component/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/view_component/compare/v2.30.0...v2.31.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-27 05:26:40 +00:00
Andy Brett
de02acad64 add feature spec 2021-04-26 15:42:36 -07:00
Matt-Yorkley
f52d03fbf4 Refactor Order::Updater#update so we don't call update_totals twice
Calling this method twice on every update is really expensive and not necessary.
2021-04-26 11:46:05 +01:00
Pau Perez
ee01b0162c Write if as a one-liner and avoid extra queries 2021-04-26 12:39:03 +02:00
Pau Perez
002dabb80c Improve spec 2021-04-26 10:15:13 +02:00
Pau Perez
451e05985f Fix spec 2021-04-26 10:15:13 +02:00
Pau Perez
679de40a41 Move specs to where they belong 2021-04-26 10:15:13 +02:00
Pau Perez
5845ace8e9 Don't persist models to test serializer
Serializers don't care whether or not the objects they go through are
persisted in DB. They just convert them.
2021-04-26 10:15:13 +02:00
Pau Perez
c65d82be01 Notify Bugsnag if customer fails to be created
This will hopefully let us see in Bugsnag when #6038 happens and so
we'll have all the diagnostics data. The fact that the `order.distributor`
is optional but mandatory to create the customer already gives us some
clue.
2021-04-26 10:15:12 +02:00
dependabot[bot]
69dd33383c Bump codecov from 0.5.1 to 0.5.2
Bumps [codecov](https://github.com/codecov/codecov-ruby) from 0.5.1 to 0.5.2.
- [Release notes](https://github.com/codecov/codecov-ruby/releases)
- [Changelog](https://github.com/codecov/codecov-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/codecov/codecov-ruby/compare/v0.5.1...v0.5.2)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-26 05:53:44 +00:00
Andy Brett
6153f1c1b4 Merge pull request #7471 from Matt-Yorkley/dead-scopes
Order scopes
2021-04-25 11:51:00 -07:00
Andy Brett
6f20a23d47 Merge pull request #7436 from coopdevs/remove-duplicate-method
Replace duplicate #unauthorized method with module inclusion
2021-04-25 11:26:12 -07:00
Luis Ramos
f357c3ff30 Remove require_dependency or use require
See here https://edgeguides.rubyonrails.org/upgrading_ruby_on_rails.html#require-dependency
2021-04-23 19:20:25 +01:00
Cillian O'Ruanaidh
8cdc4bc3f4 Increase the width of Stripe Elements fields in admin so they don't overlap
The card number and expiry month/year fields were overlapping on the new payment form in the admin area.
2021-04-23 17:54:22 +01:00
Andy Brett
e42b0bb1ae Merge pull request #7469 from openfoodfoundation/dependabot/bundler/view_component-2.30.0
Bump view_component from 2.28.0 to 2.30.0
2021-04-23 09:48:57 -07:00
Andy Brett
5e21480ae0 add packer spec 2021-04-23 09:35:27 -07:00
Matt-Yorkley
0c08e3cb3a Merge pull request #7466 from openfoodfoundation/dependabot/npm_and_yarn/storybook/addon-docs-6.2.9
Bump @storybook/addon-docs from 6.2.7 to 6.2.9
2021-04-23 13:53:04 +02:00
dependabot[bot]
3c9b7db763 Bump @storybook/addon-docs from 6.2.7 to 6.2.9
Bumps [@storybook/addon-docs](https://github.com/storybookjs/storybook/tree/HEAD/addons/docs) from 6.2.7 to 6.2.9.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/v6.2.9/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v6.2.9/addons/docs)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-23 11:49:16 +00:00
Matt-Yorkley
d116d664f5 Merge pull request #7467 from openfoodfoundation/dependabot/npm_and_yarn/storybook/addon-controls-6.2.9
Bump @storybook/addon-controls from 6.2.7 to 6.2.9
2021-04-23 13:47:14 +02:00
dependabot[bot]
ff36cea0b0 Bump @storybook/addon-controls from 6.2.7 to 6.2.9
Bumps [@storybook/addon-controls](https://github.com/storybookjs/storybook/tree/HEAD/addons/controls) from 6.2.7 to 6.2.9.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/v6.2.9/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v6.2.9/addons/controls)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-23 11:30:47 +00:00
Matt-Yorkley
0c6f8e978e Merge pull request #7465 from openfoodfoundation/dependabot/npm_and_yarn/storybook/server-6.2.9
Bump @storybook/server from 6.2.7 to 6.2.9
2021-04-23 13:27:50 +02:00
Pau Perez
e5eb68dffc Replace duplicate method with module inclusion
No reason to risk diverging their implementations. They are exact
copies.

Likewise, there's no need to have to I18n keys with almost the same
content.
2021-04-23 12:03:11 +02:00
Transifex-Openfoodnetwork
35658e984b Updating translations for config/locales/en_IE.yml 2021-04-23 19:43:25 +10:00
Transifex-Openfoodnetwork
a019c73166 Updating translations for config/locales/en_IE.yml 2021-04-23 19:40:16 +10:00
Matt-Yorkley
4938285dd7 Move order query methods to chainable scopes 2021-04-23 10:29:48 +01:00
Matt-Yorkley
caee2eb3e9 Remove dead code in order
These aren't used anywhere
2021-04-23 10:23:40 +01:00
dependabot[bot]
54fd2c5f0f Bump view_component from 2.28.0 to 2.30.0
Bumps [view_component](https://github.com/github/view_component) from 2.28.0 to 2.30.0.
- [Release notes](https://github.com/github/view_component/releases)
- [Changelog](https://github.com/github/view_component/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/view_component/compare/v2.28.0...v2.30.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-23 08:18:44 +00:00
dependabot[bot]
8c76752045 Bump @storybook/server from 6.2.7 to 6.2.9
Bumps [@storybook/server](https://github.com/storybookjs/storybook/tree/HEAD/app/server) from 6.2.7 to 6.2.9.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/v6.2.9/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v6.2.9/app/server)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-23 06:06:24 +00:00
Cillian O'Ruanaidh
af3eb82343 Merge in upstream changes from julesemmac:6584-map-location-confirm and resolve conflicts 2021-04-22 22:34:02 +01:00
Cillian O'Ruanaidh
1e96f92df2 Fix the toggle address confirmed checkbox so the latitude/longitude gets set
Before when you checked and unchecked the checkbox it was toggling the :isConfirmed variable.
2021-04-22 22:16:47 +01:00
Cillian O'Ruanaidh
12704af143 Use after_action calls for geocoding instead of old update.after, create.after calls 2021-04-22 22:13:28 +01:00
Cillian O'Ruanaidh
42d002cee8 Increase the default geocoder timeout to prevent geocoding timeouts in development
The timeout default was 3 before, this changes it to 6. I presume these timeouts could happen in production too.
2021-04-22 22:10:36 +01:00
Cillian O'Ruanaidh
cd97f1a6ef Update angular-google-maps to 2.0.1 instead of 2.4.0 which was breaking /map page.
The master branch uses 2.0.0 but this PR went up to 2.4.0, however that caused the /map page to break and it was difficult to figure out why. We need to update to 2.0.1 because when you drag and drop the location icon during sign up there was an error which is fixed in 2.0.1. Maybe it would be good to upgrade to 2.4.0 at some point but this PR is already quite big.
2021-04-22 22:08:40 +01:00
Andy Brett
56cf43f1c1 scope variant to take overrides into account in packer 2021-04-22 11:45:12 -07:00
Cillian O'Ruanaidh
c41476423b Merge latest master into julesemmac/6584-map-location-confirm and resolve conflict in api/enterprises_controller.rb 2021-04-22 19:43:49 +01:00
Matt-Yorkley
9b52c453db Update all locales with the latest Transifex translations 2021-04-22 19:14:57 +01:00
Pau Pérez Fabregat
cf2e3db645 Merge pull request #7445 from jibees/7403-add-customer-name-into-subscriptions-table
Add customer name into subscriptions list in order to search subscription by customer name
2021-04-22 19:46:49 +02:00
Pau Pérez Fabregat
74968c308c Merge pull request #7448 from openfoodfoundation/dependabot/bundler/knapsack-1.22.0
Bump knapsack from 1.20.0 to 1.22.0
2021-04-22 19:20:30 +02:00
Pau Pérez Fabregat
c1da97527a Merge pull request #7420 from Matt-Yorkley/adjustments-controller
Adjustments controller index
2021-04-22 19:15:28 +02:00
Pau Pérez Fabregat
0194e39bd2 Merge pull request #7437 from jibees/7422-add-flipper-banner
Add banner to Flipper UI to warn the admin users
2021-04-22 18:29:12 +02:00
Matt-Yorkley
123e96eb1e Merge pull request #7284 from jibees/styleguide
Implements our StyleGuide
2021-04-22 18:14:40 +02:00
Matt-Yorkley
bef3f8c51f Merge pull request #7452 from Matt-Yorkley/adjustments-permissions
Update CanCan permissions on adjustments
2021-04-22 18:07:18 +02:00
Andy Brett
cf7efa5589 Merge pull request #7450 from jibees/6205-remove-line-items-empty-error-on-order-creation-in-backoffice
Suppress "Line items can't be blank" message on order creation process
2021-04-22 08:40:51 -07:00
Andy Brett
10834c1d3a Merge pull request #7447 from openfoodfoundation/dependabot/bundler/rubocop-1.13.0
Bump rubocop from 1.12.1 to 1.13.0
2021-04-22 07:22:35 -07:00
Pau Pérez Fabregat
e5610d5424 Merge pull request #7427 from jibees/add-flipper-instrumentation
Instrument Flipper with ActiveSupport
2021-04-22 16:11:30 +02:00
jibees
1c53bbec57 Add banner to Flipper UI to warn the admin users
Add a link (escaped...) to the wiki page

Co-authored-by: Pau Pérez Fabregat <saulopefa@gmail.com>
2021-04-22 15:40:39 +02:00
Jean-Baptiste Bellet
9a670c7821 Print order needs render_with_wicked_pdf
and call WickedPdf::PdfHelper explicitly
2021-04-22 15:18:27 +02:00
Jean-Baptiste Bellet
de592de13a Use the first view component DistributorTitleComponent for a shopfront 2021-04-22 15:08:54 +02:00
Jean-Baptiste Bellet
4781d6cc84 Add new (and first) component: DistributorTitle
- Simple wrapper around `<h3 />` for distributor title, used in the shop front
2021-04-22 15:08:54 +02:00
Jean-Baptiste Bellet
39683bd814 Create first story for ExampleComponent
- Once story has been created, still need to generate the story itself (in json file format). Help with command: `rake view_component_storybook:write_stories_json`
2021-04-22 15:08:54 +02:00
Jean-Baptiste Bellet
57e5214217 Call WickedPdf::PdfHelper#render_to_string_with_wicked_pdf explicitly 2021-04-22 15:08:54 +02:00
Matt-Yorkley
18881180ae Remove WickedPdf monkey-patch on ActionController#render 2021-04-22 15:08:54 +02:00
Matt-Yorkley
453328a97e Configure CORS settings for StoriesController
- Storybook need to access through a GET method on `/rails/stories/**` served by `ViewComponent::Storybook::StoriesController`
 - Configure exact policy with an initialized filter
2021-04-22 15:08:54 +02:00
Maikel Linke
d674490896 Serve assets (css+roboto font) for the preview iframe
- Thus, component can inherit from all CSS rules, rendering is as close as to the truth
 - Still need to import `admin` css file if we want to create components for admin part (and we probably want too). This will probably lead to overlapping problems between all CSS rules...
- This is a bit hacky, but as our CSS files are packed by rails I didn't find any better solution. We could also use any sass loader, but with this solution we can be confident on the fact that the generated CSS is the one used by the server that finally displays the component
2021-04-22 15:08:54 +02:00
Jean-Baptiste Bellet
30bd932ddc Add storybook
- Via `view_component_storybook` : https://github.com/jonspalmer/view_component_storybook
 - Configure both `view_component_storybook` and `storybook`
 - Add two addons: `@storybook/addon-docs` and `@storybook/addon-controls`
Update config comment for clarity
2021-04-22 15:08:54 +02:00
Jean-Baptiste Bellet
390c8a89da Add (very simple) spec for a ViewComponent component
- Add `ViewComponent::TestHelpers` to get the helper method `render_inline`
 - Use Capybara to expect some assertion
2021-04-22 15:08:54 +02:00
Jean-Baptiste Bellet
6c37461c37 Create very first component
- With command: `rails generate component Example title --sidecar`
 - Delete generated spec file
2021-04-22 15:08:54 +02:00
Jean-Baptiste Bellet
e25cb1b65e Add view_components to manage our components
- Documentation : https://viewcomponent.org/
 - Our template engine generator is haml
2021-04-22 15:08:54 +02:00
Jean-Baptiste Bellet
05a00a07ef Add test on order creation and correct display of the error
- The error "Line items can't be blank" should not be displayed when we first arrived on this page after creation but only if we update the page
2021-04-22 10:03:43 +02:00
Jean-Baptiste Bellet
259e758d6e When suppress_error_msg is present do no validate order and redirect
- When creating a new order, it's not necessary to display the "Line items can't be blank" as the order has just been created and the user is rightly doing configuration about line items
2021-04-22 10:03:36 +02:00
Matt-Yorkley
6dc23804a1 Merge pull request #7425 from mkllnk/application-record
Add ApplicationRecord for customisations of models
2021-04-21 23:18:03 +02:00
Matt-Yorkley
ecd433b343 Update permissions on adjustments
The previous permissions assumed that an adjustment's "adjustable" could only be only line items or orders, and that's no longer true. It's now commonly a shipment or a payment as well.
2021-04-21 18:17:20 +01:00
Jean-Baptiste Bellet
da5f1b0b38 Update test for subscriptions search by email and name
- We now display the name of the customer so we can search by its name: add specs about search by email/name
2021-04-21 09:44:30 +02:00
dependabot[bot]
519c04f2e4 Bump knapsack from 1.20.0 to 1.22.0
Bumps [knapsack](https://github.com/KnapsackPro/knapsack) from 1.20.0 to 1.22.0.
- [Release notes](https://github.com/KnapsackPro/knapsack/releases)
- [Changelog](https://github.com/KnapsackPro/knapsack/blob/master/CHANGELOG.md)
- [Commits](https://github.com/KnapsackPro/knapsack/compare/v1.20.0...v1.22.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-21 05:17:32 +00:00
dependabot[bot]
99a857cdf9 Bump rubocop from 1.12.1 to 1.13.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.12.1 to 1.13.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.12.1...v1.13.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-21 05:15:48 +00:00
Andy Brett
479897fcbd Merge pull request #7315 from Matt-Yorkley/double-checkout
Double checkout
2021-04-20 10:44:32 -07:00
Andy Brett
883cc6f96f Merge pull request #7428 from jibees/7426-show-unit-price-in-the-bulk-modal
Show unit price in the bulk buy modal
2021-04-20 10:43:28 -07:00
Jean-Baptiste Bellet
ddb63dff8a Add name of the customers into subscriptions table
- Thus, we can filter subscriptions by customer email
2021-04-20 16:09:48 +02:00
Jean-Baptiste Bellet
5e712fa4c0 Add variable for the zIndex of the navigation header 2021-04-20 13:50:39 +02:00
Jean-Baptiste Bellet
6dbe91b199 Positions the order_cycle according to shop-tabs
- Move from `enterprises/shop.html.haml` to `shopping_shared/_tabs.html.haml` to handle its position correctly
 - Remove marginTop and height to order cycle component and display it relative to parent's bottom (ie. the columns in `tab-buttons`)
- Adjust z-index to display the entire component
2021-04-20 13:50:33 +02:00
Matt-Yorkley
a3b90f3a63 Merge pull request #7443 from mkllnk/order-cycle-factory
Spec customer creation during checkout
2021-04-20 10:08:57 +02:00
Pau Pérez Fabregat
7da0dc0053 Merge pull request #7441 from openfoodfoundation/dependabot/bundler/test-unit-3.4.1
Bump test-unit from 3.4.0 to 3.4.1
2021-04-20 09:49:19 +02:00
Pau Pérez Fabregat
ef7c47d8f1 Merge pull request #7440 from openfoodfoundation/dependabot/bundler/acts_as_list-1.0.4
Bump acts_as_list from 1.0.3 to 1.0.4
2021-04-20 09:04:04 +02:00
Pau Pérez Fabregat
9907c678e4 Merge pull request #7442 from openfoodfoundation/dependabot/bundler/ddtrace-0.48.0
Bump ddtrace from 0.47.0 to 0.48.0
2021-04-20 09:01:58 +02:00
Pau Pérez Fabregat
87624f4c9f Merge pull request #7416 from coopdevs/remove-old-balance-implementation
Remove old balance implementation
2021-04-20 08:51:27 +02:00
Maikel Linke
1753156578 Spec customer creation during checkout
Expanding the controller spec with real data instead of mocks to test
the real callback behaviours.
2021-04-20 16:14:41 +10:00
Maikel Linke
db0e681add Open order cycle factory for passing enterprises
The simple order cycle factory was flexible enough already to work with
given suppliers and distributors. We are now re-using that code so that
you can pass these enterprises when creating a normal order cycle, too.
2021-04-20 16:06:45 +10:00
dependabot[bot]
4dc350408b Bump ddtrace from 0.47.0 to 0.48.0
Bumps [ddtrace](https://github.com/DataDog/dd-trace-rb) from 0.47.0 to 0.48.0.
- [Release notes](https://github.com/DataDog/dd-trace-rb/releases)
- [Changelog](https://github.com/DataDog/dd-trace-rb/blob/master/CHANGELOG.md)
- [Commits](https://github.com/DataDog/dd-trace-rb/compare/v0.47.0...v0.48.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-20 05:26:52 +00:00
dependabot[bot]
8cb9053115 Bump test-unit from 3.4.0 to 3.4.1
Bumps [test-unit](https://github.com/test-unit/test-unit) from 3.4.0 to 3.4.1.
- [Release notes](https://github.com/test-unit/test-unit/releases)
- [Commits](https://github.com/test-unit/test-unit/compare/3.4.0...3.4.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-20 05:26:14 +00:00
dependabot[bot]
f354ace186 Bump acts_as_list from 1.0.3 to 1.0.4
Bumps [acts_as_list](https://github.com/brendon/acts_as_list) from 1.0.3 to 1.0.4.
- [Release notes](https://github.com/brendon/acts_as_list/releases)
- [Changelog](https://github.com/brendon/acts_as_list/blob/master/CHANGELOG.md)
- [Commits](https://github.com/brendon/acts_as_list/compare/v1.0.3...v1.0.4)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-20 05:24:53 +00:00
dependabot[bot]
8b06a735ac Bump jwt from 2.2.2 to 2.2.3
Bumps [jwt](https://github.com/jwt/ruby-jwt) from 2.2.2 to 2.2.3.
- [Release notes](https://github.com/jwt/ruby-jwt/releases)
- [Changelog](https://github.com/jwt/ruby-jwt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jwt/ruby-jwt/compare/v2.2.2...v2.2.3)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-20 05:21:34 +00:00
Andy Brett
aca19edd3b Merge pull request #7421 from andrewpbrett/rails-5-2-prep-2
Prepare for Rails 5.2
2021-04-19 11:32:21 -07:00
Pau Pérez Fabregat
5b0921e6ba Merge pull request #7435 from openfoodfoundation/dependabot/bundler/geocoder-1.6.7
Bump geocoder from 1.6.6 to 1.6.7
2021-04-19 16:55:08 +02:00
Pau Perez
d26c52c2fa Memoize OrderBalance instance
There's no need to create an instance of such class for every call to
one of its methods. The balance is computed each time anyway, so it'll
always be up-to-date.
2021-04-19 11:52:41 +02:00
Pau Perez
5bca7d1f8f Remove the old balance's code branch
This keeps the `OrderBalance` abstraction but removes the old code now
that the feature is enabled for all users in all instances and there are
no bugs reported. It's become dead code.
2021-04-19 11:52:41 +02:00
dependabot[bot]
f999e04020 Bump geocoder from 1.6.6 to 1.6.7
Bumps [geocoder](https://github.com/alexreisner/geocoder) from 1.6.6 to 1.6.7.
- [Release notes](https://github.com/alexreisner/geocoder/releases)
- [Changelog](https://github.com/alexreisner/geocoder/blob/master/CHANGELOG.md)
- [Commits](https://github.com/alexreisner/geocoder/compare/v1.6.6...v1.6.7)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-19 06:05:20 +00:00
Andy Brett
9bddf5b00f Merge pull request #7432 from coopdevs/add-tests-to-customers
Add tests to customers
2021-04-17 11:28:24 -07:00
Pau Perez
fd29030bf9 Doc through specs how customer creation works 2021-04-16 13:34:35 +02:00
Pau Perez
5087ca709a Make method stick to Boolean instead of Nil 2021-04-16 13:23:56 +02:00
Pau Perez
e30ddf3f77 Test and simplify #require_customer? 2021-04-16 13:08:42 +02:00
Jean-Baptiste Bellet
8b3a178d97 Increase zIndex of the tooltip as it's now displayed inside modal
specify zIndex by using vars from modal zIndex
2021-04-16 11:09:26 +02:00
Jean-Baptiste Bellet
e0987c52ed Add unit price information into the bulk buy modal
- Pass a parameter to scope: showunitprice and display unit price information if it's true
2021-04-16 11:09:05 +02:00
Jean-Baptiste Bellet
f9aab2ef5f Adjust little cross inside blue circle to close tooltip 2021-04-16 11:08:57 +02:00
Maikel Linke
de6a3fdf2c Update locales 2021-04-16 09:26:45 +10:00
Maikel
19e48cb0cb Merge pull request #7424 from openfoodfoundation/transifex
Transifex
2021-04-16 09:20:25 +10:00
Andy Brett
472b0b5964 Merge pull request #7412 from andrewpbrett/no-zero-unit-values
Add greater-than-zero validation to variant unit_value
2021-04-15 10:05:38 -07:00
Andy Brett
4aa2ce4b58 Merge pull request #7362 from richardc2117/master
Fixes Alphabetical Sorting In Packing Reports
2021-04-15 09:50:02 -07:00
Andy Brett
c0bd8f0248 Merge pull request #7419 from Matt-Yorkley/adjustments-display
Don't show duplicate adjustments in order edit
2021-04-15 09:49:38 -07:00
Andy Brett
a9fe6c787d add database constraint for variant unit_value 2021-04-15 09:43:57 -07:00
Andy Brett
8e14e0e950 add variant spec 2021-04-15 09:43:22 -07:00
Andy Brett
f85ef86b1b update spec with valid variant 2021-04-15 09:43:22 -07:00
Andy Brett
94ca2f3079 add validation to variant unit_value 2021-04-15 09:43:22 -07:00
Pau Pérez Fabregat
5ddccc79ae Merge pull request #7404 from jibees/7180-variant-unit-scale-field-invalid-when-editing-a-product
Fix Variant Unit Scale field initialization in Edit Product form
2021-04-15 18:20:31 +02:00
Matt-Yorkley
d29c0cdcb7 Don't show line item adjustments in Admin::OrdersHelper#order_adjustments_for_display
Line item adjustments are displayed separately, if we don't filter them here they get displayed twice.
2021-04-15 14:23:37 +01:00
Matt-Yorkley
206d9e06ea Reinstate old logic for adjustments controller
Certain types of adjustments (eg enterprise fees) cannot really be changed arbitrarily; when the order is saved and "recalculated" the values will be reset. The adjustments are still shown in the main order edit tab, but are not editable in the adjustments tab.
2021-04-15 14:00:48 +01:00
Matt-Yorkley
50da77c6db Hide tax rate selection when editing non-admin adjustments 2021-04-15 13:59:05 +01:00
Jean-Baptiste Bellet
1e0230aae2 Instrument Flipper with ActiveSupport 2021-04-15 14:05:15 +02:00
Transifex-Openfoodnetwork
468eb6423e Updating translations for config/locales/nb.yml 2021-04-15 21:14:45 +10:00
Maikel Linke
5c0cdce597 Confine Permalinks patch to application
We were also patching ActiveRecord::Relation for the `#find_by_param`
methods but we are not using those any more. They were deprecated a
while ago. We now use `find_by(permalink: ...)`.
2021-04-15 15:59:03 +10:00
Maikel Linke
125374c488 Confine Preferences patch to our app 2021-04-15 15:59:03 +10:00
Maikel Linke
1893313c40 Confine DelegateBelongsTo patch to our app 2021-04-15 15:59:03 +10:00
Maikel Linke
1364b878fe Add ApplicationRecord for customisations
Rails 5 introduced this new class to confine application-specific monkey
patches to our models only, and not leak into other libraries using
ActiveRecord::Base.

https://bigbinary.com/blog/application-record-in-rails-5
2021-04-15 15:59:03 +10:00
Transifex-Openfoodnetwork
b79465ba4f Updating translations for config/locales/en_US.yml 2021-04-15 12:03:24 +10:00
Transifex-Openfoodnetwork
6b60a40b45 Updating translations for config/locales/en_US.yml 2021-04-15 12:00:23 +10:00
Maikel
0c182c4606 Merge pull request #7259 from jibees/7193-implements-feature-toggle-with-flipper
Implements feature toggle with flipper
2021-04-15 11:33:12 +10:00
Matt-Yorkley
a1317be19b Merge pull request #7329 from Matt-Yorkley/adjustments-polymorphic
[Adjustments] Polymorphic reduction
2021-04-14 19:12:16 +02:00
Matt-Yorkley
fa14a80295 Adapt order payment creation in failing specs
In the test setups here order.payments is empty
2021-04-14 09:22:31 -07:00
Matt-Yorkley
a4cb698d6f Don't reload payments in after_save callback 2021-04-14 09:22:18 -07:00
Andy Brett
ebb413bd83 only reload payments after updating order 2021-04-14 09:22:02 -07:00
Luis Ramos
4590db1cc2 Fix view spec by adding mocks to helper methods 2021-04-14 09:20:30 -07:00
Andy Brett
3e14138a3f fix ./spec/features/admin/customers_spec.rb:27 2021-04-14 09:19:13 -07:00
Luis Ramos
6fab8db1b0 Fix cart_service_spec to adapt to the actual usage of it from cart_controller, params are now sent inside a Parameters object, not as a hash 2021-04-14 09:18:29 -07:00
Luis Ramos
0707f3c0cc Switch from map, that does not exist in ActionController::Parameters, to each 2021-04-14 09:17:53 -07:00
Matt-Yorkley
7fc29961e2 Fix handling of other empty params 2021-04-14 09:16:39 -07:00
Matt-Yorkley
72c6935ff8 Fix handling of empty order cycle params
This guard clause was returning an instance of an unpermitted Params object (containing a blank hash) here, which was causing unexpected results in various places. Returning a blank hash explicitly resolved the issue.

Fixes:

4) Admin::OrderCyclesController create as a manager of a shop when creation is successful returns success: true and a valid edit path
     Failure/Error:
       @order_cycle_params ||= PermittedAttributes::OrderCycle.new(params).call.
         to_h.with_indifferent_access

     ActionController::UnfilteredParameters:
       unable to convert unpermitted parameters to hash
     # ./app/controllers/admin/order_cycles_controller.rb:245:in `order_cycle_params'
     # ./app/controllers/admin/order_cycles_controller.rb:44:in `create'
     # ./spec/support/controller_requests_helper.rb:49:in `process_action_with_route'
     # ./spec/support/controller_requests_helper.rb:27:in `spree_post'
     # ./spec/controllers/admin/order_cycles_controller_spec.rb:124:in `block (5 levels) in <module:Admin>'
2021-04-14 09:16:27 -07:00
Matt-Yorkley
6f8ade52eb Persist last_ip_address when loading current_order
Leaving the object with unpersisted changes breaks order locking with this error (in various places):

RuntimeError:
        Locking a record with unpersisted changes is not supported. Use `save` to persist the changes, or `reload` to discard them explicitly.
2021-04-14 09:14:58 -07:00
Jean-Baptiste Bellet
86cba6e904 Remove trailing .0 from variant unit scale
- As VariantUnitManager.variantUnitOptions() returns array formatted like this: `"Weight (g)", "weight_1"` and `product.variant_unit_scale` is formatted like this `weight_1.0` there is no possible match for the <select /> element
 - So, remove the trailing `.0` from `product.variant_unit_scale` to match the options
2021-04-14 16:17:17 +02:00
Jean-Baptiste Bellet
8a3eea7a27 Enable tests
Thanks to @filipefurtad0 you now have tests ready before fixing anything : 👍 🙏
2021-04-14 16:17:17 +02:00
Matt-Yorkley
93affe4e82 Remove previous migration test
It's outdated now.
2021-04-14 12:01:21 +01:00
Matt-Yorkley
83acc3faac Improve test setup where checking ineligible payment fee adjustments 2021-04-14 12:01:21 +01:00
Matt-Yorkley
86977da033 Update enterprise fee test setup 2021-04-14 12:01:21 +01:00
Matt-Yorkley
15edb5b13b Remove more uses of adjustment source association in tests 2021-04-14 12:01:21 +01:00
Matt-Yorkley
e323d016a2 Simplify arguments of #create_adjustment method 2021-04-14 12:01:21 +01:00
Matt-Yorkley
ebce32c57b Update factory and specs 2021-04-14 12:01:21 +01:00
Matt-Yorkley
b6038c01a3 Remove references to Adjustment source 2021-04-14 12:01:21 +01:00
Matt-Yorkley
6474323282 Remove source association from Spree::Adjustment 2021-04-14 12:01:21 +01:00
Matt-Yorkley
76112fcf40 Merge pull request #7413 from andrewpbrett/rails-5-2-prep
Rails 5 2 prep
2021-04-14 12:37:02 +02:00
Matt-Yorkley
94bff6c512 Merge pull request #7414 from openfoodfoundation/dependabot/bundler/unicorn-worker-killer-0.4.5
Bump unicorn-worker-killer from 0.4.4 to 0.4.5
2021-04-14 11:41:14 +02:00
Pau Pérez Fabregat
3d7ac3c965 Merge pull request #7411 from openfoodfoundation/transifex
Transifex
2021-04-14 11:24:22 +02:00
dependabot[bot]
ed8a35df8c Bump unicorn-worker-killer from 0.4.4 to 0.4.5
Bumps [unicorn-worker-killer](https://github.com/kzk/unicorn-worker-killer) from 0.4.4 to 0.4.5.
- [Release notes](https://github.com/kzk/unicorn-worker-killer/releases)
- [Changelog](https://github.com/kzk/unicorn-worker-killer/blob/master/ChangeLog)
- [Commits](https://github.com/kzk/unicorn-worker-killer/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-14 05:31:14 +00:00
Matt-Yorkley
4bd7f964d0 Fix LocalizedNumber issues 2021-04-13 16:56:03 -07:00
Andy Brett
67e41f4548 remove check for connected? 2021-04-13 16:55:49 -07:00
Matt-Yorkley
39fa315ecc Guard against calls to the database during db:create
Rails 5.2 has changed the way initializers are called during certain rake tasks including `db:create`. Initializers that were previously not loaded are now loaded (basically the whole app is loaded). This means any calls to #table_exists? that appear in the app will throw fatal errors as the database doesn't exist yet during that task, but those calls are made before `db:create` has even started, which means the database can't be created.

There are also a few other places in Spree code where #table_exists? is called, and they already call #connected? first to guard against this issue.
2021-04-13 16:55:19 -07:00
Luis Ramos
e4a6afab81 Add needed helper to BulkInvoiceRenderer spec 2021-04-13 16:54:32 -07:00
Luis Ramos
ae7e1677f7 Add needed helper to BulkInvoiceService spec 2021-04-13 16:54:32 -07:00
Luis Ramos
f61c04e314 Adapt helpers to make view spec green 2021-04-13 16:54:32 -07:00
Luis Ramos
abd6faf686 Adapt routes and helpers to make view spec green 2021-04-13 16:54:32 -07:00
Luis Ramos
2c05478b2f Adapt routes and helpers to make view spec green 2021-04-13 16:54:32 -07:00
Luis Ramos
049c2b59ca Adapt routes and helpers to make view spec green 2021-04-13 16:54:32 -07:00
Matt-Yorkley
ab4660ecd0 Fix callback in Classification and update spec
Fixes:

2) Spree::Classification won't destroy if classification is the primary taxon
(Used from /home/runner/work/openfoodnetwork/openfoodnetwork/spec/models/enterprise_group_spec.rb:43:in `block (3 levels) in <top (required)>')
     Failure/Error: expect(classification.destroy).to be false
2021-04-13 16:54:32 -07:00
Matt-Yorkley
3f6fcf3350 Fix taxon error handling in Api::TaxonsController
Fixes:

Api::V0::TaxonsController as an admin cannot create a new taxon with invalid taxonomy_id
     Failure/Error: expect(json_response["error"]).to eq("Invalid resource. Please fix errors and try again.")

       expected: "Invalid resource. Please fix errors and try again."
            got: nil

       (compared using ==)
     # ./spec/controllers/api/v0/taxons_controller_spec.rb:105:in `block (3 levels) in <top (required)>'
2021-04-13 16:54:31 -07:00
Matt-Yorkley
a891ac1cdf Fix deprecated use of #stub in payment spec
Fixes:

Using `stub` from rspec-mocks' old `:should` syntax without explicitly enabling the syntax is deprecated. Use the new `:expect` syntax or explicitly enable `:should` instead. Called from /home/runner/work/openfoodnetwork/openfoodnetwork/spec/models/spree/payment_spec.rb:10:in `block (3 levels) in <top (required)>'.
     RuntimeError:

       stubbed models are not allowed to access the database - Spree::Product#touch(updated_at,{:time=>2021-04-10 14:24:50 UTC})
2021-04-13 16:54:31 -07:00
Matt-Yorkley
be6fd23ebc Fix unpersisted changes in checkout controller specs
The test setup left the object with unsaved changes, which doesn't work nicely with the new order locking added recently on the edit action.

Fixes ~5 specs including:

5) CheckoutController redirection to cart and stripe redirects when some items are out of stock
     Failure/Error:
       order.with_lock do
         lock_variants_of(order)
         yield
       end

     RuntimeError:
       Locking a record with unpersisted changes is not supported. Use `save` to persist the changes, or `reload` to discard them explicitly.
     # ./app/services/current_order_locker.rb:22:in `lock_order_and_variants'
     # ./app/services/current_order_locker.rb:11:in `around'
     # ./spec/controllers/checkout_controller_spec.rb:57:in `block (3 levels) in <top (required)>'
2021-04-13 16:54:31 -07:00
Andy Brett
a0b4925943 update migration versions 2021-04-13 15:51:14 -07:00
Matt-Yorkley
fbda3c15ff Fix deprecated use of #stub in payment spec
Fixes:

Using `stub` from rspec-mocks' old `:should` syntax without explicitly enabling the syntax is deprecated. Use the new `:expect` syntax or explicitly enable `:should` instead. Called from /home/runner/work/openfoodnetwork/openfoodnetwork/spec/models/spree/payment_spec.rb:10:in `block (3 levels) in <top (required)>'.
     RuntimeError:

       stubbed models are not allowed to access the database - Spree::Product#touch(updated_at,{:time=>2021-04-10 14:24:50 UTC})
2021-04-13 15:50:54 -07:00
Matt-Yorkley
3bce1bad62 Add missing Stripe API request stub
The first time the checkout is submitted here it uses the defaults in CheckoutRequestHelper#fill_out_details
2021-04-13 15:41:37 -07:00
Matt-Yorkley
b1416952d0 Fix deprecated syntax for reloading #line_items association 2021-04-13 15:40:12 -07:00
Transifex-Openfoodnetwork
97891dc667 Updating translations for config/locales/en_CA.yml 2021-04-14 06:12:04 +10:00
Transifex-Openfoodnetwork
c730e888e1 Updating translations for config/locales/en_CA.yml 2021-04-14 06:08:56 +10:00
Matt-Yorkley
477dce79df Merge pull request #7407 from Matt-Yorkley/shipping-without-tax
Ensure Shipping Methods can be created with no tax category
2021-04-13 18:45:28 +02:00
Matt-Yorkley
acb593c2f1 Ensure Shipping Methods can be created with no tax category
The option to apply *no* tax category should be present in this dropdown.
2021-04-13 16:40:49 +01:00
Matt-Yorkley
2932b1e39b Merge pull request #7395 from openfoodfoundation/dependabot/bundler/mini_racer-0.4.0
Bump mini_racer from 0.3.1 to 0.4.0
2021-04-13 15:33:41 +02:00
Pau Pérez Fabregat
eab97d6f42 Merge pull request #7400 from openfoodfoundation/transifex
Transifex
2021-04-12 18:29:07 +02:00
Maikel Linke
8a062b05eb Clarify test users in feature toggle spec 2021-04-12 18:26:18 +02:00
Maikel Linke
f242dc8a19 Spec new #flipper_id method 2021-04-12 18:26:18 +02:00
Maikel Linke
5775051e35 Simplify FeatureToggle module
This saves ten lines of code and makes the simplicity of the
FeatureToggle interface clearer.
2021-04-12 18:26:18 +02:00
Jean-Baptiste Bellet
796068439d Enable running Flipper migration
The initializer ran code the needs the database in the migrated state.
The decision is to not initialize anything relative to feature. This has to be done within the FlipperUI by the instance managers.
2021-04-12 18:26:18 +02:00
Maikel Linke
7a0912d5a4 Use Flipper within the OFN FeatureToggle interface
This ensures that we keep the same interface as before and can migrate
to Flipper in a backwards-compatible way.
2021-04-12 18:26:18 +02:00
Maikel Linke
b045a59685 Consider feature toggles without user as well
This is running the same feature toggle logic when a user is given or no
user is given. This allows features to define what to do with guests.
2021-04-12 18:26:18 +02:00
Jean-Baptiste Bellet
a4b53d6ac4 Initialize flipper with default value
- Use the ActiveRecord adapter
 - Use a middle to cache data through memoization (see https://github.com/jnunemaker/flipper/blob/master/docs/Optimization.md)
 - Create the group `admins`: only user which are admins
 - Create `unit_price` feature attached to `admins` group
 - Add method `flipper_id` on User
2021-04-12 18:26:18 +02:00
Jean-Baptiste Bellet
ad71f925be Add gem flipper-active_record to store flipper data
- Creates the migration for flipper: `flipper_features` and `flipper_gates`
2021-04-12 18:26:18 +02:00
Jean-Baptiste Bellet
7cf96d1484 Add flipper to manage our feature toggle
- Also add flipper-ui to have a small UI that can be used by each instance admin to manage feature toggle
- Mount on `/admin/feature-toggle` with same restriction as `/admin`
2021-04-12 18:26:18 +02:00
Pau Pérez Fabregat
a946585029 Merge pull request #7392 from mkllnk/7391-db-connection-pool
Increase DB connection pool size for specs
2021-04-12 18:24:56 +02:00
Matt-Yorkley
0dde8112d2 Add redirect specs for PaypalController#express 2021-04-12 17:23:49 +01:00
Matt-Yorkley
06c01955f5 Rename describe block names to controller actions 2021-04-12 16:44:45 +01:00
Andy Brett
a3ac7a7ffd Merge pull request #7354 from andrewpbrett/uncomment-tag-rule-spec
Uncomment out flaky tag rules spec
2021-04-12 08:17:14 -07:00
Transifex-Openfoodnetwork
07a95b3edf Updating translations for config/locales/ru.yml 2021-04-13 01:08:43 +10:00
Transifex-Openfoodnetwork
addd287e74 Updating translations for config/locales/ru.yml 2021-04-13 01:05:34 +10:00
Pau Pérez Fabregat
bd2484c3e0 Merge pull request #7396 from coopdevs/enable-customer-balance-in-tests
Enable customer_balance toggle in tests
2021-04-12 13:42:49 +02:00
Pau Pérez Fabregat
3f53806ce3 Merge pull request #7397 from openfoodfoundation/transifex
Transifex
2021-04-12 13:16:17 +02:00
Transifex-Openfoodnetwork
a3b88c3279 Updating translations for config/locales/en_GB.yml 2021-04-12 18:39:35 +10:00
Transifex-Openfoodnetwork
e7d652b701 Updating translations for config/locales/en_GB.yml 2021-04-12 18:36:28 +10:00
Transifex-Openfoodnetwork
e1bacad726 Updating translations for config/locales/en_GB.yml 2021-04-12 18:33:15 +10:00
Pau Perez
5cf4aecc26 Enable customer_balance toggle in tests
This makes all tests exercise the new branch that `OrderBalance`
abstracts. It follows up #7363 addressing code review comments.
2021-04-12 09:31:23 +02:00
dependabot[bot]
23c45921de Bump mini_racer from 0.3.1 to 0.4.0
Bumps [mini_racer](https://github.com/discourse/mini_racer) from 0.3.1 to 0.4.0.
- [Release notes](https://github.com/discourse/mini_racer/releases)
- [Changelog](https://github.com/rubyjs/mini_racer/blob/master/CHANGELOG)
- [Commits](https://github.com/discourse/mini_racer/compare/v0.3.1...v0.4.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-12 05:51:04 +00:00
Andy Brett
e90420b581 Merge pull request #7363 from coopdevs/release-balances-to-all-users
Enable customer_balance feature toggle to all users
2021-04-11 21:50:15 -07:00
Andy Brett
14161ba329 Update all locales with the latest Transifex translations 2021-04-11 21:49:37 -07:00
Andy Brett
7283050bc9 Merge pull request #7389 from openfoodfoundation/transifex
Transifex
2021-04-11 21:46:11 -07:00
Maikel Linke
aeaaf8935e Increase DB connection pool size for specs
A spec failed with this message:

  ActiveRecord::ConnectionTimeoutError:
    could not obtain a connection from the pool within 5.000 seconds (waited 5.000 seconds); all pooled connections were in use

The error seems to be raised when trying to authenticate the user
through Devise in a before_action block. Increasing the pool size by one
helped.

I don't know why our app needs more than 5 connections at the same time.
Maybe some gem "forgets" to release connections?
2021-04-12 12:15:59 +10:00
Transifex-Openfoodnetwork
b2d9b4a559 Updating translations for config/locales/de_DE.yml 2021-04-12 01:31:14 +10:00
Transifex-Openfoodnetwork
59754b227c Updating translations for config/locales/de_DE.yml 2021-04-12 01:28:04 +10:00
Andy Brett
d00970e05d Merge pull request #7207 from andrewpbrett/fix-nil-price-subs
Report subscription failures
2021-04-09 12:13:11 -07:00
Andy Brett
190050da17 Merge pull request #7288 from mkllnk/codeclimate
Use the same Rubocop config on Code Climate as locally
2021-04-09 09:32:15 -07:00
Pau Perez
95f29e4252 Remove outdated initializer specs
These no longer make sense since we're enabling customer_balance
unconditionally.
2021-04-09 10:22:21 +02:00
Pau Pérez Fabregat
0900bcadb2 Merge pull request #7330 from Matt-Yorkley/adjustments-deleted-originator
Update unscoping of deleted_at on Adjustment originator association
2021-04-09 09:15:46 +02:00
Pau Pérez Fabregat
92f45badac Merge pull request #7340 from Matt-Yorkley/deleted-enterprise-fees
Add test coverage: deleted enterprise fees
2021-04-09 09:05:11 +02:00
Pau Pérez Fabregat
0e2855ea60 Merge pull request #7328 from Matt-Yorkley/dead-scope
Remove included_tax scope from Adjustment
2021-04-09 09:03:47 +02:00
Pau Perez
bac9f62132 Enable customer_balance to all users
This however makes the tests still pass, which rely on the off-branch
logic of the toggle. We'll work on them next.
2021-04-09 08:20:26 +02:00
Pau Pérez Fabregat
a902230106 Merge pull request #7316 from Matt-Yorkley/dead-code-shipments
DCOTW: #ensure_updated_shipments
2021-04-09 08:03:24 +02:00
ricchen
8c391251b3 added test case for alphabetically sorting 2021-04-08 23:57:33 -04:00
ricchen
61bb1bdcdc fix incorrect last name sorting for packing report 2021-04-08 22:47:04 -04:00
Maikel Linke
1b14755401 Reduce AbcSize for rubocop 2021-04-09 12:15:47 +10:00
Maikel Linke
ce516db20f Replace usage of Spree's action hooks with Rails
We don't need Spree's hooks any more and will remove them. Rails'
version is much simpler.
2021-04-09 12:04:31 +10:00
Cillian O'Ruanaidh
8a4e7d70a9 Pass in owner_id parameter correctly so admin/enterprises#create controller spec doesn't fail 2021-04-09 12:04:31 +10:00
Cillian O'Ruanaidh
a59a340fcd Extract location map from registration form into its own partial, also add missing new lines 2021-04-09 12:04:31 +10:00
Cillian O'Ruanaidh
16b90cfc2e Allow people to set enterprise latitude/longitude manually or automatically.
This for new changes to the enterprise registration/signup flow where a map will be displayed when people are filling in their address. On this map people can check the geocoder has geocoded their address correctly and if not they can manually adjust their latitude/longitude on the map.

But currently every time someone changes their address in the Admin > Enterprise > Address section the address would automatically be geocoded so this could overwrite the latitude/longitude that was set during sign up. To prevent the latitude/longitude from being overwritten this add's a checkbox which people need to explicity click if they want their address to be automatically geocoded, otherwise it will just use the manually configured latitude/longitude.

Note this new feature which allows people to select their location on a map during registration only works with Google maps so far. So if an instance is using Open Street Map this change also adds support for passing a :use_geocoder parameter to the Api::EnterprisesController during registration so that the address will be geocoded on the backend without the use of a map.
2021-04-09 12:03:12 +10:00
julesemmac
5e6ea31ad1 Improving user discover on ofn map
The context for this update is here: https://community.openfoodnetwork.org/t/improving-user-discovery-on-ofn-map/2013

Also with rebasing help from Maikel Linke <mkllnk@web.de>
2021-04-09 12:02:22 +10:00
Andy Brett
199efb1e20 Merge pull request #7351 from Matt-Yorkley/dead-code-discount-order
Dead code: DiscountOrder
2021-04-08 12:48:38 -07:00
Andy Brett
c6be9deb9b Merge pull request #7352 from Matt-Yorkley/dead-code-api-helper
Dead code: Spree::Api::ApiHelpers
2021-04-08 12:48:22 -07:00
jibees
ca36996060 Merge pull request #7314 from Matt-Yorkley/order-payment-amount
Rename #charge_shipping_and_payment_fees! to #set_payment_amount!
2021-04-08 21:22:56 +02:00
Andy Brett
48f2ab7ad7 Revert "comment out flaky spec"
This reverts commit fc4634cd67.
2021-04-08 11:07:30 -07:00
Matt-Yorkley
d1755acac5 Merge pull request #7355 from andrewpbrett/rspec-syntax
Update rspec syntax
2021-04-08 20:01:48 +02:00
Andy Brett
67d49b7486 Merge pull request #7342 from luisramos0/dead_code
[Rails 5.2] Delete dead code in variants list page, this is old spree logic
2021-04-08 10:47:02 -07:00
Andy Brett
b78ed85ad3 Merge pull request #7321 from Matt-Yorkley/remove-bugherd
Remove Bugherd
2021-04-08 10:35:17 -07:00
Luis Ramos
706b854d8c Fix rspec syntax 2021-04-08 10:03:11 -07:00
Matt-Yorkley
99265bb75b Merge pull request #7350 from filipefurtad0/feature_toggle_off_staging
Sets feature toggle off on staging, by default
2021-04-08 18:40:11 +02:00
Matt-Yorkley
d72cf18ec4 Merge pull request #7356 from andrewpbrett/fix-shipment-controller-spec
Fix failing shipments controller spec
2021-04-08 18:30:29 +02:00
Andy Brett
c3c482c0fe fix failing spec
Another PR introduced a before_action to the controller, so we have to stub that out to avoid the double receiving an unexpected message
2021-04-08 08:53:35 -07:00
Andy Brett
9b3628a4dd Merge pull request #7299 from andrewpbrett/line-item-fees
Update fees after changing a line item
2021-04-08 07:26:34 -07:00
Matt-Yorkley
704ed128cf Merge pull request #7338 from gucci-ninja/7306-remove-arrows-from-number-input
Remove arrows on number input when adding items
2021-04-08 16:10:02 +02:00
Pau Pérez Fabregat
478c310d4a Merge pull request #7325 from Matt-Yorkley/wkhtmltopdf
Remove wkhtmltopdf-binary version pin and bump gem
2021-04-08 15:23:59 +02:00
Matt-Yorkley
88df425b78 Remove Spree::Api::ApiHelpers
🔥
2021-04-08 12:53:17 +01:00
Matt-Yorkley
e1a10db410 Remove :tag_rule factory and update tests to use alternate (valid) factories 2021-04-08 12:37:45 +01:00
Matt-Yorkley
9a4bbacbaa Update enterprises controller spec to use different (valid) TagRule class 2021-04-08 12:37:19 +01:00
Matt-Yorkley
80d43c714d Remove TagRule::DiscountOrder
This class was removed from the UI in 2016 and hasn't been used since...
2021-04-08 12:37:17 +01:00
Matt-Yorkley
e61fe86d00 Merge pull request #7300 from andrewpbrett/on-demand-max-quantities
Allow any quantity if variant is set to on demand
2021-04-08 12:33:19 +02:00
Matt-Yorkley
034f452f4f Merge pull request #7313 from jibees/7301-fix-line-breaks-on-cart-page
Add non-breaking space to avoid unwanted line breaks on unit price
2021-04-08 12:31:45 +02:00
filipefurtad0
4920db7f91 sets feature toggle off on staging, by default 2021-04-08 09:41:34 +01:00
Pau Pérez Fabregat
b00828cc46 Merge pull request #7311 from Matt-Yorkley/codecov-whitelisting
Exclude /lib/tasks/sample_data from CodeCov
2021-04-08 09:59:56 +02:00
Pau Pérez Fabregat
682cdc4ece Merge pull request #7349 from andrewpbrett/fix-unit-price-nil-method
Guard against variants that use items but have scales
2021-04-08 09:56:48 +02:00
Pau Pérez Fabregat
953454e2fb Merge pull request #7343 from luisramos0/dead_code_2
[Rails 5.2] Remove dead code
2021-04-08 09:48:25 +02:00
Pau Pérez Fabregat
27ac17f95e Merge pull request #7344 from luisramos0/helpers
[Rails 5.2] Fix base helper spec in rails 52
2021-04-08 09:47:49 +02:00
Pau Pérez Fabregat
cd253c625e Merge pull request #7317 from openfoodfoundation/transifex
Transifex
2021-04-08 09:42:11 +02:00
Transifex-Openfoodnetwork
26cf569f41 Updating translations for config/locales/es.yml 2021-04-08 17:18:54 +10:00
Transifex-Openfoodnetwork
0bd2f09c6f Updating translations for config/locales/es.yml 2021-04-08 17:15:47 +10:00
Transifex-Openfoodnetwork
eb0cb6fe86 Updating translations for config/locales/es.yml 2021-04-08 17:12:38 +10:00
Transifex-Openfoodnetwork
629b289f84 Updating translations for config/locales/ca.yml 2021-04-08 17:07:19 +10:00
Transifex-Openfoodnetwork
20e22de40c Updating translations for config/locales/en_FR.yml 2021-04-08 17:01:50 +10:00
Transifex-Openfoodnetwork
f241620682 Updating translations for config/locales/fr.yml 2021-04-08 17:01:40 +10:00
Andy Brett
2128675e95 Merge pull request #7236 from Matt-Yorkley/exchange-deadlocks
Update Exchange touch on Enterprise to use #touch_later
2021-04-07 20:54:03 -07:00
Andy Brett
a60b4a41c5 guard against variants that use items but have scales 2021-04-07 18:31:15 -07:00
Maikel
b83340ac45 Merge pull request #7287 from mkllnk/7166-cancelled-stock
Disallow changes of canceled order
2021-04-08 11:28:35 +10:00
Maikel Linke
42543bfaf7 Add flash when order cannot be changed 2021-04-08 09:24:39 +10:00
Maikel Linke
cf22a864f3 Fix typo in spec description 2021-04-08 09:24:39 +10:00
Maikel Linke
bfa5d443f1 Don't change canceled orders
We have a PR already that removes the UI for this when the order is
canceled. Implementing it on controller-side makes sure that it doesn't
happen accidentally if the user has multiple tabs open.
2021-04-08 09:24:39 +10:00
Maikel Linke
f0d5bf0ab5 Disallow changes of canceled order 2021-04-08 09:24:39 +10:00
Maikel Linke
f2a2cbd3f9 Spec stock bug when changing canceled orders
We decided to disallow changing canceled orders in a way that would
affect stock or totals.
2021-04-08 09:24:39 +10:00
Maikel Linke
8079fb0315 Add specs for stock changes 2021-04-08 09:24:39 +10:00
Maikel Linke
e1d22aec83 Prepare for more shipment specs with different context
This commit is best viewed ignoring whitespaces.
2021-04-08 09:24:39 +10:00
Maikel Linke
c5e72f8563 Test shipment changes more precisely 2021-04-08 09:24:39 +10:00
Maikel Linke
65b37b249d Prepare spec code for re-use 2021-04-08 09:24:39 +10:00
Maikel Linke
d571bc731b Style spec with rubocop -a 2021-04-08 09:24:39 +10:00
Luis Ramos
026c0640c4 Remove dead code 2021-04-07 23:31:43 +01:00
Luis Ramos
c33cf67ec7 Fix base helper spec in rails 52 2021-04-07 23:25:14 +01:00
Luis Ramos
ec6bb7f9fe Delete dead code, this is old spree logic 2021-04-07 22:55:06 +01:00
gucci-ninja
d70c2b99fd Remove arrows on number input when adding items 2021-04-07 14:32:29 -04:00
Matt-Yorkley
ea6540838a Add test coverage for hard-deleted EnterpriseFee case when editing orders 2021-04-07 18:53:24 +01:00
Matt-Yorkley
d385c1ad4d Soft-delete return authorizations 2021-04-07 18:11:06 +01:00
Matt-Yorkley
4043e19910 Add deleted_at to spree_return_authorizations 2021-04-07 18:10:07 +01:00
Matt-Yorkley
52c7abf1c0 Merge pull request #7334 from Matt-Yorkley/payment-reports-error
Fix outstanding balance sum in payment report
2021-04-07 13:47:45 +02:00
Matt-Yorkley
05b8b8e9db Fix outstanding balance sum in payment report 2021-04-07 10:56:20 +01:00
Matt-Yorkley
2ed1aaf575 Update unscoping of deleted_at on originator association 2021-04-07 00:26:01 +01:00
Transifex-Openfoodnetwork
5e99294f79 Updating translations for config/locales/en_GB.yml 2021-04-07 08:33:57 +10:00
Transifex-Openfoodnetwork
0888658431 Updating translations for config/locales/fr.yml 2021-04-07 08:33:53 +10:00
Transifex-Openfoodnetwork
85cc9be07b Updating translations for config/locales/en_GB.yml 2021-04-07 08:30:57 +10:00
Transifex-Openfoodnetwork
b34c2d3b9f Updating translations for config/locales/ru.yml 2021-04-07 08:30:52 +10:00
Transifex-Openfoodnetwork
837130bebe Updating translations for config/locales/it.yml 2021-04-07 08:30:49 +10:00
Transifex-Openfoodnetwork
480dc3d4b8 Updating translations for config/locales/fr.yml 2021-04-07 08:30:45 +10:00
Matt-Yorkley
1ce3103aa7 Merge pull request #6924 from Matt-Yorkley/adjustments-shipping-tax
[Adjustments] Shipping tax
2021-04-07 00:21:12 +02:00
Transifex-Openfoodnetwork
27ac53aabc Updating translations for config/locales/it.yml 2021-04-07 05:33:40 +10:00
Transifex-Openfoodnetwork
ffc9da9972 Updating translations for config/locales/en_IE.yml 2021-04-07 05:33:35 +10:00
Transifex-Openfoodnetwork
1fa7035c2f Updating translations for config/locales/it.yml 2021-04-07 05:30:33 +10:00
Transifex-Openfoodnetwork
cedbfbc8ea Updating translations for config/locales/en_IE.yml 2021-04-07 05:30:29 +10:00
Transifex-Openfoodnetwork
3e26ccabeb Updating translations for config/locales/ru.yml 2021-04-07 05:30:26 +10:00
Matt-Yorkley
4a65e5817f Add fieldset title to shipping methods edit form 2021-04-06 20:30:07 +01:00
Matt-Yorkley
01e6397e27 Remove Spree::Config[:shipment_inc_vat]
This is now done per ShippingMethod instead of globally
2021-04-06 20:29:58 +01:00
Andy Brett
2c17d12f6e Merge pull request #7303 from drummer83/independent-update-cart-label
Independent 'update cart' label
2021-04-06 10:59:06 -07:00
Andy Brett
2aeed30775 Merge pull request #7265 from andrewpbrett/freeze-adjustments
Don't allow edits to adjustments for canceled orders
2021-04-06 10:56:27 -07:00
Matt-Yorkley
61b41491fe Remove included_tax scope from Adjustment
This scope is no longer used, and it's name is exactly the same as other method names and database columns on multiple objects, which is quite confusing.
2021-04-06 12:42:14 +01:00
Matt-Yorkley
5c0a968c27 Remove wkhtmltopdf-binary version pin and bump gem
Previously we were tied to a lower version that maintained compatibility with Ubuntu 14 (which we used in Semaphore). We can drop this version pin now and upgrade it. PDF tests should now pass locally if using Ubuntu 20 🎉
2021-04-05 16:16:25 +01:00
Andy Brett
271cc26066 Merge pull request #7319 from openfoodfoundation/dependabot/bundler/rubocop-1.12.1
Bump rubocop from 1.12.0 to 1.12.1
2021-04-05 08:14:35 -07:00
Transifex-Openfoodnetwork
3a45d2781a Updating translations for config/locales/de_DE.yml 2021-04-06 01:10:34 +10:00
Matt-Yorkley
4a18ba256d Add test for paypal controller redirect 2021-04-05 14:00:07 +01:00
Matt-Yorkley
03c36dfd7f Remove Bugherd
🔥
2021-04-05 13:31:13 +01:00
Transifex-Openfoodnetwork
96f5adf0be Updating translations for config/locales/en_GB.yml 2021-04-05 22:06:23 +10:00
dependabot[bot]
1320a12a16 Bump rubocop from 1.12.0 to 1.12.1
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.12.0 to 1.12.1.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.12.0...v1.12.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-05 05:50:26 +00:00
Andy Brett
c30ced2060 put Time.zone back 2021-04-04 12:27:46 -07:00
Transifex-Openfoodnetwork
788601ea02 Updating translations for config/locales/en_CA.yml 2021-04-05 04:54:25 +10:00
Matt-Yorkley
c702b398d6 Add warning comment on migration test isolation 2021-04-04 19:19:06 +01:00
Matt-Yorkley
3092397346 Isolate migration tests 2021-04-04 19:19:06 +01:00
Matt-Yorkley
a2f6ff7b39 Update deprecated params in checkout spec 2021-04-04 19:19:06 +01:00
Matt-Yorkley
76cf239623 Sort ids in test in case ordering is reversed 2021-04-04 19:19:06 +01:00
Matt-Yorkley
ea3044f47a Bring in more explicit model code now that good_migrations disables all access to models 2021-04-04 19:19:06 +01:00
Matt-Yorkley
595389cbea Update stripe spec
The hard-coded order total here was incorrect. It's now correctly including the $3 shipping fee used with that order factory, and the total is actually $13.
2021-04-04 19:19:06 +01:00
Matt-Yorkley
d00bdbe1b8 Add index on spree_shipping_methods.tax_category_id 2021-04-04 19:19:06 +01:00
Matt-Yorkley
4fbbbbca76 Load relevant tax rates in a single query outside of find_each block 2021-04-04 19:19:06 +01:00
Matt-Yorkley
e442187672 Delete unused private method OrderTaxAdjustmentsFetcher#table 2021-04-04 19:19:06 +01:00
Matt-Yorkley
821be3eef5 Update combined queries to use #or 2021-04-04 19:19:06 +01:00
Matt-Yorkley
96d8de35f2 Delete dead code Adjustment#set_included_tax! 2021-04-04 19:19:06 +01:00
Matt-Yorkley
fcdc627ce3 Add fallbacks in migration for migrating locally with RAILS_ENV=test
Instances have these preference values set, but when running this migration locally with RAILS_ENV=test, the preference does not exist in the database.
2021-04-04 19:19:06 +01:00
Matt-Yorkley
fec2b0b7c1 Define models in migration 2021-04-04 19:19:06 +01:00
Matt-Yorkley
903788903b Remove Spree::Config[:shipping_tax_rate] 2021-04-04 19:19:06 +01:00
Matt-Yorkley
a26880a3a1 Update shipment tax fetching in Xero Invoices report 2021-04-04 19:19:06 +01:00
Matt-Yorkley
3c602cad97 Add unit tests for migration 2021-04-04 19:19:06 +01:00
Matt-Yorkley
eb3c2da740 Migrate shipping taxes to adjustments 2021-04-04 19:19:06 +01:00
Matt-Yorkley
63483818d7 Remove dead code
This spec is doing nothing...
2021-04-04 19:19:06 +01:00
Matt-Yorkley
56a01194cd Update shipping tax adjustments specs 2021-04-04 19:19:06 +01:00
Matt-Yorkley
e81270d0d7 Fix adjustment test setups missing order associations
All adjustments must be associated with an order
2021-04-04 19:19:06 +01:00
Matt-Yorkley
bbd4a33a87 Tax adjustments should be open when created
All adjustments get closed during `order.finalize!`, but before that point they should be open.
2021-04-04 19:19:06 +01:00
Matt-Yorkley
6d48471368 Update shipment totals updating 2021-04-04 19:19:06 +01:00
Matt-Yorkley
ac67f7391e Update tax charging in checkout flow 2021-04-04 19:19:06 +01:00
Matt-Yorkley
2ab9602ad7 Increase tested details in Order spec 2021-04-04 19:19:06 +01:00
Matt-Yorkley
d635d70add Update Order::Updater adjustment handling 2021-04-04 19:19:06 +01:00
Matt-Yorkley
93771aeb94 Update orders spec 2021-04-04 19:19:06 +01:00
Matt-Yorkley
2f19428b40 Update orders controller 2021-04-04 19:19:06 +01:00
Matt-Yorkley
1f897b1e44 Update sales tax report spec 2021-04-04 19:19:06 +01:00
Matt-Yorkley
1d1b842e08 Delete dead code 2021-04-04 19:19:06 +01:00
Matt-Yorkley
889b357408 Update Order#total_tax 2021-04-04 19:19:06 +01:00
Matt-Yorkley
2af0afafe9 Update Order#shipping_tax 2021-04-04 19:19:06 +01:00
Matt-Yorkley
ead85e71de Update shipping tax in checkout spec 2021-04-04 19:19:06 +01:00
Matt-Yorkley
a8366a3a72 Update Order::Updater totals counts 2021-04-04 19:19:06 +01:00
Matt-Yorkley
a060b9fe5a Update LineItemsController and order factory 2021-04-04 19:19:06 +01:00
Matt-Yorkley
8b0a9ddb2f Update OrderTaxAdjustmentsFetcher 2021-04-04 19:19:06 +01:00
Matt-Yorkley
7d3288ca53 Remove #to_package calls on shipment calculations 2021-04-04 19:19:06 +01:00
Matt-Yorkley
db07a73bd7 Ensure Adjustment#update! returns an amount 2021-04-04 19:19:06 +01:00
Matt-Yorkley
232286b0be Add adjustment_total to spree_shipments 2021-04-04 19:19:06 +01:00
Matt-Yorkley
7e0aad7c7e Adapt current tax setup to work with shipment taxes
This is a temporary step...
2021-04-04 19:19:06 +01:00
Matt-Yorkley
7425ad5c4a Include ItemAdjustments handling in Adjustment class
Currently only applies to shipments, but will later include line items, etc
2021-04-04 19:19:06 +01:00
Matt-Yorkley
0d5d4aca11 Update tax_rate_factory
The amount is a decimal, so `0.1` here is actually a 10% tax rate. `100` is ridiculous (10000% tax).

Also, the factory fails without a calculator, and it should explicitly be a DefaultTax calculator or it will not be correct.
2021-04-04 19:19:06 +01:00
Matt-Yorkley
0fea92b63d Add :default_tax_calculator factory 2021-04-04 19:19:06 +01:00
Matt-Yorkley
25a739ea75 Remove Shipment #update_adjustment_included_tax 2021-04-04 19:19:06 +01:00
Matt-Yorkley
385b12d83b Add tax total fields to spree_shipments 2021-04-04 19:19:06 +01:00
Matt-Yorkley
9bbe57afda Extract method 2021-04-04 19:19:06 +01:00
Matt-Yorkley
89889bc280 Record tax totals in ItemAdjustments 2021-04-04 19:19:06 +01:00
Matt-Yorkley
605a94e3c9 Use Spree::ItemAdjustments in Shipment callbacks for updating adjustments 2021-04-04 19:19:06 +01:00
Matt-Yorkley
ac9ecdfcbc Introduce Spree::ItemAdjustments class 2021-04-04 19:19:06 +01:00
Matt-Yorkley
45f0082321 Add tax_category_id to shipping method permitted params 2021-04-04 19:19:06 +01:00
Matt-Yorkley
431706b704 Add tax_category_id to spree_shipping_methods 2021-04-04 19:19:06 +01:00
Matt-Yorkley
8fccdbf92f Introduce TaxCategories to ShippingMethods 2021-04-04 19:19:06 +01:00
Transifex-Openfoodnetwork
180fa0beb0 Updating translations for config/locales/en_IE.yml 2021-04-04 08:34:05 +10:00
Transifex-Openfoodnetwork
953756bf2a Updating translations for config/locales/en_US.yml 2021-04-04 08:34:04 +10:00
Transifex-Openfoodnetwork
875105373a Updating translations for config/locales/it.yml 2021-04-04 08:31:04 +10:00
Transifex-Openfoodnetwork
2aa549fe33 Updating translations for config/locales/en_FR.yml 2021-04-04 08:31:00 +10:00
Transifex-Openfoodnetwork
33875a528f Updating translations for config/locales/en_IE.yml 2021-04-04 08:30:59 +10:00
Transifex-Openfoodnetwork
ee056561eb Updating translations for config/locales/fr.yml 2021-04-04 08:30:58 +10:00
Andy Brett
2ee15838d9 Merge pull request #7213 from Matt-Yorkley/optional-bullet
Make bullet activation optional
2021-04-03 13:48:21 -07:00
Andy Brett
b5846592b1 Merge pull request #7260 from jibees/7069-add-automated-tests-for-unit-price-in-backoffice
Add automated tests for unit price in backoffice
2021-04-03 13:43:32 -07:00
Andy Brett
f2e238d0ea refactor view logic to helper 2021-04-03 13:33:09 -07:00
Matt-Yorkley
c895153b58 Remove dead code: #ensure_updated_shipments 2021-04-03 19:47:34 +01:00
Matt-Yorkley
e2e943e394 Update uses of checkout_state route 2021-04-03 19:13:41 +01:00
Matt-Yorkley
fe507f63fc Move checkout_state route from spree to main_app 2021-04-03 19:13:41 +01:00
Andy Brett
5bfd6fd2ba add spec for fee recalculation 2021-04-03 10:54:57 -07:00
Matt-Yorkley
dd73af8e7a Remove duplicate checkout controller 2021-04-03 18:52:05 +01:00
Matt-Yorkley
cb0644ce47 Merge pull request #7312 from openfoodfoundation/transifex
Transifex
2021-04-03 17:32:13 +02:00
Matt-Yorkley
2d647be8b4 Rename #charge_shipping_and_payment_fees! to #set_payment_amount!
This method sets the order's payment amount during the checkout. It doesn't really have anything to do with shipping or payment fees...
2021-04-03 16:14:38 +01:00
Transifex-Openfoodnetwork
9b2255cb20 Updating translations for config/locales/en_US.yml 2021-04-03 14:03:44 +11:00
Transifex-Openfoodnetwork
1159c425b9 Updating translations for config/locales/en_US.yml 2021-04-03 14:03:09 +11:00
Andy Brett
c0cbd1e688 remove new adjustment button for canceled orders 2021-04-02 12:26:59 -07:00
filipefurtad0
a01493725d Merge pull request #7309 from openfoodfoundation/filipefurtad0-add-QA-info
Update README.md
2021-04-02 16:00:16 +01:00
Jean-Baptiste Bellet
6756ffcf42 Add non-breaking space to avoid unwanted line breaks 2021-04-02 16:59:50 +02:00
Transifex-Openfoodnetwork
d7787261ed Updating translations for config/locales/en_IE.yml 2021-04-03 01:54:41 +11:00
Matt-Yorkley
d68b73dd07 Exclude /lib/tasks/sample_data from CodeCov
We will almost certainly *never* invest the required amount of dev time to cover all this non-critical code with tests, so we may as well drop it from the report.
2021-04-02 15:50:01 +01:00
filipefurtad0
857611d232 Update README.md
Adding a line about our new QAs board.
2021-04-02 15:23:15 +01:00
Jean-Baptiste Bellet
9126901578 Add missing key for unit price in new variant form 2021-04-02 15:22:01 +02:00
Jean-Baptiste Bellet
abd2d3f46f Add tests around unit price in backoffice
3 cases:
 - creating a new product
 - creating a new variant
 - editing an existing variant
2021-04-02 15:22:01 +02:00
Jean-Baptiste Bellet
608a28316c Specify right for attribute for <label /> element
- So, `<label />` is rightly linked to its `<input />`
2021-04-02 15:22:01 +02:00
Jean-Baptiste Bellet
76fbb2be84 Use custom input text (instead of :price one)
- Use `variant_unit_price` for `id` attribute and `variant[unit_price]` for `name` attribute
 - Previously, there was an duplicated `#id` on the page because we used `:price`
2021-04-02 15:22:01 +02:00
Pau Perez
d7cadde0a1 Update all locales with the latest Transifex translations 2021-04-02 11:55:52 +02:00
Konrad
7c47102869 Use new independent label for 'update cart'
orders_form_update_cart
2021-04-01 23:30:00 +02:00
Konrad
221a7ce402 Add independent string for 'update cart'
orders_form_update_cart
2021-04-01 23:29:02 +02:00
Pau Pérez Fabregat
003b45d4b9 Merge pull request #7294 from Matt-Yorkley/balance-missing-methods
OrderBalance missing methods
2021-04-01 19:34:57 +02:00
Andy Brett
1eb5ee9266 Merge pull request #7174 from Matt-Yorkley/dead-code-callbacks
Remove Spree ResourceController callbacks
2021-04-01 07:24:44 -07:00
Andy Brett
a9c7f84bd3 Merge pull request #7197 from guidoDutra/5916-fix-content-moves-when-cart-open
fix content moving when cart is open
2021-04-01 07:23:32 -07:00
Andy Brett
4efcd8457c Merge pull request #7227 from jibees/7215-fix-page-content-up/down-move-when-opening-the-unit-price-tooltip
Add some CSS specification to avoid page content up/down move
2021-04-01 07:21:13 -07:00
Andy Brett
8261a33ae4 Merge pull request #7226 from jibees/7223-fix-display-issue-on-unit-price-tooltip-in-cart-sidebar-
Add 'context' variable: used to specify display of the unit price tooltip inside cart sidebar
2021-04-01 07:20:46 -07:00
Andy Brett
7312341fc4 Merge pull request #7233 from jibees/7224-add-unit-price-to-previously-orders-in-the-cart-page
Add unit price for already bought products in cart page
2021-04-01 07:19:36 -07:00
Matt-Yorkley
f94fe452f0 Merge pull request #7191 from mkllnk/fix-deprecation-gateway-mode
Replace ActiveMerchant's deprecated gateway_mode
2021-04-01 13:29:10 +02:00
Matt-Yorkley
2292deebe6 Merge pull request #7232 from mkllnk/7231-timeout
Keep status bar with message without auto-close
2021-04-01 13:23:12 +02:00
Andy Brett
9f0f88de4e allow any quantity if variant is set to on demand 2021-03-31 22:02:32 -07:00
Maikel
3f4b97d006 Merge pull request #7289 from coopdevs/setup-codecov
Add code coverage reporting to our CI build with Codecov
2021-04-01 12:23:33 +11:00
Andy Brett
38f5bfdca2 update fees after changing a line item 2021-03-31 14:17:10 -07:00
Matt-Yorkley
c40928d805 Merge pull request #7167 from Matt-Yorkley/adjustments-returns
[Adjustments] Update return adjustments
2021-03-31 21:33:45 +02:00
Andy Brett
7b391adbac Merge pull request #7290 from openfoodfoundation/dependabot/bundler/i18n-1.8.10
Bump i18n from 1.8.9 to 1.8.10
2021-03-31 09:25:06 -07:00
Matt-Yorkley
93efd3ab8f Merge pull request #7291 from openfoodfoundation/transifex
Transifex
2021-03-31 18:00:36 +02:00
Transifex-Openfoodnetwork
29d3c61b52 Updating translations for config/locales/en_FR.yml 2021-04-01 01:25:28 +11:00
Transifex-Openfoodnetwork
b6b07328ee Updating translations for config/locales/ru.yml 2021-04-01 01:16:03 +11:00
Transifex-Openfoodnetwork
35f6f8e73d Updating translations for config/locales/fr.yml 2021-04-01 00:32:08 +11:00
Matt-Yorkley
bb0cf65ecc Handle OrderBalance comparison operators
These operators get used on the object returned by order_balance in a few places, and were not working correctly.
2021-03-31 13:23:13 +01:00
Matt-Yorkley
a02c505e62 Delegate #to_f and #to_d to #amount in OrderBalance 2021-03-31 13:23:13 +01:00
Matt-Yorkley
77506caca1 Rename OrderBalance methods for clarity 2021-03-31 13:09:17 +01:00
Transifex-Openfoodnetwork
ff82d37a40 Updating translations for config/locales/it.yml 2021-03-31 21:08:45 +11:00
Pau Pérez Fabregat
958023d6da Merge pull request #7183 from filipefurtad0/variant_unit_scale_spec
Covers unit variant changes; adds test to #7180
2021-03-31 11:21:49 +02:00
Pau Perez
7857487bbb Add coverage badge to README 2021-03-31 10:39:29 +02:00
Pau Perez
8a5762afba Remove minimum coverage
This clashes with Codecov coverage uploading. If the tests fail chances
are that they didn't hit the threshold and thus, won't be uploaded to
Codecov.
2021-03-31 10:02:50 +02:00
Pau Perez
b2840aaebf Enable coverage in CI and use Codecov formatter 2021-03-31 10:02:50 +02:00
dependabot[bot]
e43f98405a Bump i18n from 1.8.9 to 1.8.10
Bumps [i18n](https://github.com/ruby-i18n/i18n) from 1.8.9 to 1.8.10.
- [Release notes](https://github.com/ruby-i18n/i18n/releases)
- [Changelog](https://github.com/ruby-i18n/i18n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ruby-i18n/i18n/compare/v1.8.9...v1.8.10)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-31 07:45:51 +00:00
Pau Perez
756b3a6ee5 Upload coverage report after every CI job 2021-03-31 08:56:58 +02:00
Maikel Linke
8f79fe2768 Use the same config on Code Climate as locally
We configured Code Climate to be aware of all open issues instead of
ignoring open issues via the rubocop todo lists. We were hoping that
Code Climate could give us some nice stats like progress if it's aware
of all our open issues. But the graphs don't tell us anything. So it's
better to have one source of truth for our open style issues and that is
our rubocop config in this repository. It contains two todo lists that
document all violations we would like to fix in the future but it's okay
to submit pull requests that don't fix those.

Instead of accepting new style issues in Code Climate, every pull
request with new violations has to add them to the rubocop config. I
hope that this will make rubocop more useful and encourage developers to
reduce code style debt.
2021-03-31 15:25:19 +11:00
Maikel Linke
f8ba256ebf Use bundled version in CodeClimate 2021-03-31 15:22:33 +11:00
Pau Pérez Fabregat
9c468f0557 Merge pull request #7240 from Matt-Yorkley/escalating-paranoia
Escalating paranoia
2021-03-30 22:24:13 +02:00
Matt-Yorkley
f3347229fb Add Variant#default_price test coverage for soft-deletion 2021-03-30 20:25:37 +01:00
Pau Pérez Fabregat
7e255442a5 Merge pull request #7262 from openfoodfoundation/transifex
Transifex
2021-03-30 19:52:45 +02:00
Andy Brett
02009ed48b Merge pull request #7270 from openfoodfoundation/dependabot/bundler/ddtrace-0.47.0
Bump ddtrace from 0.46.0 to 0.47.0
2021-03-30 10:51:22 -07:00
Matt-Yorkley
3f14694b2b Merge pull request #6960 from andrewpbrett/namespace-api
Namespace existing API endpoints to api/v0/*
2021-03-30 19:45:27 +02:00
Pau Pérez Fabregat
d34dd30e51 Merge pull request #7268 from openfoodfoundation/dependabot/bundler/simplecov-0.21.2
Bump simplecov from 0.18.5 to 0.21.2
2021-03-30 19:17:16 +02:00
Andy Brett
0954a13f55 Merge pull request #7273 from openfoodfoundation/dependabot/bundler/angular_rails_csrf-4.5.0
Bump angular_rails_csrf from 4.2.0 to 4.5.0
2021-03-30 10:01:04 -07:00
Andy Brett
38cba66207 Merge pull request #7272 from openfoodfoundation/dependabot/bundler/activemerchant-1.119.0
Bump activemerchant from 1.107.4 to 1.119.0
2021-03-30 09:59:41 -07:00
dependabot[bot]
0d935725e2 Bump angular_rails_csrf from 4.2.0 to 4.5.0
Bumps [angular_rails_csrf](https://github.com/jsanders/angular_rails_csrf) from 4.2.0 to 4.5.0.
- [Release notes](https://github.com/jsanders/angular_rails_csrf/releases)
- [Changelog](https://github.com/jsanders/angular_rails_csrf/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jsanders/angular_rails_csrf/compare/4.2.0...v4.5.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-30 16:43:35 +00:00
Andy Brett
b799a1777f Merge pull request #7271 from openfoodfoundation/dependabot/bundler/acts_as_list-1.0.3
Bump acts_as_list from 0.9.19 to 1.0.3
2021-03-30 09:42:42 -07:00
Andy Brett
3fb2e503f5 Merge pull request #7275 from openfoodfoundation/dependabot/bundler/factory_bot_rails-6.1.0
Bump factory_bot_rails from 5.2.0 to 6.1.0
2021-03-30 09:39:37 -07:00
Matt-Yorkley
cd6ef9e274 Merge pull request #7269 from openfoodfoundation/dependabot/bundler/bugsnag-6.20.0
Bump bugsnag from 6.19.0 to 6.20.0
2021-03-30 18:13:02 +02:00
dependabot[bot]
ce83be4eac Bump factory_bot_rails from 5.2.0 to 6.1.0
Bumps [factory_bot_rails](https://github.com/thoughtbot/factory_bot_rails) from 5.2.0 to 6.1.0.
- [Release notes](https://github.com/thoughtbot/factory_bot_rails/releases)
- [Changelog](https://github.com/thoughtbot/factory_bot_rails/blob/master/NEWS.md)
- [Commits](https://github.com/thoughtbot/factory_bot_rails/compare/v5.2.0...v6.1.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-30 16:04:36 +00:00
Andy Brett
aac4a17c1f Merge pull request #7274 from openfoodfoundation/dependabot/bundler/test-prof-1.0.2
Bump test-prof from 0.11.3 to 1.0.2
2021-03-30 09:01:24 -07:00
dependabot[bot]
0eaa4aeb62 Bump activemerchant from 1.107.4 to 1.119.0
Bumps [activemerchant](https://github.com/activemerchant/active_merchant) from 1.107.4 to 1.119.0.
- [Release notes](https://github.com/activemerchant/active_merchant/releases)
- [Changelog](https://github.com/activemerchant/active_merchant/blob/master/CHANGELOG)
- [Commits](https://github.com/activemerchant/active_merchant/compare/v1.107.4...v1.119.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-30 16:00:49 +00:00
Andy Brett
880075729d Merge pull request #7267 from openfoodfoundation/dependabot/bundler/capybara-3.35.3
Bump capybara from 3.32.2 to 3.35.3
2021-03-30 08:59:37 -07:00
Andy Brett
dee2004305 Merge pull request #7276 from openfoodfoundation/dependabot/bundler/ffaker-2.18.0
Bump ffaker from 2.16.0 to 2.18.0
2021-03-30 08:58:12 -07:00
Andy Brett
57035ae0cc Merge pull request #7277 from openfoodfoundation/dependabot/npm_and_yarn/karma-6.3.2
Bump karma from 6.3.1 to 6.3.2
2021-03-30 08:57:35 -07:00
Matt-Yorkley
b6b367c378 Add return adjustments test in checkout helper 2021-03-30 16:41:23 +01:00
Matt-Yorkley
d447864b7e Update test description 2021-03-30 16:39:40 +01:00
Matt-Yorkley
08491d9ad4 Use an instance double in #compute_amount test 2021-03-30 16:39:40 +01:00
Matt-Yorkley
7882c427f7 Simplify creation of negative amounts 2021-03-30 16:39:40 +01:00
Matt-Yorkley
dbe227bd41 Use #change in adjustment spec with changing value 2021-03-30 16:39:40 +01:00
Matt-Yorkley
e71f47a2e3 Use underscore in unused arguments 2021-03-30 16:39:40 +01:00
Matt-Yorkley
4b4f29641e Add test for ReturnAuthorization#compute_amount override 2021-03-30 16:39:40 +01:00
Matt-Yorkley
fcb8145a6c Bring in changes to Adjustment#update! and CalculatedAdjustments#update_adjustment 2021-03-30 16:39:40 +01:00
Matt-Yorkley
c480d43bda Override #compute_amount in ReturnAuthorization
In some cases adjustments are updated (recalculated) via their originator. In the case of return adjustments, there's no calculation (and no calculator).
2021-03-30 16:39:40 +01:00
Matt-Yorkley
4c5ecbc2d4 Migrate return adjustments source to originator 2021-03-30 16:39:40 +01:00
Matt-Yorkley
3c1883dac2 Remove use of :source polymorphic association for return adjustments 2021-03-30 16:39:40 +01:00
Matt-Yorkley
8db598bff7 Simplify return adjustment creation 2021-03-30 16:39:40 +01:00
Andy Brett
a67038720c Merge pull request #7255 from mkllnk/fail-on-translations
Raise errors in specs with missing translations
2021-03-30 08:37:15 -07:00
Matt-Yorkley
74ba6e35be Merge pull request #7283 from Matt-Yorkley/unit-price-nils
Defend against nils in variant serializer
2021-03-30 17:00:26 +02:00
Transifex-Openfoodnetwork
42efb6f762 Updating translations for config/locales/fr_CA.yml 2021-03-31 01:10:30 +11:00
Pau Pérez Fabregat
7d5726b6c7 Merge pull request #7150 from coopdevs/use-order-balance-object
Feature-toggle all remaining parts of the app where the order balance is shown
2021-03-30 15:58:12 +02:00
Matt-Yorkley
741dee29c3 Defend against nils in variant serializer
If unit_price.denominator ever returns nil, the serializer won't explode now.
2021-03-30 14:45:33 +01:00
Transifex-Openfoodnetwork
a41852ee7a Updating translations for config/locales/en_CA.yml 2021-03-31 00:41:40 +11:00
Guido Oliveira
877d76cf19 fix display scrollbar only if needed 2021-03-30 10:05:04 -03:00
Matt-Yorkley
153ec268b7 Remove RackRequestBlocker 2021-03-30 13:24:44 +01:00
Matt-Yorkley
92eaf5fbaa Remove atomic gem
Bundler says this when installing gems:
```
Post-install message from atomic:
This gem has been deprecated and merged into Concurrent Ruby (http://concurrent-ruby.com).
```
We already have concurrent-ruby 👍
2021-03-30 12:29:48 +01:00
Maikel Linke
0980b81742 Raise errors in specs with missing translations
The previous mechanism didn't seem to work and newer Rails versions have
an easier config for this now.

Also fixing all i18n errors which were now failing specs.
2021-03-30 17:08:17 +11:00
dependabot[bot]
30df1cc55d Bump karma from 6.3.1 to 6.3.2
Bumps [karma](https://github.com/karma-runner/karma) from 6.3.1 to 6.3.2.
- [Release notes](https://github.com/karma-runner/karma/releases)
- [Changelog](https://github.com/karma-runner/karma/blob/master/CHANGELOG.md)
- [Commits](https://github.com/karma-runner/karma/compare/v6.3.1...v6.3.2)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-30 05:55:35 +00:00
Andy Brett
61a39311b4 improve specs 2021-03-29 22:51:40 -07:00
dependabot[bot]
c05a9cfb40 Bump ffaker from 2.16.0 to 2.18.0
Bumps [ffaker](https://github.com/ffaker/ffaker) from 2.16.0 to 2.18.0.
- [Release notes](https://github.com/ffaker/ffaker/releases)
- [Changelog](https://github.com/ffaker/ffaker/blob/main/Changelog.md)
- [Commits](https://github.com/ffaker/ffaker/compare/v2.16.0...v2.18.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-30 05:35:24 +00:00
dependabot[bot]
adff08038a Bump test-prof from 0.11.3 to 1.0.2
Bumps [test-prof](https://github.com/test-prof/test-prof) from 0.11.3 to 1.0.2.
- [Release notes](https://github.com/test-prof/test-prof/releases)
- [Changelog](https://github.com/test-prof/test-prof/blob/master/CHANGELOG.md)
- [Commits](https://github.com/test-prof/test-prof/compare/v0.11.3...v1.0.2)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-30 05:33:19 +00:00
dependabot[bot]
e8bc1f5aca Bump acts_as_list from 0.9.19 to 1.0.3
Bumps [acts_as_list](https://github.com/brendon/acts_as_list) from 0.9.19 to 1.0.3.
- [Release notes](https://github.com/brendon/acts_as_list/releases)
- [Changelog](https://github.com/brendon/acts_as_list/blob/master/CHANGELOG.md)
- [Commits](https://github.com/brendon/acts_as_list/compare/v0.9.19...v1.0.3)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-30 05:24:11 +00:00
dependabot[bot]
ab3b36ac0b Bump ddtrace from 0.46.0 to 0.47.0
Bumps [ddtrace](https://github.com/DataDog/dd-trace-rb) from 0.46.0 to 0.47.0.
- [Release notes](https://github.com/DataDog/dd-trace-rb/releases)
- [Changelog](https://github.com/DataDog/dd-trace-rb/blob/master/CHANGELOG.md)
- [Commits](https://github.com/DataDog/dd-trace-rb/compare/v0.46.0...v0.47.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-30 05:23:19 +00:00
dependabot[bot]
1a25fb78df Bump bugsnag from 6.19.0 to 6.20.0
Bumps [bugsnag](https://github.com/bugsnag/bugsnag-ruby) from 6.19.0 to 6.20.0.
- [Release notes](https://github.com/bugsnag/bugsnag-ruby/releases)
- [Changelog](https://github.com/bugsnag/bugsnag-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bugsnag/bugsnag-ruby/compare/v6.19.0...v6.20.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-30 05:21:06 +00:00
dependabot[bot]
e7e337f0aa Bump simplecov from 0.18.5 to 0.21.2
Bumps [simplecov](https://github.com/simplecov-ruby/simplecov) from 0.18.5 to 0.21.2.
- [Release notes](https://github.com/simplecov-ruby/simplecov/releases)
- [Changelog](https://github.com/simplecov-ruby/simplecov/blob/main/CHANGELOG.md)
- [Commits](https://github.com/simplecov-ruby/simplecov/compare/v0.18.5...v0.21.2)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-30 05:19:27 +00:00
dependabot[bot]
65f9454760 Bump capybara from 3.32.2 to 3.35.3
Bumps [capybara](https://github.com/teamcapybara/capybara) from 3.32.2 to 3.35.3.
- [Release notes](https://github.com/teamcapybara/capybara/releases)
- [Changelog](https://github.com/teamcapybara/capybara/blob/master/History.md)
- [Commits](https://github.com/teamcapybara/capybara/compare/3.32.2...3.35.3)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-30 05:18:12 +00:00
Andy Brett
8867f1ef7a refactor responsibilities and order of operations 2021-03-29 15:37:30 -07:00
Andy Brett
3664b86e03 ignore long module in rubocop 2021-03-29 14:53:13 -07:00
Andy Brett
d0d3b73257 add specs 2021-03-29 14:53:13 -07:00
Andy Brett
9d2fd373ce record subscription issue if no order is generated 2021-03-29 14:53:13 -07:00
Andy Brett
32c0f6777a don't allow edits to adjustments for canceled orders 2021-03-29 14:27:46 -07:00
Transifex-Openfoodnetwork
9094a133d6 Updating translations for config/locales/de_DE.yml 2021-03-30 06:13:32 +11:00
filipefurtad0
9092b60229 turns testcases into shared examples 2021-03-29 20:00:04 +01:00
Matt-Yorkley
4bddc59696 Merge pull request #7247 from luisramos0/ruby25
Upgrade to ruby 2.5.8
2021-03-29 20:21:42 +02:00
Matt-Yorkley
9c2010a43e Update SubscriptionLineItem#variant 2021-03-29 18:41:09 +01:00
Matt-Yorkley
558457993a Update Price#variant 2021-03-29 18:41:09 +01:00
Matt-Yorkley
2c1305b99e Update StockItem#variant 2021-03-29 18:41:09 +01:00
Matt-Yorkley
9f4b825d46 Update InventoryUnit#variant 2021-03-29 18:41:09 +01:00
Matt-Yorkley
eccfcbc396 Update Variant#default_price 2021-03-29 18:41:09 +01:00
Guido Oliveira
dcb5b36859 refactor scroll logic 2021-03-29 14:17:33 -03:00
Guido Oliveira
f004cc5b91 fix content resizing in some browsers 2021-03-29 14:14:39 -03:00
Andy Brett
2be04cc25c Merge pull request #7263 from Matt-Yorkley/mailer-bug
Fix showing soft-deleted products in producer mailer
2021-03-29 09:55:13 -07:00
Pau Pérez Fabregat
e5b1af131f Merge pull request #7261 from coopdevs/remove-semaphore-ci-badge
Remove Semaphore CI badge
2021-03-29 18:40:51 +02:00
Matt-Yorkley
707876820a Fix showing soft-deleted products in producer mailer
The test at `spec/mailers/producer_mailer_spec.rb:115` was failing but we missed it before, as the CI was not reporting failures in some jobs.
2021-03-29 17:31:10 +01:00
Transifex-Openfoodnetwork
5fe8f89e32 Updating translations for config/locales/ca.yml 2021-03-30 03:29:44 +11:00
Transifex-Openfoodnetwork
42803e7a0f Updating translations for config/locales/en_FR.yml 2021-03-30 03:29:41 +11:00
Transifex-Openfoodnetwork
05d38efd8c Updating translations for config/locales/es.yml 2021-03-30 03:29:39 +11:00
Transifex-Openfoodnetwork
e38336693a Updating translations for config/locales/en_FR.yml 2021-03-30 03:06:10 +11:00
Transifex-Openfoodnetwork
f70473677b Updating translations for config/locales/fr.yml 2021-03-30 03:06:05 +11:00
Transifex-Openfoodnetwork
25abf46599 Updating translations for config/locales/es.yml 2021-03-30 02:36:17 +11:00
Transifex-Openfoodnetwork
f0365790d6 Updating translations for config/locales/ca.yml 2021-03-30 02:36:03 +11:00
Pau Perez
2e2e9918a9 Remove Semaphore CI badge
We're now relying on Github Actions as CI build so that's the only
indicator we should check to see if the build is passing in `master`.
2021-03-29 16:28:04 +02:00
Pau Pérez Fabregat
fe3013b0b9 Merge pull request #7250 from drummer83/independent-shopping-tabs
Independent shopping tabs
2021-03-29 16:26:01 +02:00
Pau Pérez Fabregat
6a4c7a462b Merge pull request #7222 from openfoodfoundation/transifex
Transifex
2021-03-29 16:13:02 +02:00
Matt-Yorkley
581217ea2d Merge pull request #7239 from Matt-Yorkley/paranoia-scopes
Update default scopes with acts_as_paranoid
2021-03-29 15:24:44 +02:00
Matt-Yorkley
e8ddbc0449 Merge pull request #7228 from andrewpbrett/freeze-canceled-orders
Remove UI for modifying line items on canceled orders
2021-03-29 15:24:24 +02:00
Pau Pérez Fabregat
325ccdd8d5 Merge pull request #7208 from mkllnk/7130-double-processing-payment
Avoid double processing payment
2021-03-29 13:36:21 +02:00
Transifex-Openfoodnetwork
5fc0b8d724 Updating translations for config/locales/es.yml 2021-03-29 21:26:13 +11:00
Transifex-Openfoodnetwork
56c2caf422 Updating translations for config/locales/ca.yml 2021-03-29 21:25:49 +11:00
Pau Pérez Fabregat
b041b9f537 Merge pull request #7252 from openfoodfoundation/dependabot/bundler/delayed_job_active_record-4.1.6
Bump delayed_job_active_record from 4.1.5 to 4.1.6
2021-03-29 12:24:10 +02:00
Pau Pérez Fabregat
478008ac0d Merge pull request #7249 from Matt-Yorkley/engine-issues
Engine issues
2021-03-29 12:23:03 +02:00
Pau Pérez Fabregat
b8815d2c56 Merge pull request #7159 from Matt-Yorkley/dead-code-adjustment
DCOTW: LineItemBasedAdjustmentHandling
2021-03-29 11:46:23 +02:00
Pau Pérez Fabregat
79dc75d1e4 Merge pull request #7251 from Matt-Yorkley/dead-code-checkout
Remove dead code in Order::Checkout module
2021-03-29 11:45:05 +02:00
Pau Pérez Fabregat
e5ca2e8b27 Merge pull request #7253 from openfoodfoundation/dependabot/bundler/webmock-3.12.2
Bump webmock from 3.12.1 to 3.12.2
2021-03-29 11:36:21 +02:00
Transifex-Openfoodnetwork
fa95334229 Updating translations for config/locales/en_GB.yml 2021-03-29 19:12:58 +11:00
Transifex-Openfoodnetwork
42147e13eb Updating translations for config/locales/en_FR.yml 2021-03-29 18:59:40 +11:00
Transifex-Openfoodnetwork
7be7fb3ddc Updating translations for config/locales/fr.yml 2021-03-29 18:59:29 +11:00
Maikel Linke
ba857cfce4 Move translation for lazy lookup in previous commit 2021-03-29 17:00:11 +11:00
dependabot[bot]
30daab7dc5 Bump webmock from 3.12.1 to 3.12.2
Bumps [webmock](https://github.com/bblimke/webmock) from 3.12.1 to 3.12.2.
- [Release notes](https://github.com/bblimke/webmock/releases)
- [Changelog](https://github.com/bblimke/webmock/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bblimke/webmock/compare/v3.12.1...v3.12.2)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-29 05:50:07 +00:00
dependabot[bot]
bc8ca9f316 Bump delayed_job_active_record from 4.1.5 to 4.1.6
Bumps [delayed_job_active_record](https://github.com/collectiveidea/delayed_job_active_record) from 4.1.5 to 4.1.6.
- [Release notes](https://github.com/collectiveidea/delayed_job_active_record/releases)
- [Commits](https://github.com/collectiveidea/delayed_job_active_record/compare/v4.1.5...v4.1.6)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-29 05:49:22 +00:00
Transifex-Openfoodnetwork
40e8815b5f Updating translations for config/locales/en_US.yml 2021-03-29 15:46:31 +11:00
Transifex-Openfoodnetwork
13668628c4 Updating translations for config/locales/en_US.yml 2021-03-29 15:45:09 +11:00
Maikel Linke
02703053bc Keep status bar with message without auto-close
The message would disappear after five seconds which can be confusing
for the user (they may miss an important message) and makes our specs
flaky.
2021-03-29 11:12:40 +11:00
Maikel
74b06d16b8 Merge pull request #7209 from openfoodfoundation/dependabot/bundler/rubocop-1.12.0
Bump rubocop from 1.11.0 to 1.12.0
2021-03-29 10:59:38 +11:00
Transifex-Openfoodnetwork
8072aeda9d Updating translations for config/locales/de_DE.yml 2021-03-29 10:28:26 +11:00
Matt-Yorkley
a46a0b609e Remove dead code in Order::Checkout module
🔥
2021-03-28 23:57:16 +01:00
Konrad
a4f9706082 Use independent strings for shopping tabs
shopping_tabs_producers
shopping_tab_groups
2021-03-29 00:34:16 +02:00
Konrad
9f4d2b27bd Add indepentend strings for shopping tabs
shopping_tabs_producers
shopping_tabs_groups
2021-03-29 00:32:32 +02:00
Andy Brett
e85db1468f Merge pull request #7248 from drummer83/patch-1
Updated Ruby version, added link to Debian guide and more…
2021-03-28 11:25:20 -07:00
Matt-Yorkley
110d1ef015 Ensure error code on failing tests 2021-03-28 17:33:55 +01:00
Konrad
b1507f7b2e Updated Ruby version, added link to Debian guide and made requirements more clear. 2021-03-28 00:02:54 +01:00
Luis Ramos
e450fe95a1 Upgrade to ruby 2.5.8 2021-03-27 19:16:32 +00:00
Matt-Yorkley
28ee6a66a0 Update line item adjustments spec
The `adjustable` and `source` associations are basically the same now, and we'll be deleting the latter soon.
2021-03-27 18:59:50 +00:00
Matt-Yorkley
593764851f Remove LineItemBasedAdjustmentHandling 2021-03-27 18:59:49 +00:00
Andy Brett
d92510db56 fix some easy rubocop offenses 2021-03-27 11:21:18 -07:00
Andy Brett
025f1f2725 add routing tests 2021-03-27 11:21:18 -07:00
Andy Brett
51d075166a match any API version 2021-03-27 11:21:18 -07:00
Andy Brett
0b9c62284a only match v0 immediately following api/ in the path 2021-03-27 11:21:18 -07:00
Andy Brett
ef38abed28 preserve GET params in url 2021-03-27 11:21:18 -07:00
Andy Brett
5a19a14042 rename to v0 2021-03-27 11:21:18 -07:00
Andy Brett
718a3be9f4 Merge pull request #7241 from luisramos0/more_rspec
[rails 5-2] More fixes to rspec syntax
2021-03-27 07:44:14 -07:00
Luis Ramos
f6f9159430 Fix rspec syntax 2021-03-26 23:45:12 +00:00
Luis Ramos
d66a78ecce Add magic comment 2021-03-26 23:42:07 +00:00
Luis Ramos
3fe5f04fbc Fix rspec syntax 2021-03-26 23:04:32 +00:00
Luis Ramos
30ca608fb9 Fix rspec syntax 2021-03-26 23:03:27 +00:00
Luis Ramos
8f7025b8c6 Fix rspec syntax 2021-03-26 23:01:23 +00:00
Luis Ramos
396c379f37 Fix rspec syntax 2021-03-26 22:50:48 +00:00
Luis Ramos
60ae3a8a4f Fix rspec syntax 2021-03-26 22:37:54 +00:00
Luis Ramos
34771c89f9 Fix rspec syntax 2021-03-26 22:34:16 +00:00
Luis Ramos
f62f958a4c Fix rspec syntax 2021-03-26 22:29:50 +00:00
Luis Ramos
ad3745f032 Fix rspec syntax 2021-03-26 22:19:16 +00:00
Matt-Yorkley
69cdb85291 Remove #with_unscoped_products_and_variants. Thanks @andrewpbrett :)
🔥
2021-03-26 19:08:17 +00:00
Matt-Yorkley
1b19d4bdee Update default scopes with acts_as_paranoid
Fixes an issue where the LineItem :sorted_by_name_and_unit_value scope was not working with removal of the default scopes on line item and variant, which meant that the join in the scope was excluding soft-deleted items that should not have been excluded.
2021-03-26 18:22:05 +00:00
Andy Brett
d78517b6ed Update app/views/spree/admin/orders/_add_product.html.haml
Co-authored-by: Maikel <maikel@email.org.au>
2021-03-26 09:34:12 -07:00
Andy Brett
19c2c9c1c5 Merge pull request #7175 from openfoodfoundation/7130-notify-on-payment-intent-error
Record invalid payment states for debugging
2021-03-26 08:33:07 -07:00
Matt-Yorkley
902265c678 Merge pull request #7235 from jibees/7220-import-ofn-font-into-admin
Fix font import from Darkswarm to admin
2021-03-26 15:27:07 +01:00
Matt-Yorkley
881e6dbac7 Add more explicit touch spec for Exchange -> Enterprise 2021-03-26 13:01:33 +00:00
Matt-Yorkley
45a06a300e Update Exchange touch on Enterprise to use touch_later
This can improve issues with deadlocks where multiple touch calls are triggered in a single update, for example where an exchange touches it's parent enterprise on save, and we do this:

oc_with_lots_of_exchanges.exchanges.each{|ex| ex.clone! }
2021-03-26 12:44:50 +00:00
Jean-Baptiste Bellet
ee4beb57db Do not import darkswarm file into admin, but only needed selector 2021-03-26 12:27:33 +01:00
Transifex-Openfoodnetwork
ad14a91eb2 Updating translations for config/locales/en_FR.yml 2021-03-26 22:00:33 +11:00
Transifex-Openfoodnetwork
09e0474069 Updating translations for config/locales/fr.yml 2021-03-26 21:57:16 +11:00
Transifex-Openfoodnetwork
59cf5aa3ec Updating translations for config/locales/ru.yml 2021-03-26 21:31:08 +11:00
Jean-Baptiste Bellet
0ea085a275 Add unit prices for already bought product in cart page 2021-03-26 09:49:28 +01:00
Jean-Baptiste Bellet
2b93814fb1 Add context inside scope: used to specify display
- Context is used to customize some CSS specifications as sometimes display can be different (depending on the context)
 - variant variable was not used: copy/paste error
2021-03-26 09:11:42 +01:00
Transifex-Openfoodnetwork
2e8178a33f Updating translations for config/locales/es.yml 2021-03-26 18:42:11 +11:00
Transifex-Openfoodnetwork
96bb26ad45 Updating translations for config/locales/ca.yml 2021-03-26 18:37:20 +11:00
Maikel Linke
4c1f977d26 Return thread syncing to concurrency spec
Without syncing the two threads with a lock, the spec could accidentally
pass even if the code is broken. It was accidentally removed during
refactoring in b0fa1464f.
2021-03-26 12:07:46 +11:00
Maikel Linke
cbd730f4eb Remove left-over comment
This spec was fixed before and the comment was outdated.
2021-03-26 12:07:24 +11:00
Andy Brett
563a2758a6 remove UI for modifying line items on canceled orders 2021-03-25 16:52:56 -07:00
Transifex-Openfoodnetwork
bc191ab9bb Updating translations for config/locales/de_DE.yml 2021-03-26 10:50:19 +11:00
Jean-Baptiste Bellet
2849f18313 Add some CSS specification to avoid page content up/down move
- Use `display: flex`
 - Improve the display of the blue cross by a better alignement into the circle
2021-03-25 23:21:26 +01:00
Andy Brett
254f5e95af Merge pull request #7219 from jibees/7216-fix-failing-specs-on-unit-price
Refactor unit price i18n keys
2021-03-25 13:26:14 -07:00
Andy Brett
5631c895b7 Merge pull request #7155 from jibees/7126-fix-links-to-customer-email
/admin/orders : fix incorrect value of the mail field in the mailto link
2021-03-25 12:55:24 -07:00
Andy Brett
691dd05028 Merge pull request #6956 from andrewpbrett/unit-price-backend
Provide actual unit price values in front end shop
2021-03-25 12:50:59 -07:00
Andy Brett
1d78a827ae Merge pull request #7156 from jibees/5679-add-i18n-keys-for-distance_of_time_in_words_to_now-method
Add keys to handle some i18n issues
2021-03-25 12:43:09 -07:00
Andy Brett
2490861639 show correct values in line_item.rb 2021-03-25 12:26:02 -07:00
Transifex-Openfoodnetwork
8638509d01 Updating translations for config/locales/fr.yml 2021-03-26 06:20:25 +11:00
Transifex-Openfoodnetwork
76214e7733 Updating translations for config/locales/en_FR.yml 2021-03-26 06:17:27 +11:00
Transifex-Openfoodnetwork
aad9a69cfe Updating translations for config/locales/fr.yml 2021-03-26 06:17:20 +11:00
Matt-Yorkley
5b3fd25a78 Update all locales with the latest Transifex translations 2021-03-25 19:01:50 +00:00
Matt-Yorkley
cdd052d39f Merge pull request #7218 from openfoodfoundation/transifex
Transifex
2021-03-25 19:57:49 +01:00
Jean-Baptiste Bellet
5c93ccc0e3 Refactor unit price i18n keys
- Now got two keys: `js.admin.unit_price_tooltip` and `js.shopfront.unit_price_tooltip`
2021-03-25 17:59:20 +01:00
Transifex-Openfoodnetwork
93501743b6 Updating translations for config/locales/ar.yml 2021-03-26 03:48:04 +11:00
Matt-Yorkley
0f5af2d9f1 Merge pull request #6927 from Matt-Yorkley/adjustments-payment-fee
[Adjustments] Payment fee adjustment
2021-03-25 17:40:53 +01:00
Andy Brett
b68476cdcb Merge pull request #7212 from coopdevs/remove-n+1-on-admin-customers
Fix multiple N+1s on /admin/customers.json
2021-03-25 09:29:43 -07:00
Andy Brett
be60adbcb3 update class name to singular in spec 2021-03-25 08:51:16 -07:00
Andy Brett
907c0d3e8c rename unit_price.rb file 2021-03-25 08:51:15 -07:00
Andy Brett
d2828585eb fix typo in spec 2021-03-25 08:51:15 -07:00
Andy Brett
6ebf45610d use instance_double in specs 2021-03-25 08:51:15 -07:00
Andy Brett
7319ef7345 use better method and class names 2021-03-25 08:51:15 -07:00
Andy Brett
330839012e add translation 2021-03-25 08:51:15 -07:00
Andy Brett
89c7342892 memoize UnitPrices object 2021-03-25 08:51:15 -07:00
Andy Brett
0afc2d281a shorten UnitPrices method names 2021-03-25 08:51:15 -07:00
Andy Brett
39fc0707c3 provide unit price values in front end shop 2021-03-25 08:51:15 -07:00
Matt-Yorkley
f684b5b234 Make bullet activation optional
This should speed up CI, and still makes it easy to use when needed.
2021-03-25 15:36:51 +00:00
Matt-Yorkley
cbd7c9f4c0 Update adjustments controller collection scope 2021-03-25 15:02:02 +00:00
Pau Pérez Fabregat
b12293d1fb Merge pull request #6991 from jibees/6494-show-unit-price-in-admin/product-edit-form
Show unit price in admin/product edit form
2021-03-25 15:59:09 +01:00
Pau Pérez Fabregat
0121c18823 Merge pull request #7210 from openfoodfoundation/dependabot/npm_and_yarn/karma-6.3.1
Bump karma from 0.13.22 to 6.3.1
2021-03-25 12:43:11 +01:00
Pau Pérez Fabregat
56d2db8c58 Merge pull request #7194 from Matt-Yorkley/deprecations-validates-id
Deprecations: validation definitions
2021-03-25 12:39:33 +01:00
Pau Pérez Fabregat
914e6d5f21 Merge pull request #7196 from Matt-Yorkley/deprecations-uniq
Deprecations: certain uses of #uniq
2021-03-25 12:12:36 +01:00
Pau Pérez Fabregat
26bd6f0f17 Merge pull request #7205 from Matt-Yorkley/deprecations-3
Deprecations 3
2021-03-25 12:11:30 +01:00
Pau Pérez Fabregat
9397922902 Merge pull request #7206 from openfoodfoundation/transifex
Transifex
2021-03-25 11:33:08 +01:00
Pau Perez
ead1ab31b4 Fix multiple N+1 on /admin/customers.json
This (should) considerably improve traces like
https://app.datadoghq.com/apm/trace/917632173599137280?spanID=3163385094622710144&env=production&sort=time&colorBy=service&spanViewType=metadata&graphType=flamegraph&shouldShowLegend=true
by fixing the following 3 N+1s

```
user: root
GET /admin/customers.json?enterprise_id=4
USE eager loading detected
  Customer => [:enterprise]
  Add to your query: .includes([:enterprise])
Call stack
  /usr/src/app/app/serializers/api/admin/customer_with_calculated_balance_serializer.rb:24:in `balance_value'
  /usr/src/app/app/serializers/api/admin/customer_with_calculated_balance_serializer.rb:9:in `balance'
  /usr/src/app/app/controllers/admin/customers_controller.rb:20:in `block (2 levels) in index'
  /usr/src/app/app/controllers/admin/customers_controller.rb:17:in `index'

user: root
GET /admin/customers.json?enterprise_id=4
USE eager loading detected
  Spree::Address => [:state]
  Add to your query: .includes([:state])
Call stack
  /usr/src/app/app/serializers/api/address_serializer.rb:14:in `state_name'
  /usr/src/app/app/controllers/admin/customers_controller.rb:20:in `block (2 levels) in index'
  /usr/src/app/app/controllers/admin/customers_controller.rb:17:in `index'

user: root
GET /admin/customers.json?enterprise_id=4
USE eager loading detected
  Spree::Address => [:country]
  Add to your query: .includes([:country])
Call stack
  /usr/src/app/app/serializers/api/address_serializer.rb:10:in `country_name'
  /usr/src/app/app/controllers/admin/customers_controller.rb:20:in `block (2 levels) in index'
  /usr/src/app/app/controllers/admin/customers_controller.rb:17:in `index'
```

This popped up after improving the balances calculation. Now, that it's
fast, it's clear that are more performance problems on that endpoint.
We'll see if there are any left after this.
2021-03-25 11:19:00 +01:00
Maikel Linke
49eaee05a2 Deactivate cop Naming/PredicateName
It picked up matcher helpers in specs like `have_in_cart` which is a
useful name here.
2021-03-25 18:10:57 +11:00
Maikel Linke
ffb4ba5ef5 Style numeric predicate use with Rubocop 2021-03-25 18:07:11 +11:00
Maikel Linke
852147bf45 Update Rubocop todo lists 2021-03-25 17:59:59 +11:00
Maikel Linke
853b250afa Disable Rubocop suggestions to avoid noise 2021-03-25 17:44:46 +11:00
Maikel Linke
74fce2d2f1 Disable new Rubo-Cops
We have enough violations already. Let's add them as we see fit and
avoid the warnings for now.
2021-03-25 17:41:45 +11:00
Maikel Linke
f2103e923f Update Rails version for Rubocop 2021-03-25 17:41:05 +11:00
Maikel Linke
0133cb4d22 Update deprecated Rubocop option 2021-03-25 17:40:09 +11:00
dependabot[bot]
33ca13ca8e Bump karma from 0.13.22 to 6.3.1
Bumps [karma](https://github.com/karma-runner/karma) from 0.13.22 to 6.3.1.
- [Release notes](https://github.com/karma-runner/karma/releases)
- [Changelog](https://github.com/karma-runner/karma/blob/master/CHANGELOG.md)
- [Commits](https://github.com/karma-runner/karma/compare/v0.13.22...v6.3.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-25 05:50:48 +00:00
dependabot[bot]
04400e0289 Bump rubocop from 1.11.0 to 1.12.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.11.0 to 1.12.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.11.0...v1.12.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-25 05:26:45 +00:00
Maikel Linke
4d242af007 Use pessimistic locking processing Stripe payment
We used pessimistic locking around the `update` action already but when
Stripe redirects back to us we complete the payment in the `edit` action.
2021-03-25 15:17:30 +11:00
Maikel Linke
9fabca134a Fix and re-activate concurrency spec 2021-03-25 14:35:45 +11:00
Maikel Linke
af5ac2a25e Extend test coverage of CheckoutController
I'm covering the interaction with Stripe here to test for error cases in
the future.
2021-03-25 14:35:45 +11:00
Transifex-Openfoodnetwork
ac4903ef67 Updating translations for config/locales/pt_BR.yml 2021-03-25 06:28:47 +11:00
Matt-Yorkley
ba3984104b Replace deprecated #alias_method_chain in Spree::Product 2021-03-24 17:51:22 +00:00
Matt-Yorkley
0ab43d23f9 Replace deprecated reloading by passing true to an association
object.relation(true) -> object.relation.reload
2021-03-24 17:51:22 +00:00
Matt-Yorkley
26ed44412f Update #validates definitions
Where the presence of an object is being validated and that object comes from an *association*, we should use `validates :object, presence: true` instead of `validates :object_id, presence: true`.

This does not apply in the same way to validations on uniqueness of certain attributes, such as `validates :object_id, uniqueness...`
2021-03-24 15:43:09 +00:00
Matt-Yorkley
ec088c3a60 Merge pull request #7161 from openfoodfoundation/dependabot/bundler/oauth2-1.4.7
Bump oauth2 from 1.4.4 to 1.4.7
2021-03-24 13:35:32 +01:00
Matt-Yorkley
932adb533c Merge pull request #7184 from Matt-Yorkley/deprecation-errors-set
Update deprecated errors.set syntax
2021-03-24 13:17:55 +01:00
Matt-Yorkley
f1e4612c05 Update deprecated uses of #uniq
Enumerable#uniq is fine (eg calling #uniq on an Array object), but now using #uniq on an ActiveRecord::Relation is deprecated in favour of #distinct (which modifies the query itself, as opposed to iterating over the results of the query).
2021-03-24 11:42:24 +00:00
Guido Oliveira
6f340174d3 fix content moving when cart is open 2021-03-24 08:29:37 -03:00
Maikel Linke
b27ecb3465 Replace ActiveMerchant's deprecated gateway_mode
It's now just called `mode`. This avoids the warning:

  ../app/models/spree/gateway.rb:31:in `provider': Base#gateway_mode is deprecated in favor of Base#mode and will be removed in a future version
2021-03-24 15:27:44 +11:00
Andy Brett
1cb9504a2c Merge pull request #7187 from luisramos0/uniq
[Rails 5.2] Relation#Uniq is deprecated, distinct is recommended instead
2021-03-23 20:52:47 -07:00
Andy Brett
024efafa39 Merge pull request #7190 from luisramos0/more_spec_syntax
[rails 5.2] Fix more spec syntax
2021-03-23 20:52:31 -07:00
Andy Brett
28ad3a5f1d Merge pull request #7186 from luisramos0/tax_rate_validation_fix
[Rails 5.2] Fix tax_category validation to work in rails 5.2
2021-03-23 20:52:13 -07:00
Andy Brett
8080c09469 Merge pull request #7189 from luisramos0/inv_item_fix
[Rails 5.2] Fix validation problem in inventory items
2021-03-23 20:51:53 -07:00
Luis Ramos
e2df8937e5 Fix rspec syntax in bulk items controller 2021-03-23 22:00:50 +00:00
Luis Ramos
5549054325 Fix rspec syntax in line items controller 2021-03-23 21:55:58 +00:00
Luis Ramos
b14646ff50 Fix rspec syntax in checkout controller 2021-03-23 21:48:52 +00:00
Luis Ramos
7c8c720976 Fix rspec syntax to work with rails 5.2 2021-03-23 21:41:03 +00:00
Luis Ramos
b3d10cfb60 Fix validation of inventory item 2021-03-23 21:22:03 +00:00
Luis Ramos
c2364b3528 Relation#Uniq is deprecated, distinct is recommended instead 2021-03-23 20:57:58 +00:00
Luis Ramos
708c99fe9b Fix validation to work in rails 5.2 2021-03-23 20:33:04 +00:00
Matt-Yorkley
5f4e3c75c7 Update deprecated errors.set syntax
DEPRECATION WARNING: ActiveModel::Errors#set is deprecated and will be removed in Rails 5.1. Use model.errors.add(:preferred_discount_amount, ["has an invalid format. Please enter a number."]) instead. (called from block (2 levels) in localize_number at /home/runner/work/openfoodnetwork/openfoodnetwork/lib/spree/localized_number.rb:38)
2021-03-23 20:11:59 +00:00
Matt-Yorkley
5840b0e33c Adapt adjustment interface for payment's adjustment being singular
Payments only have one adjustment, all other adjustable objects have adjustments (plural).
2021-03-23 18:19:37 +00:00
Matt-Yorkley
e237727ba2 Migrate payment fee adjustments to payment objects 2021-03-23 18:19:37 +00:00
Matt-Yorkley
5d1d72b36b Update Admin::OrdersHelper#order_adjustments_for_display 2021-03-23 18:19:37 +00:00
Matt-Yorkley
21e0c36f4f Update order totals after deleting shipments and payments 2021-03-23 18:19:06 +00:00
Matt-Yorkley
5a7792bebc Update Checkout Restart spec 2021-03-23 18:19:06 +00:00
Matt-Yorkley
3294b33431 Update Payment spec 2021-03-23 18:19:06 +00:00
Matt-Yorkley
2ccaf80013 Update EnterpriseFeeSummary report scopes 2021-03-23 18:19:06 +00:00
Matt-Yorkley
242ccc4fb3 Update OrderAdjustmentsFetcher 2021-03-23 18:18:36 +00:00
Matt-Yorkley
8abfd7c3f3 Update Checkout spec 2021-03-23 18:17:50 +00:00
Matt-Yorkley
cb179c794b Update Paypal spec 2021-03-23 18:17:50 +00:00
Matt-Yorkley
a0e6b64e98 Update Order serializer 2021-03-23 18:17:50 +00:00
Matt-Yorkley
a42651d543 Update Payment fee adjustment 2021-03-23 18:17:50 +00:00
Matt-Yorkley
525fef14b1 Merge pull request #6974 from Matt-Yorkley/adjustments-line-item-fees
[Adjustments] Update line item enteprise fees
2021-03-23 19:06:02 +01:00
Andy Brett
b539015647 Merge pull request #7025 from Matt-Yorkley/adjustments-order-taxes
[Adjustments] Simplify order tax adjustments
2021-03-23 09:37:44 -07:00
Pau Pérez Fabregat
5a16b86ac9 Merge pull request #7178 from andrewpbrett/rebalance-ci
Robustify CI
2021-03-23 16:32:54 +01:00
filipefurtad0
36ab3825e9 covers unit variant changes; adds test to #7180 2021-03-23 15:30:15 +00:00
Pau Pérez Fabregat
ac164df514 Merge pull request #7181 from openfoodfoundation/transifex
Transifex
2021-03-23 16:25:26 +01:00
Andy Brett
e9c259ec98 remove unnecessary type check 2021-03-23 08:12:26 -07:00
Transifex-Openfoodnetwork
cdc40f1b88 Updating translations for config/locales/en_FR.yml 2021-03-23 22:36:35 +11:00
Transifex-Openfoodnetwork
e97135f138 Updating translations for config/locales/en_FR.yml 2021-03-23 22:33:36 +11:00
Transifex-Openfoodnetwork
bf3e9b56c7 Updating translations for config/locales/fr.yml 2021-03-23 22:32:50 +11:00
Pau Pérez Fabregat
07d52bb44f Merge pull request #7173 from Matt-Yorkley/adjustments-indexes
Add indexes on adjustments polymorphic associations
2021-03-23 11:55:30 +01:00
Pau Pérez Fabregat
393ea92dc7 Merge pull request #7177 from coopdevs/fix-balances-order-cycle-report-regression
Fix balances order cycle report regression
2021-03-23 10:08:11 +01:00
Pau Pérez Fabregat
14104cba57 Merge pull request #7171 from openfoodfoundation/transifex
Transifex
2021-03-23 09:38:17 +01:00
Pau Perez
199d48123b Fully qualify table columns in query object
This fixes the error UK's is experiencing:

```
PG::AmbiguousColumn: ERROR: column reference "state" is ambiguous LINE
1: SELECT DISTINCT spree_orders.*, CASE WHEN state IN ('cancele...
^ : SELECT DISTINCT spree_orders.*, CASE WHEN state IN ('canceled',
'returned') THEN payment_total WHEN state IS NOT NULL THEN payment_total
- total ELSE 0 END AS balance_value, spree_orders.* FROM "spree_orders"
INNER JOIN "spree_shipments"
```

See
https://app.bugsnag.com/yaycode/openfoodnetwork-uk/errors/6058c45989d37300079e8312?event_id=6058ccd30075af73bcb20000&i=sk&m=nw.
2021-03-23 09:37:47 +01:00
Pau Perez
c7b85a3591 Sum balances in Payments report implementing #+
This avoids consumers of `OrderBalance` having to couple with the inner
details of this abstraction, which makes the code more changeable.
2021-03-23 09:28:40 +01:00
Andy Brett
eff832c583 cleaner formatting
Co-authored-by: Maikel <maikel@email.org.au>
2021-03-22 20:47:12 -07:00
Andy Brett
3dc627995f Merge pull request #7138 from luisramos0/rails52commits
Rails52commits
2021-03-22 18:13:01 -07:00
Andy Brett
e8f00f3d8c Merge branch 'master' into rails52commits 2021-03-22 17:43:34 -07:00
Andy Brett
50296458b8 Merge pull request #7097 from luisramos0/rails-5-2-rspec-params
Rails 5 2 update Rspec controller syntax
2021-03-22 17:29:29 -07:00
Andy Brett
aab1a5e5d5 Merge pull request #7147 from Matt-Yorkley/deprecations-2
Deprecations 2
2021-03-22 17:28:11 -07:00
Andy Brett
f784db0127 Merge pull request #7100 from luisramos0/view_spec_in_rails5
Rails 5-2 - View spec in rails5
2021-03-22 16:42:56 -07:00
Luis Ramos
13b8b3d4a5 Fix rubocop issues 2021-03-22 23:24:01 +00:00
Andy Brett
2fbc5afce6 add rake task to catch all subfolders under /spec 2021-03-22 16:18:19 -07:00
Luis Ramos
3853aed718 Make validator work in rails 5 and rails 5.2 by adding a proc 2021-03-22 22:45:04 +00:00
Transifex-Openfoodnetwork
58a5a694a9 Updating translations for config/locales/en_US.yml 2021-03-23 08:19:44 +11:00
Luis Ramos
e2ce6634df Adapt specs to new rspec syntax without xhr 2021-03-22 20:43:48 +00:00
Luis Ramos
c224396e71 Correct helper name needed in this spec 2021-03-22 20:38:14 +00:00
Pau Perez
ec4bae3995 Reproduce regression in a test 2021-03-22 19:01:17 +01:00
Andy Brett
dbe06e206c Merge pull request #7048 from andrewpbrett/fix-sub-manifests
Verify line item when placing sub order (Fix #6680)
2021-03-22 10:24:20 -07:00
Andy Brett
f021e5e074 add --profile to all jobs 2021-03-22 09:37:03 -07:00
Andy Brett
8cc6e60ed1 include specs that start with numbers 2021-03-22 09:31:52 -07:00
Matt-Yorkley
3e9d1bfe1f Add defensive more code in not_hidden_for scope 2021-03-22 14:52:42 +00:00
Pau Perez
1a1552a6ed Make OrderUpdater use new balance implementation
In this class we properly calculated the balance taking into account the
orders in cancellation state so we need to use the new implementation if
we don't want to introduce a regression by using
`#old_oustanding_balance`.

I was initially a bit dubious because this method was checking
`order.payments` as well but now I see that was redundant. Is on
`payment_total` to take into account whether or not the order is paid or
any other payment related details.
2021-03-22 11:45:12 +01:00
Pau Perez
f494b720f8 Fix spec 2021-03-22 11:45:12 +01:00
Pau Perez
9762275555 Use old_outstanding_balance on disabled toggle
No need to go through the `OrderBalance` in this context since we
already check for the toggle.
2021-03-22 11:45:12 +01:00
Pau Perez
5082b6dc99 Make BalanceCalculator use old balance calculation
This class is currently used and it gets skipped when the
:customer_balance toggle is enabled, so there's no point on abstracting
the balance with `OrderBalance`. It'll never go through its
`#new_outstanding_balance` branch and it'll be removed once we active
that toggle to everyone.
2021-03-22 11:45:12 +01:00
Pau Perez
5815d1a4a4 Make #outstanding_balance return an OrderBalance
This will let us branch by abstraction. All existing calls to
`#outstanding_balance` will go through `OrderBalance` hence, will
check the feature toggle.

Note that by default, `OrderBalance` will end up calling
`#old_outstanding_balance`. As the name states, that's exactly what
`#outstanding_balance` was so far. This means no consumers will see any
change in behavior. We just added on item in the call stack (sort of).
2021-03-22 11:45:12 +01:00
Transifex-Openfoodnetwork
0d58701b07 Updating translations for config/locales/en_GB.yml 2021-03-22 20:11:05 +11:00
Transifex-Openfoodnetwork
471d2ea25d Updating translations for config/locales/es.yml 2021-03-22 19:57:33 +11:00
Transifex-Openfoodnetwork
6c984ab72f Updating translations for config/locales/ca.yml 2021-03-22 19:56:46 +11:00
Pau Pérez Fabregat
7e176298ef Merge pull request #7162 from openfoodfoundation/dependabot/bundler/i18n-js-3.8.2
Bump i18n-js from 3.8.1 to 3.8.2
2021-03-22 09:04:37 +01:00
Maikel Linke
fce8d3a2f8 Record invalid payment states for debugging
We observed invalid payment states in Bugsnag but we don't actually know
in which state the payment intent was in. From the context we can guess
that it was "succeeded" but it would be good to validate this. And in
the future it would be good to know if there are other invalid states we
can end up in.

The notification to Bugsnag happens in another part of the code.
2021-03-22 16:35:22 +11:00
Maikel Linke
3dac451e5b Add spec for StripeSCA payment gateway
We didn't actually have a unit test for this.
2021-03-22 16:35:22 +11:00
Maikel
56154bdb7e Merge pull request #7168 from andrewpbrett/rebalance-ci
Rebalance CI jobs
2021-03-22 12:23:20 +11:00
Andy Brett
5cbd37f112 reorder jobs and move to 7 jobs 2021-03-21 14:55:53 -07:00
Matt-Yorkley
50e0d78c0c Remove dead callback invocations 2021-03-21 14:06:23 +00:00
Matt-Yorkley
0da90ab834 Update schedules controller callbacks 2021-03-21 14:06:01 +00:00
Matt-Yorkley
6c17680423 Update return authorizations controller callbacks 2021-03-21 14:06:01 +00:00
Matt-Yorkley
365dc2a49e Update payment methods controller callback 2021-03-21 14:05:57 +00:00
Matt-Yorkley
a70b2a12d1 Update variants controller callback 2021-03-21 13:25:32 +00:00
Matt-Yorkley
a82bae2a46 Remove Spree resource controller custom callbacks 2021-03-21 13:25:32 +00:00
Transifex-Openfoodnetwork
e1ae1aa78e Updating translations for config/locales/en_NZ.yml 2021-03-21 11:23:24 +11:00
Matt-Yorkley
85d2f3143b Improve indexes on adjustments adjustable and originator associations 2021-03-20 11:09:53 +00:00
Cillian O'Ruanaidh
31f737422c Pass in owner_id parameter correctly so admin/enterprises#create controller spec doesn't fail 2021-03-19 22:21:47 +00:00
Cillian O'Ruanaidh
4e1eefa877 Extract location map from registration form into its own partial, also add missing new lines 2021-03-19 21:43:29 +00:00
Cillian O'Ruanaidh
f20cea7e4f Allow people to set enterprise latitude/longitude manually or automatically.
This for new changes to the enterprise registration/signup flow where a map will be displayed when people are filling in their address. On this map people can check the geocoder has geocoded their address correctly and if not they can manually adjust their latitude/longitude on the map.

But currently every time someone changes their address in the Admin > Enterprise > Address section the address would automatically be geocoded so this could overwrite the latitude/longitude that was set during sign up. To prevent the latitude/longitude from being overwritten this add's a checkbox which people need to explicity click if they want their address to be automatically geocoded, otherwise it will just use the manually configured latitude/longitude.

Note this new feature which allows people to select their location on a map during registration only works with Google maps so far. So if an instance is using Open Street Map this change also adds support for passing a :use_geocoder parameter to the Api::EnterprisesController during registration so that the address will be geocoded on the backend without the use of a map.
2021-03-19 21:43:29 +00:00
julesemmac
971971803e Improving user discover on ofn map
The context for this update is here: https://community.openfoodnetwork.org/t/improving-user-discovery-on-ofn-map/2013

Also with rebasing help from Maikel Linke <mkllnk@web.de>
2021-03-19 21:43:29 +00:00
Transifex-Openfoodnetwork
4ea195f803 Updating translations for config/locales/de_DE.yml 2021-03-20 08:19:28 +11:00
Andy Brett
40be8e2874 Merge pull request #7157 from Matt-Yorkley/dead-code-billing-names
DCOTW: Order#billing_firstname and Order#billing_lastname
2021-03-19 12:12:03 -07:00
Andy Brett
c298aa19fa rebalance CI jobs 2021-03-19 10:48:18 -07:00
dependabot[bot]
7fe889712b Bump i18n-js from 3.8.1 to 3.8.2
Bumps [i18n-js](https://github.com/fnando/i18n-js) from 3.8.1 to 3.8.2.
- [Release notes](https://github.com/fnando/i18n-js/releases)
- [Changelog](https://github.com/fnando/i18n-js/blob/main/CHANGELOG.md)
- [Commits](https://github.com/fnando/i18n-js/compare/v3.8.1...v3.8.2)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-19 05:26:00 +00:00
dependabot[bot]
4c9d4104ba Bump oauth2 from 1.4.4 to 1.4.7
Bumps [oauth2](https://github.com/oauth-xx/oauth2) from 1.4.4 to 1.4.7.
- [Release notes](https://github.com/oauth-xx/oauth2/releases)
- [Changelog](https://github.com/oauth-xx/oauth2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/oauth-xx/oauth2/compare/v1.4.4...v1.4.7)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-19 05:21:59 +00:00
Maikel Linke
f80168fbca Update locales from Transifex 2021-03-19 11:46:30 +11:00
Maikel
16d629e5d2 Merge pull request #7121 from Matt-Yorkley/update-adjustments
Update adjustments
2021-03-19 11:25:22 +11:00
Maikel
cf3b32d712 Merge pull request #7158 from openfoodfoundation/transifex
Transifex
2021-03-19 11:18:10 +11:00
Maikel
c4370f1583 Merge pull request #7045 from jibees/7008-add-automated-tests-for-unit-price
add automated tests for unit price in the shopfront
2021-03-19 11:01:25 +11:00
Matt-Yorkley
77b0e2d23f Update has_many_through on Order
Fixes:

384) Spree::OrderMailer basic behaviour doesn't aggressively escape double quotes in confirmation body
       Failure/Error: adjustments = adjustments.to_a + order.shipment_adjustments.to_a

       ActionView::Template::Error:
         Cannot have a has_many :through association 'Spree::Order#shipment_adjustments' which goes through 'Spree::Order#shipments' before the through association is defined.
       # ./app/helpers/checkout_helper.rb:10:in `checkout_adjustments_for'
       # ./app/views/spree/order_mailer/_order_summary.html.haml:43:in `_app_views_spree_order_mailer__order_summary_html_haml__2911251238692323485_70331958934800'
       # ./app/views/spree/order_mailer/confirm_email_for_customer.html.haml:23:in `_app_views_spree_order_mailer_confirm_email_for_customer_html_haml__3734564010704881256_70331959518520'
       # ./app/mailers/spree/order_mailer.rb:35:in `block in confirm_email_for_customer'
       # ./app/mailers/spree/order_mailer.rb:33:in `confirm_email_for_customer'
       # ./spec/mailers/order_mailer_spec.rb:20:in `block (3 levels) in <top (required)>'
       # ------------------
       # --- Caused by: ---
       # ActiveRecord::HasManyThroughOrderError:
       #   Cannot have a has_many :through association 'Spree::Order#shipment_adjustments' which goes through 'Spree::Order#shipments' before the through association is defined.
       #   ./app/helpers/checkout_helper.rb:10:in `checkout_adjustments_for'
2021-03-18 21:56:37 +00:00
Matt-Yorkley
d5443cf489 Update has_many_through on ShippingMethod
Fixes:

259) Spree::ShippingMethod#shipments can gather all the related shipments
       Failure/Error: expect(shipping_method.shipments).to include(shipment)

       ActiveRecord::HasManyThroughOrderError:
         Cannot have a has_many :through association 'Spree::ShippingMethod#shipments' which goes through 'Spree::ShippingMethod#shipping_rates' before the through association is defined.
       # ./spec/models/spree/shipping_method_spec.rb:190:in `block (3 levels) in <module:Spree>'
2021-03-18 21:56:37 +00:00
Matt-Yorkley
6132f4bf18 Don't pass string to conditional in validation 2021-03-18 21:56:37 +00:00
Luis Ramos
ab18a2e60c [Rails 5] change #process method call args for upgraded rails
Copied from spree a5e14e3313
2021-03-18 21:53:00 +00:00
Matt-Yorkley
a7fd64d7bf Update has_many_through on Schedule 2021-03-18 21:53:00 +00:00
Matt-Yorkley
eb5c37daca Change order of declaration for has_many_through association with it's parent
Fixes:

292) OrderManagement::Subscriptions::ProxyOrderSyncer#sync! when the subscription is not persisted and the schedule includes upcoming oc that closes after ends_at does not create a new proxy order for that oc
       Failure/Error: order_cycle.schedules << schedule

       ActiveRecord::HasManyThroughOrderError:
         Cannot have a has_many :through association 'OrderCycle#schedules' which goes through 'OrderCycle#order_cycle_schedules' before the through association is defined.
       # ./spec/factories.rb:29:in `block (4 levels) in <top (required)>'
       # ./spec/factories.rb:28:in `each'
       # ./spec/factories.rb:28:in `block (3 levels) in <top (required)>'
       # ./engines/order_management/spec/services/order_management/subscriptions/proxy_order_syncer_spec.rb:59:in `block (4 levels) in <module:Subscriptions>'
       # ./engines/order_management/spec/services/order_management/subscriptions/proxy_order_syncer_spec.rb:65:in `block (4 levels) in <module:Subscriptions>'
       # ./engines/order_management/spec/services/order_management/subscriptions/proxy_order_syncer_spec.rb:133:in `block (6 levels) in <module:Subscriptions>'
       # ./engines/order_management/spec/services/order_management/subscriptions/proxy_order_syncer_spec.rb:133:in `block (5 levels) in <module:Subscriptions>'
2021-03-18 21:53:00 +00:00
Matt-Yorkley
ee0da87681 Fix touch call to unsaved object
Failure/Error: enterprise.andand.touch

       ActiveRecord::ActiveRecordError:
         cannot touch on a new or destroyed record object. Consider using persisted?, new_record?, or destroyed? before touching
       # ./app/models/spree/address.rb:155:in `touch_enterprise'
       # ./spec/factories/product_factory.rb:12:in `block (3 levels) in <top (required)>'
       # ./spec/factories/variant_factory.rb:26:in `block (4 levels) in <top (required)>'
       # ./spec/models/spree/variant_spec.rb:9:in `block (2 levels) in <module:Spree>'
2021-03-18 21:53:00 +00:00
Matt-Yorkley
bdbeb2feb8 Require missing dependency in VariantOverride 2021-03-18 21:53:00 +00:00
Andy Brett
80d90700c4 Merge pull request #7142 from coopdevs/tiny-improvement-of-specs
Tiny improvement of specs using OutstandingBalance class
2021-03-18 11:34:52 -07:00
Andy Brett
17143d62d6 Merge pull request #7148 from Matt-Yorkley/bump-cancancan
Bump cancancan to 1.15.0
2021-03-18 11:29:53 -07:00
Andy Brett
23494c918d Merge pull request #7143 from cillian/shorter-transient-data-retention-period
Reduce retention period of Spree state changes and log entries from 6 to 3 months
2021-03-18 11:28:29 -07:00
Matt-Yorkley
479c1ae6e6 Merge pull request #7062 from mkllnk/6327-terms-of-service
Show Terms of Service at checkout if required
2021-03-18 19:16:06 +01:00
Andy Brett
5f9c5c0d90 Merge pull request #7095 from luisramos0/render_plain
Raisl 5 - Render plain and render head
2021-03-18 10:56:48 -07:00
Andy Brett
afa7269f48 Merge branch 'master' into render_plain 2021-03-18 10:53:13 -07:00
Transifex-Openfoodnetwork
92da9b717c Updating translations for config/locales/ar.yml 2021-03-19 04:06:21 +11:00
Andy Brett
577401fca0 add regression spec 2021-03-18 09:18:46 -07:00
Matt-Yorkley
2e20078c05 Delete dead code Order#billing_firstname and Order#billing_lastname
🔥
2021-03-18 15:54:40 +00:00
Andy Brett
97a63edf50 Merge pull request #7096 from luisramos0/rails-5-2-helper
Rails 5.2 add T&Cs helper
2021-03-18 08:16:12 -07:00
Pau Perez
5ee647fd7c Improve specs
Better to rely on a verifying double and reveal our intentions using
`subject` instead.
2021-03-18 15:55:54 +01:00
Pau Pérez Fabregat
a1af16ae72 Merge pull request #7116 from coopdevs/increase-invoice-renderer-coverage
Better test InvoiceRenderer
2021-03-18 15:54:43 +01:00
Pau Pérez Fabregat
72b3dbbf44 Merge pull request #7149 from coopdevs/rearrange-order-updater-specs
Rearrange order updater tests to make them method-centric
2021-03-18 15:53:37 +01:00
Pau Pérez Fabregat
71b902d9d2 Merge pull request #6980 from drummer83/clean-footer
Cleaner and consistent design of front-end footer
2021-03-18 15:53:09 +01:00
Jean-Baptiste Bellet
b8353e0007 Add i18n keys to handle distance_of_time_in_words_to_now result
- This method is already translated thanks to rails-i18n, but it is missing few langages such as 'fr_BE'. Adding those keys makes it possible to have the translation.
 - Adding translations to `en.yml` could be seen as useless (since is already correctly handled by rails-i18n) but this is the way we process i18n issues.
2021-03-18 15:49:31 +01:00
Pau Pérez Fabregat
ec41a571ed Merge pull request #7140 from coopdevs/better-test-subs-mailer
Rearrange and cover balance in subs mailer specs
2021-03-18 15:43:41 +01:00
Jean-Baptiste Bellet
d79c457dae Use native <a /> element to create a mailto link
- Nothing special done by helper method `mail_to` so using a native <a /> element (and it's correctly escaped)
2021-03-18 15:09:21 +01:00
Matt-Yorkley
49f1e44999 Simplify Order#total_tax to cover all taxes from all sources 2021-03-18 14:05:29 +00:00
Matt-Yorkley
2f262f70e1 Update #subject syntax 2021-03-18 13:19:16 +00:00
Matt-Yorkley
6b4de4b3dd Migrate enterprise fees on line items 2021-03-18 13:19:16 +00:00
Matt-Yorkley
bd81289240 Use persisted order is order spec 2021-03-18 13:18:20 +00:00
Matt-Yorkley
2c7d6453ce Fix adjustment test setup in Order spec
Missing order associations...
2021-03-18 13:18:20 +00:00
Matt-Yorkley
9f23bb2203 Update SubscriptionPlacementJob fee deleting 2021-03-18 13:18:20 +00:00
Matt-Yorkley
cafe1b5f1c Update order totals after creating fees
This was being triggered by a callback in Spree::Adjustments before, but now that the adjustable is not the order, it does not get triggered by fees being added to line items...
2021-03-18 13:18:20 +00:00
Matt-Yorkley
62a495a42e Allow line item enterprise fees to be found in EnterpriseFeeSummary report 2021-03-18 13:18:20 +00:00
Matt-Yorkley
526794b32e Refactor CheckoutHelper 2021-03-18 13:18:20 +00:00
Matt-Yorkley
3253ab4616 Fix test setup in CheckoutHelper spec 2021-03-18 13:18:20 +00:00
Matt-Yorkley
4ee0271756 Loosen scope in order enterprise fees tax total method 2021-03-18 13:18:20 +00:00
Matt-Yorkley
f2627dff0b Loosen scope in adjustment spec to include enterprise fees on line items 2021-03-18 13:18:20 +00:00
Matt-Yorkley
a0a787b6ec Delete dead code OrderAdjustmentsFetcher#line_item_adjustments
🎉
2021-03-18 13:18:20 +00:00
Matt-Yorkley
f67a8e4af3 Update and simplify LineItem#price_with_adjustments 2021-03-18 13:18:20 +00:00
Matt-Yorkley
8d4733b3d5 Update EnterpriseFee#clear_all_adjustments 2021-03-18 13:18:20 +00:00
Matt-Yorkley
a768cb2510 Set adjustment "target" (adjustable) to be the line item when adding enterprise fees on line items 2021-03-18 13:18:20 +00:00
Matt-Yorkley
5bbe768827 Update order total in test setup 2021-03-18 13:16:19 +00:00
Matt-Yorkley
bb46df61d4 Simplify Order#total_tax
We get the same value here, but without the three additional database hits to adjustments (both of these values are already present on the order object itself).
2021-03-18 13:16:19 +00:00
Matt-Yorkley
c07a4e6c55 Remove "included_tax" hack from TaxRate
Yay! 🎉

The values of tax amounts stored in adjustments on the order no longer require use of the (deprecated) included_tax field.
2021-03-18 13:16:19 +00:00
Matt-Yorkley
be3e184651 Merge pull request #6973 from Matt-Yorkley/adjustments-line-item-taxes
[Adjustments] Update line item taxes
2021-03-18 11:50:01 +01:00
Matt-Yorkley
3ed8dbe3b3 Merge pull request #7146 from Matt-Yorkley/deprecations
Deprecations
2021-03-18 11:25:14 +01:00
Matt-Yorkley
fea6ca5907 Improve update efficiency in migration 2021-03-18 10:07:16 +00:00
Pau Perez
93bc60664a Fix long lines 2021-03-18 10:00:33 +01:00
Jean-Baptiste Bellet
d8772752da Factorize Unit Price into a single method: displayableUnitPrice
- Code is at a single place
 - No need to import `localizeCurrencyFilter` into Controllers that required unit_prices
 - Add `currencyconfig` into unit_prices_spec as it's now dependant to localizeCurrencyFilter
2021-03-18 09:48:42 +01:00
Jean-Baptiste Bellet
e8a0858f15 Add unit prices into the "Edit variant" form
- Only needs to watch `unit_value_human` and `variant.price` the only two editable field for this form that is related to unit price
 - Add hidden_field_tag to retrieve values into the controller
2021-03-18 09:48:42 +01:00
Jean-Baptiste Bellet
50b0e87722 Move module OFNShared to admin.products
instead of `ofn.admin`
 - `admin.products` is already embeded in `ofn.admin`
 - `OFNShared` needs `mm.foundation` (for tooltipProvider)
2021-03-18 09:48:42 +01:00
Jean-Baptiste Bellet
e137eb724b Readjust height of the question mark icon
- 15px is actually the height of an `<label />` inside a form.
2021-03-18 09:48:42 +01:00
Jean-Baptiste Bellet
945ed5fb78 Avoid NaN on unit price computing 2021-03-18 09:48:42 +01:00
Jean-Baptiste Bellet
5ce558c2db Move value and unit into the same input disabled text field
- Both value and unit of the unit price is now inside the `<input />` text field.
2021-03-18 09:48:42 +01:00
Jean-Baptiste Bellet
c084299b72 Add tests in imperial weight system 2021-03-18 09:48:42 +01:00
Jean-Baptiste Bellet
c8099dc2a4 Do not display unit price value and unit until information is filled
- Display the field but with `null` value
2021-03-18 09:48:32 +01:00
Jean-Baptiste Bellet
fa4974ddb2 React to form changes, compute unit price and display accurate values.
- Add method `processUnitPrice` which is responsible for computing the right unit price, that depends on `price`, `variant_unit_scale`, `variant_unit`, `unit_value` and `variant_unit_name`
 - Watch the needed model to compute the unit price: `product.price` and  `product.variant_unit_name`
 - Add dependencies : UnitPrices and localizeCurrencyFilter
 - Add currencyconfig to spec, as it's needed by localizeCurrencyFilter
 - Put `'ng-controller' => 'unitsCtrl'` to the relevant node.
 - Add new ng-model, as it's needed to watch it in order to compute unit price : `product.price`
 - Finally display the needed information: `product.unit_price_value` and `product.unit_price_unit`
2021-03-18 09:48:32 +01:00
Jean-Baptiste Bellet
8ad3109e95 Pass needed arguments and reorder state machine
- Arguments were misordered and `scale` is needed to compute the denominator.
 - Reorder "state machine" if-else as variant_unit_name is priority and "item" is too.
 - @andrewpbrett I need your review here ;)
 - Still need to test imperial system
2021-03-18 09:48:32 +01:00
Andy Brett
7abb3868fc add UnitPrices service 2021-03-18 09:48:17 +01:00
Jean-Baptiste Bellet
b494cd2f8b Add unit price field to New Product form
- Add a new i18n key for the content of the tooltip:  js.shopfront.unit_price_tooltip.admin
 - Display unit price readonly field near the price field
 - Still fake values, needs to be updated
2021-03-18 09:48:17 +01:00
Jean-Baptiste Bellet
3060670466 Add a key parameter to have possibility of different text inside
- The tooltip between the shopfront and the admin will not be the same
2021-03-18 09:48:17 +01:00
Jean-Baptiste Bellet
daa7cca866 Adjust import to include shared/* between Darkswarm and admin
- Import joyride css file
 - Used by question-mark-with-tooltip used in admin part
2021-03-18 09:48:17 +01:00
Jean-Baptiste Bellet
ec0f99a949 Add joyride-tip-guide css specifications
- Could not add the file itself because of many dependancies are broken the admin part.
 - Just use the strict minimum
2021-03-18 09:48:17 +01:00
Jean-Baptiste Bellet
3fcbb1a5fe Move files from darkswarm to shared
- As this directive is now used by Darkswarm and admin, move files in shared/ folders
 - Needs some css variable in admin part : as question-mark-with-tooltip is used in admin part, it needs some css variable
 - Add own scss variables file with all needed variables for question-mark-icon. Some duplication, but now really independant and shared between both darkswarm and admin.
 - Remove strange border around the button, rendered by chrome when button is focused.
2021-03-18 09:48:17 +01:00
Jean-Baptiste Bellet
429cf4a5cb Create a new angularjs module: OFNShared
- This module could be shared between Darkswarm and admin
 - add this new module to test environment
2021-03-18 09:48:17 +01:00
Jean-Baptiste Bellet
e9b833c27b Add unit test for cart page 2021-03-18 09:40:04 +01:00
Jean-Baptiste Bellet
014ffef16c Add tests about unit price inside the cart sidebar
- Test if the question mark icon is present
 - Click to show the tooltip
 - Another click to hide the tooltip
2021-03-18 09:40:04 +01:00
Jean-Baptiste Bellet
1be1d161d3 Add tests about unit price inside a shopfront
- Test that the unit price wrapper is here
 - Click on the question mark icon and display the tooltip
 - Click outside the question mark icon and hide the toolip
2021-03-18 09:40:04 +01:00
Pau Perez
85446c0dde Rearrange and cover balance in subs mailer specs
This moves them to a more unit-like style where the mailer methods are
the subjects. However, I did so only for the methods that show order
balance and thus we want to be extra sure of their coverage.
2021-03-18 09:18:16 +01:00
Pau Perez
ae9d8020a1 Better test InvoiceRenderer
This required a tiny refactoring to enable injecting the renderer. It'll
make it easier to later add the relevant specs related to the order
balance.
2021-03-18 09:17:44 +01:00
Maikel
33f7fa7e32 Merge pull request #7111 from coopdevs/fix-static-assets-deprecation
Replace assets config with public_file_server
2021-03-18 13:44:30 +11:00
Maikel
e53c996efd Merge pull request #7082 from openfoodfoundation/dependabot/bundler/i18n-1.8.9
Bump i18n from 1.8.5 to 1.8.9
2021-03-18 13:23:08 +11:00
Matt-Yorkley
751b9349e8 Merge pull request #7015 from andrewpbrett/shopfront-producers
Only show primary producers on shopfront list of producers (fix #4218)
2021-03-17 23:30:42 +01:00
Matt-Yorkley
e62cf67be5 Add more defensive code in TaxRateFinder 2021-03-17 22:23:04 +00:00
Matt-Yorkley
baaee1baab Update OrderAdjustmentsFetcher 2021-03-17 22:23:04 +00:00
Matt-Yorkley
064f7582cc Update line_item included taxes
Drops use of the `spree_adjustments.included_tax` database field (when summing line item tax), which we are slowly deprecating before eventual removal
2021-03-17 22:23:04 +00:00
Andy Brett
70b7143e7b reload line items and recalculate fees after removing line item 2021-03-17 12:06:05 -07:00
Matt-Yorkley
8503e3c5f3 Merge pull request #7023 from Matt-Yorkley/ineligible-efficiency
Reduce unnecessary updates in Payment#revoke_adjustment_eligibility
2021-03-17 18:55:01 +01:00
Andy Brett
b8629e847c Merge pull request #7014 from andrewpbrett/canceled-order-payments
Add resumed to list of allowable order states to view the payment tab
2021-03-17 10:46:51 -07:00
Andy Brett
12b66d82ab verify line item when placing sub order
This removes the inventory unit from the shipment manifest, so that the item no longer appears on the order view in the admin view.
2021-03-17 09:35:01 -07:00
Andy Brett
9d33b36799 Merge pull request #7024 from Matt-Yorkley/dead-code-auto-capture
DCOTW: Spree::Config[:auto_capture]
2021-03-17 09:31:00 -07:00
Matt-Yorkley
826515874b Replace some uses of #alias_method_chain 2021-03-17 16:28:19 +00:00
Luis Ramos
333a488dc8 Fix deprecation warning 2021-03-17 16:23:53 +00:00
Pau Perez
b48677c624 Rearrange tests to make them method-centric
If these are unit tests, it's much easier to find a `describe` with the
method under test and putting all the tests exercising that method
together.

It turns out that `#update_payment_state` is by far the method that we
test the most which leads me to think:

a) this class might be doing too many things.
b) other methods might not be that well covered.
2021-03-17 17:05:19 +01:00
Matt-Yorkley
fbff481a8b Bump cancancan
Conservative bump to a newer version that fixes some deprecated syntax for Rails 5.x (eg #before_filter)
2021-03-17 15:37:15 +00:00
Andy Brett
cd988733c3 Merge pull request #7145 from coopdevs/temp-skip-flaky-spec
Temporarily skip embedded shopfront flaky spec
2021-03-17 08:33:53 -07:00
Matt-Yorkley
39b1ae0ee8 Fix validation conditional in Spree::Product 2021-03-17 15:22:22 +00:00
Luis Ramos
da6a7da99d Remove sanitize
This was added here for no specific reason I think, it's just an id, I dont think we need this 1d83809866
2021-03-17 15:22:22 +00:00
Matt-Yorkley
29e0786906 Fix inheritance of Migration object in spec
Fixes:

Spree::Preferences::Preferable persisted preferables requires a valid id but returns default values
       Failure/Error:
               class CreatePrefTest < ActiveRecord::Migration
                 def self.up
                   create_table :pref_tests do |t|
                     t.string :col
                   end
                 end

                 def self.down
                   drop_table :pref_tests
                 end

       StandardError:
         Directly inheriting from ActiveRecord::Migration is not supported. Please specify the Rails release the migration was written for:

           class CreatePrefTest < ActiveRecord::Migration[4.2]
       # ./spec/models/spree/preferences/preferable_spec.rb:225:in `block (3 levels) in <top (required)>'
2021-03-17 15:22:22 +00:00
Matt-Yorkley
4505fa7fd9 Fix warning on Product variants_including_master scope 2021-03-17 15:22:22 +00:00
Matt-Yorkley
55b0751c1a Use strings for class names on associations 2021-03-17 15:15:57 +00:00
Matt-Yorkley
237075dd47 Replace deprecated before_filter syntax 2021-03-17 15:15:26 +00:00
Matt-Yorkley
6c19baeab3 Remove transactional callback config 2021-03-17 15:15:20 +00:00
Pau Pérez Fabregat
571f1b9f87 Merge pull request #7122 from openfoodfoundation/transifex
Transifex
2021-03-17 16:08:49 +01:00
Pau Perez
cf730f8b0c Temporarily skip embedded shopfront flaky spec
Closes #7129 as discussed on that issue.
2021-03-17 16:06:48 +01:00
Andy Brett
9aa992b700 Merge pull request #7067 from openfoodfoundation/dependabot/bundler/rspec-rails-4.1.2
Bump rspec-rails from 4.0.2 to 4.1.2
2021-03-17 07:46:59 -07:00
Pau Perez
8c57ccdaf9 Replace assets test config with public_file_server
This fixes the following deprecation warnings

```
DEPRECATION WARNING: `config.serve_static_files` is deprecated and will be removed in Rails 5.1.
Please use `config.public_file_server.enabled = true` instead.
 (called from block in <top (required)> at /home/runner/work/openfoodnetwork/openfoodnetwork/config/environments/test.rb:13)
DEPRECATION WARNING: `config.static_cache_control` is deprecated and will be removed in Rails 5.1.
Please use
`config.public_file_server.headers = { 'Cache-Control' => 'public, max-age=3600' }`
instead.
 (called from block in <top (required)> at /home/runner/work/openfoodnetwork/openfoodnetwork/config/environments/test.rb:14)
```
2021-03-17 15:43:31 +01:00
Andy Brett
1311ff2959 Merge pull request #7136 from coopdevs/better-test-order-mailer
Rearrange and extend some OrderMailer unit-tests
2021-03-17 07:33:27 -07:00
Cillian O'Ruanaidh
a80e1b7625 Reduce retention period of Spree state changes and log entries from 6 to 3 months
The UK instance noticed Spree state changes and log entries seem to be filling up quite quickly.

Fixes #7123
2021-03-17 12:12:45 +00:00
Matt-Yorkley
3a5f763bf2 Merge pull request #7107 from filipefurtad0/line_items_controller.spec
covers payment_state changes from item deletion
2021-03-17 12:50:52 +01:00
Transifex-Openfoodnetwork
736a628082 Updating translations for config/locales/en_IE.yml 2021-03-17 22:31:32 +11:00
Pau Perez
f56678bcd9 Rearrange and extend some OrderMailer unit-tests
This moves them to a more unit-like style where the mailer methods are
the subjects. However, I did so only for the methods that show order
balance and thus we want to be extra sure of their coverage.
2021-03-17 12:09:06 +01:00
Pau Pérez Fabregat
51f63060a4 Merge pull request #6879 from coopdevs/customer-balance-bulk-coop-report
Customer balance bulk coop report
2021-03-17 12:08:44 +01:00
Pau Pérez Fabregat
0a1a1c3567 Merge pull request #7137 from andrewpbrett/ci-timezones
Fix failing timezone-related specs
2021-03-17 12:03:39 +01:00
Maikel
3a0c9814b8 Merge pull request #7037 from openfoodfoundation/dependabot/bundler/awesome_print-1.9.2
Bump awesome_print from 1.8.0 to 1.9.2
2021-03-17 17:26:22 +11:00
Luis Ramos
c4c5bbc9a3 Adapt helpers to rails 5.2 2021-03-16 23:37:24 +00:00
Luis Ramos
32c68f5951 Adapt helper call to make it work in rails 5.2 2021-03-16 23:37:24 +00:00
Luis Ramos
f55150745e Add checkout helper to checkout controller 2021-03-16 23:37:24 +00:00
Luis Ramos
d4cbf47226 Add T and Cs helper to checkout controller 2021-03-16 23:37:24 +00:00
Luis Ramos
25e0262364 Adapt spec to new rspec syntax with params and no xhr 2021-03-16 23:31:43 +00:00
Luis Ramos
f710bbed3e Convert calls to xhr to post or put with xhr: true 2021-03-16 23:31:43 +00:00
Luis Ramos
58c3c49cfb Adapt to new rspec syntax 2021-03-16 23:31:43 +00:00
Luis Ramos
c5581fa25f Rename spec/support/CheckoutHelper to resolve colision with app/helpers/CheckoutHelper 2021-03-16 23:20:11 +00:00
Luis Ramos
a953a12f76 Remove dead code 2021-03-16 23:20:11 +00:00
Luis Ramos
138522bd17 Add helper to view spec to make it work in rails 5 2021-03-16 23:20:11 +00:00
Luis Ramos
cb8fd2131e Use body: nil instead of deprecated nothing:
Ideally we would be using render head status but it's issuing quite a lot of double render problems, we can improve later
2021-03-16 23:13:58 +00:00
Luis Ramos
53d758ca21 Replace render text with render plain for rails 5.1 2021-03-16 23:13:58 +00:00
dependabot[bot]
4adaa6d28d Bump rspec-rails from 4.0.2 to 4.1.2
Bumps [rspec-rails](https://github.com/rspec/rspec-rails) from 4.0.2 to 4.1.2.
- [Release notes](https://github.com/rspec/rspec-rails/releases)
- [Changelog](https://github.com/rspec/rspec-rails/blob/main/Changelog.md)
- [Commits](https://github.com/rspec/rspec-rails/compare/v4.0.2...v4.1.2)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-16 22:33:54 +00:00
dependabot[bot]
7f594026cd Bump awesome_print from 1.8.0 to 1.9.2
Bumps [awesome_print](https://github.com/awesome-print/awesome_print) from 1.8.0 to 1.9.2.
- [Release notes](https://github.com/awesome-print/awesome_print/releases)
- [Changelog](https://github.com/awesome-print/awesome_print/blob/master/CHANGELOG.md)
- [Commits](https://github.com/awesome-print/awesome_print/compare/v1.8.0...v1.9.2)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-16 22:32:03 +00:00
filipefurtad0
2e870ed7bc replace update! w/ reload; remove assertion 2021-03-16 22:02:26 +00:00
filipefurtad0
87e4b5e49d covers payment_state changes from item deletion 2021-03-16 22:02:26 +00:00
dependabot[bot]
6ebcff9a4a Bump i18n from 1.8.5 to 1.8.9
Bumps [i18n](https://github.com/ruby-i18n/i18n) from 1.8.5 to 1.8.9.
- [Release notes](https://github.com/ruby-i18n/i18n/releases)
- [Changelog](https://github.com/ruby-i18n/i18n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ruby-i18n/i18n/compare/v1.8.5...v1.8.9)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-16 19:32:53 +00:00
Andy Brett
06deab9605 Merge pull request #7084 from openfoodfoundation/dependabot/bundler/acts-as-taggable-on-7.0.0
Bump acts-as-taggable-on from 4.0.0 to 7.0.0
2021-03-16 12:31:58 -07:00
Matt-Yorkley
d64fd195c0 Merge pull request #7104 from openfoodfoundation/dependabot/bundler/compass-rails-4.0.0
Bump compass-rails from 2.0.1 to 4.0.0
2021-03-16 20:31:49 +01:00
Andy Brett
046a2077f2 check the time, not the printed zone, in the spec 2021-03-16 12:14:27 -07:00
Andy Brett
f9f1bf8331 specify UTC explicitly 2021-03-16 12:00:20 -07:00
Andy Brett
134e017122 Merge pull request #7085 from openfoodfoundation/dependabot/bundler/responders-3.0.1
Bump responders from 2.4.1 to 3.0.1
2021-03-16 11:24:28 -07:00
dependabot[bot]
b1b71483de Bump responders from 2.4.1 to 3.0.1
Bumps [responders](https://github.com/heartcombo/responders) from 2.4.1 to 3.0.1.
- [Release notes](https://github.com/heartcombo/responders/releases)
- [Changelog](https://github.com/heartcombo/responders/blob/master/CHANGELOG.md)
- [Commits](https://github.com/heartcombo/responders/compare/v2.4.1...v3.0.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-16 17:57:43 +00:00
Matt-Yorkley
0f05198f48 Update any adjustments that are missing an order association 2021-03-16 17:45:11 +00:00
Andy Brett
0d364c6b69 Merge pull request #7110 from Matt-Yorkley/payment-capture-error
Fix payment capture handling in Api::OrdersController
2021-03-16 10:41:43 -07:00
Matt-Yorkley
2ba6a3cc23 Merge pull request #7133 from coopdevs/fix-env-deprecation
Fix `env` deprecated in Rails 5.0
2021-03-16 18:29:40 +01:00
Andy Brett
3ff9a0f2a3 Merge pull request #7135 from Matt-Yorkley/paypal-spec-setup
Update order totals in paypal test setup
2021-03-16 10:22:48 -07:00
Andy Brett
76940a6a2e Merge pull request #7134 from coopdevs/feature-test-payments-report
Feature-test payments report
2021-03-16 10:18:36 -07:00
Matt-Yorkley
c91f02a94a Update order totals in paypal test setup 2021-03-16 16:52:30 +00:00
Andy Brett
e8a256ecc5 Merge pull request #7132 from Matt-Yorkley/reload-deprecations
Replace deprecated use of :reload argument
2021-03-16 09:31:24 -07:00
Pau Perez
16647006c6 Feature-test payments report
This report displays order balances and we'll need this basic
feature-test coverage to ensure it keeps working once we refactor them.
2021-03-16 17:05:31 +01:00
Andy Brett
b0f2688001 Merge pull request #7128 from jibees/7127-terms-&-conditions-test-fails
Use timezone as hour and minute offset from UTC in terms_and_conditions_spec.rb
2021-03-16 08:34:18 -07:00
Pau Perez
57101aa5b6 Fix env deprecated in Rails 5.0
I found it at the very bottom of the `test-consumer-features` CI build
job. See: https://github.com/rails/rails/issues/23294.
2021-03-16 15:12:44 +01:00
Matt-Yorkley
e78fb784c6 Merge pull request #7042 from coopdevs/fix-money-object-deprecation-warnings
Fix money object deprecation warnings
2021-03-16 14:30:51 +01:00
Matt-Yorkley
5e8d231c49 Merge pull request #7113 from coopdevs/fix-reload-deprecation-on-user-112
Fix deprecation warning related to #reload
2021-03-16 14:25:18 +01:00
Matt-Yorkley
80a654cef1 Merge pull request #6938 from Matt-Yorkley/paypal-adjustments-coverage
[Adjustments] Paypal adjustments test coverage
2021-03-16 13:16:07 +01:00
Matt-Yorkley
2d9d293405 Replace deprecated use of :reload argument 2021-03-16 12:04:35 +00:00
Jean-Baptiste Bellet
57a65da674 Use timezone as hour and minute offset from UTC
- e.g. +0900 (and not e.g. +09:00)
2021-03-16 09:52:45 +01:00
Pau Perez
6fae80bb04 Fix deprecation warning related to #reload
This fixes:

```
DEPRECATION WARNING: Passing an argument to force an association to
reload is now deprecated and will be removed in Rails 5.1. Please call
`reload` on the result collection proxy instead. (called from
can_own_more_enterprises? at /usr/src/app/app/models/spree/user.rb:112)
```

This method in particular gets called a lot of times so it'll have it's
cost in performance.
2021-03-16 08:01:25 +01:00
Andy Brett
fbc0d8f352 Merge pull request #7125 from coopdevs/show-build-status-in-prs
Run Github CI build on pull_request event
2021-03-15 15:30:26 -07:00
Andy Brett
ae4e8386c4 Merge pull request #7019 from openfoodfoundation/dependabot/bundler/monetize-1.11.0
Bump monetize from 1.10.0 to 1.11.0
2021-03-15 15:13:27 -07:00
Andy Brett
ffe9d4737c Merge pull request #7114 from coopdevs/extract-spec-file
Move invoice-related specs to their own file
2021-03-15 15:11:14 -07:00
Pau Perez
e952664a14 Run build on pull_request event
As is, we're seeing builds almost only on merge commits and not on
others. Also, the build status is not displayed at the bottom of the
PR.

Once we see this fixed and have a better understanding, we can decide
whether or not we remove the `push` event. I guess both we'll be needed.
2021-03-15 20:06:15 +01:00
Transifex-Openfoodnetwork
eb9cf04071 Updating translations for config/locales/fr_CA.yml 2021-03-16 04:22:30 +11:00
Transifex-Openfoodnetwork
e55457d9dd Updating translations for config/locales/en_CA.yml 2021-03-16 04:13:10 +11:00
Transifex-Openfoodnetwork
aeefd068bf Updating translations for config/locales/en_CA.yml 2021-03-16 03:58:49 +11:00
Pau Perez
7a3121b624 Move invoice-related specs to their own file
The `Spree::Admin::OrdersController`'s test file quite long (as well as
the controller itself) but it'll grow more in the upcoming commits.
That's just a symptom of that controller having too many
responsibilities. It does much more than CRUD on `Spree::Order` (the
Rails convention).

Things like invoices are an entity on their own and would better fit
into a `InvoicesController`. Hopefully, splitting up the tests is hint
for the next dev to do that.
2021-03-15 12:45:27 +01:00
Matt-Yorkley
5354c63d9a Fix payment capture handling in Api::OrdersController
Fixes:

NoMethodError: undefined method `t' for #<Api::OrdersController:0x0000000013834290>
Location
app/controllers/api/orders_controller.rb:50 - payment_capture_failed
2021-03-15 10:36:07 +00:00
dependabot[bot]
1fcc77dbe7 Bump acts-as-taggable-on from 4.0.0 to 7.0.0
Bumps [acts-as-taggable-on](https://github.com/mbleigh/acts-as-taggable-on) from 4.0.0 to 7.0.0.
- [Release notes](https://github.com/mbleigh/acts-as-taggable-on/releases)
- [Changelog](https://github.com/mbleigh/acts-as-taggable-on/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mbleigh/acts-as-taggable-on/compare/v4.0.0...v7.0.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-14 18:47:23 +00:00
dependabot[bot]
492858ae1f Bump compass-rails from 2.0.1 to 4.0.0
Bumps [compass-rails](https://github.com/Compass/compass-rails) from 2.0.1 to 4.0.0.
- [Release notes](https://github.com/Compass/compass-rails/releases)
- [Changelog](https://github.com/Compass/compass-rails/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Compass/compass-rails/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-14 14:21:13 +00:00
dependabot[bot]
431536e8a6 Bump monetize from 1.10.0 to 1.11.0
Bumps [monetize](https://github.com/RubyMoney/monetize) from 1.10.0 to 1.11.0.
- [Release notes](https://github.com/RubyMoney/monetize/releases)
- [Changelog](https://github.com/RubyMoney/monetize/blob/main/CHANGELOG.md)
- [Commits](https://github.com/RubyMoney/monetize/commits/v1.11.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-14 14:21:03 +00:00
Maikel Linke
06f46c4e29 Remove unnecessary comments 2021-03-11 11:18:12 +11:00
Pau Perez
0eb14bc0a4 Do not modify the HTML returned by Money gem
It was due to these lines that we were returning a broken HTML tag but
also, there's no need to remove blanks.
2021-03-10 16:29:09 +01:00
Maikel Linke
20f11327b5 Show combined checkbox when all terms required
The user should need to tick only one box to agree.

We don't remember yet if someone agreed to the platform TOS and
therefore the box is always unticked to start with.

Remembering the agreement is another issue:
https://github.com/openfoodfoundation/openfoodnetwork/issues/6328
2021-03-10 17:09:26 +11:00
Maikel Linke
f73c32ce4b Move rendering logic of terms to helper
Preparing for a third option to display.
2021-03-10 17:09:26 +11:00
Maikel Linke
4af0e61163 Simplify logic for terms and conditions display
Checking for `false` instead of a falsey value allows us to distinguish
from an unset variable and disable the checkout button only when a
checkbox is present and unticked.
2021-03-10 17:09:26 +11:00
Maikel Linke
b266c9df34 Enable checkout button only when terms accepted
This was working with the seller's terms but now it includes the
platform's terms as well.

Pending:

- Simplify Ansible code
- Unify the two terms checkboxes if both required
2021-03-10 17:09:26 +11:00
Maikel Linke
2149ce7c94 Reduce run time of specs by combining them
It's better style to have those specs independent but we also have a
need for fast tests.
2021-03-10 17:09:26 +11:00
Maikel Linke
561da1f834 Show Terms of Service at checkout if required
The checkout page shows a checkbox to accept the platform's Terms of
Service. Ticking the box doesn't have any effect yet but at least people
are aware and are presented with a link to the terms.
2021-03-10 17:09:26 +11:00
Maikel Linke
0e8745adc3 Remove passing of unused variable 2021-03-10 17:09:26 +11:00
Maikel Linke
ee66a096e2 Ignore uploaded Ts&Cs for version control
We do that for other uploaded files already.
2021-03-10 17:09:26 +11:00
Maikel Linke
ba9de403e6 Add admin option to require shoppers agree to TOS
This switch doesn't have any effect yet. We need to implement it in the
checkout.
2021-03-10 17:09:26 +11:00
Pau Perez
9c642e2957 Use the instance currency as Money's default 2021-03-09 09:00:37 +01:00
Andy Brett
0125b5f10e add spec for plus_relatives_and_oc_producers 2021-03-08 09:10:40 -08:00
Andy Brett
95c232dfe7 add spec for a resumed order 2021-03-08 08:54:28 -08:00
Pau Perez
5c74668726 Make test rely on container rather than parent
This decouples it a bit from the actual HTML markup and makes it a bit
more resilient.
2021-03-08 16:20:07 +01:00
Pau Perez
7792bc34c8 Test that currency symbol position can be changed 2021-03-08 13:40:00 +01:00
Pau Perez
ca268d5c84 Remove unnecessary indirection in test 2021-03-08 13:34:57 +01:00
Pau Perez
41011ce28a Fix Money deprecation warning w/ :default_currency
This removes the deprecation warning:

```
[WARNING] The default currency will change from `USD` to `nil` in the
next major release. Make sure to set it explicitly using
`Money.default_currency=` to avoid potential issues
```
2021-03-08 13:03:00 +01:00
Pau Perez
ccfb6ae26e Fix Money deprecation warning with :rounding_mode
This removes the deprecation warning:

```
[WARNING] The default rounding mode will change from `ROUND_HALF_EVEN`
to `ROUND_HALF_UP` in the next major release. Set it explicitly using
`Money.rounding_mode=` to avoid potential problems.
```

by specifying the default rounding mode at boot time so that it's only
set once for the whole app. See
https://github.com/RubyMoney/money#rounding for details.
2021-03-08 13:03:00 +01:00
Pau Perez
96bcde61a3 Fix Money deprecation warning with :html_wrap
This fixes the following deprecation warning

```
[DEPRECATION] `html` is deprecated - use `html_wrap` instead. Please
note that `html_wrap` will wrap all parts of currency and if you use
`with_currency` option, currency element class changes from `currency`
to `money-currency`.
```
2021-03-08 13:03:00 +01:00
Pau Perez
485449e289 Fix Money gem deprecation warning with :format
This removes millions of deprecation warnings like the following

```
[DEPRECATION] `symbol_position: :before` is deprecated - you can replace it with `format: %u %n`
```

from the build. It gets printed every time a `Spree::Money` is instantiated.

This should result in a non-negligible speed up of the test suite.
2021-03-08 13:03:00 +01:00
Pau Perez
e355a00724 Remove redundant spec context
This is already tested by the top-most before block and besides, we
there's no OFN in Japan. We don't need to test all supported currencies
but ensure that the various arguments work as intended.
2021-03-08 12:52:41 +01:00
Matt-Yorkley
365700615a Remove dead code: Spree::Config.auto_capture
We set this value to `true` unconditionally in an initializer, and then check the value in various places via Spree::Config. It's never false, and it's not configurable, so we can just drop it and remove the related conditionals. 🔥
2021-03-05 16:03:07 +00:00
Matt-Yorkley
a670771037 Reduce duplicate updates in Payment#revoke_adjustment_eligibility
This was triggering two separate updates, and each of those updates could trigger callbacks, and those could trigger other callbacks. Here we're doing the same thing, but with one update.
2021-03-05 15:12:41 +00:00
Andy Brett
a431c03eb1 only show primary producers on shopfront list of producers 2021-03-04 14:32:55 -08:00
Andy Brett
4e5945f9ef add resumed to list of allowable order states 2021-03-04 11:24:39 -08:00
Konrad
748b2b8223 Removed #secure and replaced with class 2021-03-03 20:59:30 +01:00
Konrad
db6eaede14 Shortened long line 2021-03-03 20:58:45 +01:00
Konrad
aa761d6d67 Removed #secure and replaced with class 2021-03-03 20:57:55 +01:00
Konrad
07b23602cd Included #secure and method show_social_icons? 2021-03-03 20:38:12 +01:00
Konrad
e0108431d9 Added method to check for social icons 2021-03-03 20:36:22 +01:00
Konrad
553954f8bf Removed "footer .row a" and added "#secure" 2021-03-03 20:35:16 +01:00
Pau Perez
b49777062b Include canceled orders in report when searching
It's a code smell to have a boolean control argument.
`Permissions::Order` goes too far and assumes we want to filter out
canceled orders when using report's search params and this is not the
case.
2021-03-03 18:21:44 +01:00
Pau Perez
f67b45a580 Reuse query object in Reports::LineItems
This almost removes the responsibility of fetching orders from this
class, that has too many. Ideally, I'd go on and leave this up to the
caller of this class making `Reports::LineItems` rely completely on the
passed in `orders_relation`. Not today.
2021-03-03 18:21:43 +01:00
Pau Perez
21fb3f3da6 Extract orders relation as a query object 2021-03-03 18:21:10 +01:00
Pau Perez
72597ea3f9 Optionally inject orders relation
So we can fetch them differently if we need to. Spoiler: we do in the
bulk coop report.
2021-03-03 18:21:07 +01:00
Pau Perez
2ead2ad417 Replace private stub with fake collaborator object 2021-03-03 18:19:26 +01:00
Pau Perez
b6ce9ca3ca Test bulk coop report includes canceled orders
Without them numbers in the report don't match with /admin/customers and
/account where their order total is considered towards the customer
balance.
2021-03-03 18:19:26 +01:00
Pau Perez
fce98da88d Reject line items in a more succinct way
Thanks for the suggestion @mkllnk!
2021-03-03 18:19:26 +01:00
Pau Perez
3b7f45516c Toggle bulk coop report balance calculation
This will make users hit the new method that implements the new
calculation we are aiming for, only if they have the feature enabled.
2021-03-03 18:19:26 +01:00
Pau Perez
cd60cea5de Extract balance-related methods into module
This model concerns helps us put together this related methods. Although
it doesn't provide any encapsulation yet, it makes a bit easier to
consider them all next time we need to change this implementation
somehow. It's a bit of an illusion but it feels like we are making this
God object model a bit smaller.

It also gives more room for documentation that will aid future devs.
2021-03-03 18:19:26 +01:00
Pau Perez
d1fde07535 Extend #outstanding_balance to mimic OustandingBalance 2021-03-03 18:19:26 +01:00
Pau Perez
c69f0baf9f Extract specs related to outstanding_balance 2021-03-03 18:19:26 +01:00
Pau Perez
d00a35e12c Split long statement 2021-03-03 18:19:26 +01:00
Pau Perez
b7335e12e9 Add first basic unit test to Reports::LineItems
This is quite hard and tedious due to its tight coupling with
Permissions::Order but sets the path to adding more of these and
eventually refactoring this class in the future.
2021-03-03 18:19:26 +01:00
Pau Perez
197d787396 Unit-test OrderDataMasker 2021-03-03 18:19:26 +01:00
Pau Perez
58ffd00f4a Extract private method
This was initially intended to cache the result of the `#map` and
`#uniq` calls but we're not confident enough and don't want to
scopecreep this. It's still worth to point out that this is what we
need, line items' `unique orders`. Hopefully, next time we find a way to
optimize it.
2021-03-03 18:19:26 +01:00
Pau Perez
49dfccfb51 Unit test #columns method
At least, this covers what we're investigating now.
2021-03-03 18:19:26 +01:00
Pau Perez
a3b2a25ccf Refactor and reuse :not_state scope 2021-03-03 18:19:26 +01:00
Konrad
3d8cfc4ccd Updated footer for clean footer
Updated the footer to have precise alignment of elements and consistent font sizes throughout the front-end footer.
2021-03-01 20:47:36 +01:00
Konrad
799d35f187 Updated stylesheets for clean footer
Updated the stylesheets to have precise alignment fo elements and consistent font sizes throughout the front-end footer.
2021-03-01 20:44:22 +01:00
Matt-Yorkley
faf7e3c02b Simplify filtering items with zero price 2021-02-24 12:39:10 +00:00
Matt-Yorkley
02b3636377 Extract relevant adjustments to comment-method 2021-02-24 12:39:10 +00:00
Matt-Yorkley
d517e5adf6 Simplify matching 2021-02-22 16:03:27 +00:00
Matt-Yorkley
ecf4332527 Use #all_adjustments scope
Some of the way these objects are returned by different scopes will be changing soon. This ensures we should get the same results.
2021-02-22 16:03:26 +00:00
Matt-Yorkley
20f4a5359e Exclude all tax adjustments in item building
Included taxes are ignored here, and the additional tax total is is handled separately.
2021-02-22 16:02:19 +00:00
Matt-Yorkley
3ac16432c7 Refactor data representation methods 2021-02-22 16:02:19 +00:00
Matt-Yorkley
8de5ac4680 Extract itemized contents to service 2021-02-22 16:02:19 +00:00
Matt-Yorkley
eaf9305a77 Simplify adjustments summing 2021-02-22 15:45:32 +00:00
Matt-Yorkley
40d284812a Extract itemized contents to testable method 2021-02-22 13:12:04 +00:00
754 changed files with 22608 additions and 7712 deletions

View File

@@ -2,9 +2,9 @@ version: "2"
plugins:
rubocop:
enabled: true
channel: "rubocop-0-76"
channel: "rubocop-1-12"
config:
file: ".rubocop_styleguide.yml"
file: ".rubocop.yml"
scss-lint:
enabled: true
checks:

5
.github/codecov.yml vendored Normal file
View File

@@ -0,0 +1,5 @@
coverage:
status:
project:
default:
informational: true

View File

@@ -3,11 +3,58 @@ name: Build
on:
workflow_dispatch:
push:
pull_request:
env:
DISABLE_KNAPSACK: true
TIMEZONE: UTC
COVERAGE: true
jobs:
test-controllers-and-serializers:
runs-on: ubuntu-18.04
services:
postgres:
image: postgres:10
ports: ["5432:5432"]
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
env:
POSTGRES_DB: open_food_network_test
POSTGRES_USER: ofn
POSTGRES_PASSWORD: f00d
steps:
- uses: actions/checkout@v2
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
- uses: actions/setup-node@v2
with:
node-version: '14.15.5'
- name: Install JS dependencies
run: yarn install --frozen-lockfile
- name: Set up application.yml
run: cp config/application.yml.example config/application.yml
- name: Set up database
run: |
bundle exec rake db:create RAILS_ENV=test
bundle exec rake db:schema:load RAILS_ENV=test
- name: Run controller tests
run: bundle exec rspec --profile -- spec/controllers spec/serializers
- name: Codecov
uses: codecov/codecov-action@v1.3.1
test-models:
runs-on: ubuntu-18.04
services:
@@ -47,9 +94,12 @@ jobs:
bundle exec rake db:schema:load RAILS_ENV=test
- name: Run tests
run: bundle exec rspec spec/models
run: bundle exec rspec --profile -- spec/models
test-admin-features:
- name: Codecov
uses: codecov/codecov-action@v1.3.1
test-admin-features-1:
runs-on: ubuntu-18.04
services:
postgres:
@@ -88,9 +138,12 @@ jobs:
bundle exec rake db:schema:load RAILS_ENV=test
- name: Run admin feature tests
run: bundle exec rspec --profile -- spec/features/admin/*_spec.rb
run: bundle exec rspec --profile -- spec/features/admin/[a-o0-9]*_spec.rb
test-admin-features-folders:
- name: Codecov
uses: codecov/codecov-action@v1.3.1
test-admin-features-2:
runs-on: ubuntu-18.04
services:
postgres:
@@ -129,7 +182,10 @@ jobs:
bundle exec rake db:schema:load RAILS_ENV=test
- name: Run admin feature tests
run: bundle exec rspec --profile --pattern "spec/features/admin/*/*_spec.rb"
run: bundle exec rspec --profile -- spec/features/admin/[p-z]*_spec.rb
- name: Codecov
uses: codecov/codecov-action@v1.3.1
test-consumer-features:
runs-on: ubuntu-18.04
@@ -172,48 +228,10 @@ jobs:
- name: Run consumer feature tests
run: bundle exec rspec --profile -- spec/features/consumer
test-controllers:
runs-on: ubuntu-18.04
services:
postgres:
image: postgres:10
ports: ["5432:5432"]
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
env:
POSTGRES_DB: open_food_network_test
POSTGRES_USER: ofn
POSTGRES_PASSWORD: f00d
steps:
- uses: actions/checkout@v2
- name: Codecov
uses: codecov/codecov-action@v1.3.1
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
- uses: actions/setup-node@v2
with:
node-version: '14.15.5'
- name: Install JS dependencies
run: yarn install --frozen-lockfile
- name: Set up application.yml
run: cp config/application.yml.example config/application.yml
- name: Set up database
run: |
bundle exec rake db:create RAILS_ENV=test
bundle exec rake db:schema:load RAILS_ENV=test
- name: Run tests
run: bundle exec rspec spec/controllers
test-other:
test-engines-etc:
runs-on: ubuntu-18.04
services:
postgres:
@@ -254,20 +272,54 @@ jobs:
- name: Run JS tests
run: RAILS_ENV=test bundle exec rake karma:run
- name: Run all other tests
run: |
bundle exec rspec \
spec/helpers/ \
spec/initializers/ \
spec/jobs/ \
spec/lib/ \
spec/mailers/ \
spec/queries/ \
spec/requests/ \
spec/serializers/ \
spec/services/ \
spec/validators/ \
spec/views
# Migration tests need to be run in a separate task.
# See: https://github.com/openfoodfoundation/openfoodnetwork/pull/6924#issuecomment-813056525
- name: Run migration tests
run: bundle exec rspec --pattern "spec/{migrations}/**/*_spec.rb"
- name: Run engines tests
run: bundle exec rake ofn:specs:engines:rspec
- name: Run all other tests
run: bundle exec rake ofn:specs:run:excluding_folders["models,controllers,serializers,features,lib,migrations"]
test-the-rest:
runs-on: ubuntu-18.04
services:
postgres:
image: postgres:10
ports: ["5432:5432"]
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
env:
POSTGRES_DB: open_food_network_test
POSTGRES_USER: ofn
POSTGRES_PASSWORD: f00d
steps:
- uses: actions/checkout@v2
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
- uses: actions/setup-node@v2
with:
node-version: '14.15.5'
- name: Install JS dependencies
run: yarn install --frozen-lockfile
- name: Set up application.yml
run: cp config/application.yml.example config/application.yml
- name: Set up database
run: |
bundle exec rake db:create RAILS_ENV=test
bundle exec rake db:schema:load RAILS_ENV=test
- name: Run admin feature folders, engines, lib
run: bundle exec rspec --profile --pattern "engines/*/spec/{,/*/**}/*_spec.rb,spec/features/admin/*/*_spec.rb,spec/lib/{,/*/**}/*_spec.rb"
- name: Codecov
uses: codecov/codecov-action@v1.5.0

2
.gitignore vendored
View File

@@ -31,6 +31,7 @@ app/public
public/system
public/stylesheets
public/images
public/files
public/spree
public/assets
config/abr.yml
@@ -46,3 +47,4 @@ coverage
/reports/
!/reports/README.md
bin/
/spec/components/stories/**/*.stories.json

View File

@@ -1 +1 @@
5.12.0
14.16.1

View File

@@ -10,8 +10,8 @@ inherit_from:
# The automatically generated todo list to ignore all current violations.
- .rubocop_todo.yml
# Our Open Food Network style guide. It's used by Code Climate. If you want to see all violations,
# then use only that configuration (like Code Climate):
# Our Open Food Network style guide. If you want to see all violations,
# then use only that configuration:
#
# bundle exec rubocop -c .rubocop_styleguide.yml
#

View File

@@ -21,6 +21,25 @@
Layout/LineLength:
Max: 100
Exclude:
- app/controllers/spree/admin/products_controller.rb
- app/controllers/spree/admin/reports_controller.rb
- app/controllers/spree/paypal_controller.rb
- engines/order_management/spec/services/order_management/order/stripe_sca_payment_authorize_spec.rb
- engines/order_management/spec/services/order_management/order/updater_spec.rb
- engines/order_management/spec/services/order_management/reports/bulk_coop/bulk_coop_report_spec.rb
- lib/open_food_network/reports/line_items.rb
- spec/controllers/spree/admin/orders/invoices_spec.rb
- spec/controllers/spree/admin/tax_rates_controller_spec.rb
- spec/controllers/user_passwords_controller_spec.rb
- spec/features/admin/configuration/general_settings_spec.rb
- spec/features/consumer/shopping/unit_price_spec.rb
- spec/helpers/admin/orders_helper_spec.rb
- spec/lib/open_food_network/order_cycle_management_report_spec.rb
- spec/lib/stripe/authorize_response_patcher_spec.rb
- spec/services/bulk_invoice_service_spec.rb
- spec/services/content_sanitizer_spec.rb
- spec/services/process_payment_intent_spec.rb
- spec/support/features/datepicker_helper.rb
- app/controllers/admin/bulk_line_items_controller.rb
- app/controllers/admin/contents_controller.rb
- app/controllers/admin/customers_controller.rb
@@ -230,7 +249,6 @@ Layout/LineLength:
- spec/lib/open_food_network/products_and_inventory_report_spec.rb
- spec/lib/open_food_network/scope_variant_to_hub_spec.rb
- spec/lib/open_food_network/tag_rule_applicator_spec.rb
- spec/lib/open_food_network/user_balance_calculator_spec.rb
- spec/lib/open_food_network/users_and_enterprises_report_spec.rb
- spec/lib/open_food_network/xero_invoices_report_spec.rb
- spec/lib/spree/core/calculated_adjustments_spec.rb
@@ -329,6 +347,29 @@ Layout/LineLength:
Metrics/AbcSize:
Max: 15
Exclude:
- app/controllers/admin/schedules_controller.rb
- app/controllers/checkout_controller.rb
- app/controllers/spree/admin/general_settings_controller.rb
- app/controllers/spree/admin/images_controller.rb
- app/controllers/spree/admin/mail_methods_controller.rb
- app/controllers/spree/admin/shipping_methods_controller.rb
- app/controllers/spree/paypal_controller.rb
- app/helpers/spree/base_helper.rb
- app/jobs/subscription_placement_job.rb
- app/models/order_cycle.rb
- app/models/product_import/unit_converter.rb
- app/models/spree/gateway/pay_pal_express.rb
- app/serializers/api/admin/enterprise_serializer.rb
- app/services/order_factory.rb
- app/services/variants_stock_levels.rb
- engines/order_management/app/services/order_management/subscriptions/form.rb
- lib/open_food_network/enterprise_fee_calculator.rb
- lib/open_food_network/order_grouper.rb
- lib/spree/core/controller_helpers/auth.rb
- lib/spree/core/controller_helpers/common.rb
- lib/spree/core/product_duplicator.rb
- lib/stripe/authorize_response_patcher.rb
- lib/stripe/profile_storer.rb
- app/controllers/admin/bulk_line_items_controller.rb
- app/controllers/admin/customers_controller.rb
- app/controllers/admin/enterprise_fees_controller.rb
@@ -468,7 +509,7 @@ Metrics/AbcSize:
Metrics/BlockLength:
Max: 25
ExcludedMethods: [
IgnoredMethods: [
"class_eval",
"collection",
"context",
@@ -482,6 +523,8 @@ Metrics/BlockLength:
"scenario"
]
Exclude:
- spec/features/admin/order_cycles/complex_updating_specific_time_spec.rb
- spec/features/admin/tag_rules_spec.rb
- app/models/spree/order/checkout.rb
- app/models/spree/payment/processing.rb
- app/models/spree/shipment.rb
@@ -514,6 +557,27 @@ Metrics/BlockLength:
Metrics/CyclomaticComplexity:
Max: 6
Exclude:
- app/controllers/admin/resource_controller.rb
- app/controllers/spree/admin/payment_methods_controller.rb
- app/controllers/spree/admin/payments_controller.rb
- app/controllers/spree/admin/products_controller.rb
- app/controllers/spree/admin/users_controller.rb
- app/models/product_import/entry_validator.rb
- app/models/spree/order_inventory.rb
- app/models/spree/order.rb
- app/models/spree/shipment.rb
- app/models/spree/tax_rate.rb
- app/models/spree/variant.rb
- engines/order_management/app/services/order_management/reports/enterprise_fee_summary/parameters.rb
- lib/active_merchant/billing/gateways/stripe_decorator.rb
- lib/open_food_network/group_buy_report.rb
- lib/open_food_network/order_cycle_form_applicator.rb
- lib/open_food_network/order_cycle_permissions.rb
- lib/open_food_network/payments_report.rb
- lib/spree/core/controller_helpers/common.rb
- lib/stripe/authorize_response_patcher.rb
- lib/stripe/credit_card_clone_destroyer.rb
- spec/support/i18n_translations_checker.rb
- app/controllers/admin/enterprise_fees_controller.rb
- app/controllers/admin/enterprises_controller.rb
- app/controllers/spree/admin/taxons_controller.rb
@@ -552,6 +616,18 @@ Metrics/CyclomaticComplexity:
Metrics/PerceivedComplexity:
Max: 7
Exclude:
- app/controllers/spree/admin/payment_methods_controller.rb
- app/controllers/spree/admin/payments_controller.rb
- app/controllers/spree/admin/users_controller.rb
- app/models/product_import/entry_validator.rb
- app/models/spree/order_inventory.rb
- app/models/spree/shipment.rb
- app/models/spree/variant.rb
- lib/active_merchant/billing/gateways/stripe_decorator.rb
- lib/open_food_network/group_buy_report.rb
- lib/open_food_network/order_cycle_form_applicator.rb
- lib/open_food_network/order_cycle_permissions.rb
- lib/open_food_network/payments_report.rb
- app/controllers/admin/enterprises_controller.rb
- app/controllers/api/variants_controller.rb
- app/controllers/spree/admin/taxons_controller.rb
@@ -702,10 +778,18 @@ Metrics/MethodLength:
- spec/features/consumer/shopping/variant_overrides_spec.rb
- spec/models/product_importer_spec.rb
- spec/support/i18n_translations_checker.rb
- app/controllers/admin/bulk_line_items_controller.rb
- app/controllers/spree/paypal_controller.rb
- app/jobs/subscription_placement_job.rb
- app/models/spree/gateway/pay_pal_express.rb
Metrics/ClassLength:
Max: 100
Exclude:
- app/controllers/admin/customers_controller.rb
- app/controllers/spree/admin/payments_controller.rb
- app/controllers/spree/paypal_controller.rb
- engines/order_management/app/services/order_management/order/updater.rb
- app/controllers/admin/enterprises_controller.rb
- app/controllers/admin/order_cycles_controller.rb
- app/controllers/admin/resource_controller.rb
@@ -764,6 +848,7 @@ Metrics/ModuleLength:
- app/models/spree/payment/processing.rb
- engines/order_management/spec/services/order_management/subscriptions/proxy_order_syncer_spec.rb
- engines/order_management/spec/services/order_management/subscriptions/validator_spec.rb
- engines/order_management/spec/services/order_management/subscriptions/summary_spec.rb
- lib/open_food_network/column_preference_defaults.rb
- spec/controllers/admin/order_cycles_controller_spec.rb
- spec/controllers/api/orders_controller_spec.rb

View File

@@ -1,11 +1,10 @@
# Our Open Food Network style guide.
#
# These are the rules we agreed upon and we work towards. Code Climate uses
# these rules to rate our code and detect new violations. But when you run
# rubocop locally, the default configuration file `.rubocop.yml` loads
# our "todo lists" to ignore all current violations.
# These are the rules we agreed upon and we work towards.
AllCops:
TargetRailsVersion: 4.0
NewCops: disable
SuggestExtensions: false
TargetRailsVersion: 5.0
Exclude:
- 'bin/**/*'
- 'db/**/*'
@@ -183,7 +182,7 @@ Metrics/AbcSize:
Metrics/BlockLength:
Max: 25
ExcludedMethods: [
IgnoredMethods: [
"class_eval",
"collection",
"context",
@@ -217,3 +216,6 @@ Metrics/ParameterLists:
Metrics/PerceivedComplexity:
Max: 7
Naming/PredicateName:
Enabled: false

File diff suppressed because it is too large Load Diff

View File

@@ -1 +1 @@
2.4.4
2.5.8

View File

@@ -1,8 +1,6 @@
#!/bin/env ruby
SimpleCov.start 'rails' do
minimum_coverage 54
add_filter '/bin/'
add_filter '/config/'
add_filter '/jobs/application_job.rb'
@@ -15,4 +13,8 @@ SimpleCov.start 'rails' do
add_filter '/script'
add_filter '/log'
add_filter '/db'
add_filter '/lib/tasks/sample_data/'
end
require 'codecov'
SimpleCov.formatter = SimpleCov::Formatter::Codecov

7
.storybook/main.js Normal file
View File

@@ -0,0 +1,7 @@
module.exports = {
stories: ['../spec/components/stories/**/*.stories.json'],
addons: [
'@storybook/addon-docs',
'@storybook/addon-controls',
],
};

View File

@@ -0,0 +1,2 @@
<link href='https://fonts.googleapis.com/css?family=Roboto:400,300italic,400italic,300,700,700italic|Oswald:300,400,700' rel='stylesheet' type='text/css'>
<link rel="stylesheet" media="screen" href="http://localhost:3000/assets/darkswarm/all.css" />

5
.storybook/preview.js Normal file
View File

@@ -0,0 +1,5 @@
export const parameters = {
server: {
url: `http://localhost:3000/rails/stories`,
},
};

View File

@@ -6,12 +6,13 @@ This is a general guide to setting up an Open Food Network **development environ
The fastest way to make it work locally is to use Docker, you only need to setup git, see the [Docker setup guide](docker/README.md).
Otherwise, for a local setup you will need:
* Ruby 2.3.7 and bundler
* Ruby and bundler (check current Ruby version in [.ruby-version](https://github.com/openfoodfoundation/openfoodnetwork/blob/master/.ruby-version) file)
* PostgreSQL database
* Chrome (for testing)
The following guides will provide OS-specific step-by-step instructions to get these requirements installed:
- [Ubuntu Setup Guide][ubuntu]
- [Debian Setup Guide][debian]
- [OSX Setup Guide][osx]
If you are likely to need to manage multiple version of ruby on your local machine, we recommend version managers such as [rbenv](https://github.com/rbenv/rbenv) or [RVM](https://rvm.io/).
@@ -20,7 +21,7 @@ For those new to Rails, the following tutorial will help get you up to speed wit
### Get it
If you're planning on contributing code to the project (which we [LOVE](CONTRIBUTING.md)), it is a good idea to begin by forking this repo using the `Fork` button in the top-right corner of this screen. You should then be able to use `git clone` to copy your fork onto your local machine.
So you have set up your local environment according to the requirements listed above. If you're planning on contributing code to the project (which we [LOVE](CONTRIBUTING.md)), it is a good idea to begin by forking this repo using the `Fork` button in the top-right corner of this screen. You should then be able to use `git clone` to copy your fork onto your local machine:
git clone https://github.com/YOUR_GITHUB_USERNAME_HERE/openfoodnetwork
@@ -77,8 +78,6 @@ Note: If your OS is not explicitly supported in the setup guides then not all te
Note: The time zone on your machine should match the one defined in `config/application.yml`.
The project is configured to use [Zeus][zeus] to reduce the pre-test startup time while Rails loads. See the [Zeus GitHub page][zeus] for usage instructions.
Once [npm dependencies are installed][karma], AngularJS tests can be run with:
./script/karma run
@@ -116,8 +115,8 @@ If these commands succeed, you should be able to [continue the setup process](#g
[developer-wiki]: https://github.com/openfoodfoundation/openfoodnetwork/wiki
[osx]: https://github.com/openfoodfoundation/openfoodnetwork/wiki/Development-Environment-Setup:-OS-X
[ubuntu]: https://github.com/openfoodfoundation/openfoodnetwork/wiki/Development-Environment-Setup:-Ubuntu
[debian]: https://github.com/openfoodfoundation/openfoodnetwork/wiki/Development-Environment-Setup:-Debian
[wiki]: https://github.com/openfoodfoundation/openfoodnetwork/wiki
[zeus]: https://github.com/burke/zeus
[rubocop]: https://rubocop.readthedocs.io/en/latest/
[karma]: https://github.com/openfoodfoundation/openfoodnetwork/wiki/Karma
[slack-dev]: https://openfoodnetwork.slack.com/messages/C2GQ45KNU

44
Gemfile
View File

@@ -1,21 +1,21 @@
# frozen_string_literal: true
source 'https://rubygems.org'
ruby "2.4.4"
ruby "2.5.8"
git_source(:github) { |repo_name| "https://github.com/#{repo_name}.git" }
gem 'rails', '~> 5.0.0'
gem 'rails', '~> 5.2'
gem 'activemerchant', '>= 1.78.0'
gem 'angular-rails-templates', '>= 0.3.0'
gem 'awesome_nested_set'
gem 'ransack', '2.3.0'
gem 'ransack', '2.4.1'
gem 'responders'
gem 'sass', '<= 4.7.1'
gem 'sass-rails', '< 6.0.0'
gem 'i18n'
gem 'i18n-js', '~> 3.8.1'
gem 'i18n-js', '~> 3.8.3'
gem 'rails-i18n'
gem 'rails_safe_tasks', '~> 1.0'
@@ -29,14 +29,14 @@ gem "order_management", path: "./engines/order_management"
gem 'web', path: './engines/web'
gem 'activerecord-postgresql-adapter'
gem 'pg', '~> 0.21.0'
gem 'pg', '~> 1.2.3'
gem 'acts_as_list', '0.9.19'
gem 'cancancan', '~> 1.7.0'
gem 'acts_as_list', '1.0.4'
gem 'cancancan', '~> 1.15.0'
gem 'ffaker'
gem 'highline', '2.0.3' # Necessary for the install generator
gem 'json'
gem 'monetize', '~> 1.10'
gem 'monetize', '~> 1.11'
gem 'paranoia', '~> 2.4'
gem 'state_machines-activerecord'
gem 'stringex', '~> 2.8.5'
@@ -48,7 +48,7 @@ gem 'devise'
gem 'devise-encryptable'
gem 'devise-token_authenticatable'
gem 'jwt', '~> 2.2'
gem 'oauth2', '~> 1.4.4' # Used for Stripe Connect
gem 'oauth2', '~> 1.4.7' # Used for Stripe Connect
gem 'daemons'
gem 'delayed_job_active_record'
@@ -68,22 +68,26 @@ gem 'actionpack-action_caching'
# AMS is deprecated, we will introduce an alternative at some point
gem "active_model_serializers", "0.8.4"
gem 'activerecord-session_store'
gem 'acts-as-taggable-on', '~> 4.0'
gem 'acts-as-taggable-on', '~> 7.0'
gem 'angularjs-file-upload-rails', '~> 2.4.1'
gem 'custom_error_message', github: 'jeremydurham/custom-err-msg'
gem 'dalli'
gem 'figaro'
gem 'geocoder'
gem 'gmaps4rails'
gem 'mimemagic', '> 0.3.5'
gem 'paper_trail', '~> 10.3.1'
gem 'paperclip', '~> 3.4.1'
gem 'rack-rewrite'
gem 'rack-ssl', require: 'rack/ssl'
gem 'roadie-rails', '~> 1.3.0'
gem 'roadie-rails', '~> 2.2.0'
gem 'redis', '>= 4.0', require: ['redis', 'redis/connection/hiredis']
gem 'hiredis'
gem 'combine_pdf'
gem 'wicked_pdf'
gem 'wkhtmltopdf-binary', '0.12.5' # We need to upgrade our CI before we can bump this :/
gem 'wkhtmltopdf-binary'
gem 'immigrant'
gem 'roo', '~> 2.8.3'
@@ -92,10 +96,10 @@ gem 'whenever', require: false
gem 'test-unit', '~> 3.4'
gem 'coffee-rails', '~> 4.2.2'
gem 'coffee-rails', '~> 5.0.0'
gem 'compass-rails'
gem 'mini_racer', '0.3.1'
gem 'mini_racer', '0.4.0'
gem 'uglifier', '>= 1.0.3'
@@ -113,6 +117,12 @@ gem 'ofn-qz', github: 'openfoodfoundation/ofn-qz', branch: 'ofn-rails-4'
gem 'good_migrations'
gem 'flipper'
gem 'flipper-active_record'
gem 'flipper-ui'
gem "view_component", require: "view_component/engine"
group :production, :staging do
gem 'ddtrace'
gem 'unicorn-worker-killer'
@@ -120,12 +130,11 @@ end
group :test, :development do
# Pretty printed test output
gem 'atomic'
gem 'awesome_print'
gem 'bullet'
gem 'capybara'
gem 'database_cleaner', require: false
gem "factory_bot_rails", '5.2.0', require: false
gem "factory_bot_rails", '6.2.0', require: false
gem 'fuubar', '~> 2.5.1'
gem 'json_spec', '~> 1.1.4'
gem 'knapsack'
@@ -141,6 +150,7 @@ group :test, :development do
end
group :test do
gem 'codecov', require: false
gem 'simplecov', require: false
gem 'test-prof'
gem 'webmock'
@@ -159,6 +169,8 @@ group :development do
gem 'spring'
gem 'spring-commands-rspec'
gem "view_component_storybook", require: "view_component/storybook/engine"
# 1.0.9 fixed openssl issues on macOS https://github.com/eventmachine/eventmachine/issues/602
# While we don't require this gem directly, no dependents forced the upgrade to a version
# greater than 1.0.9, so we just required the latest available version here.

View File

@@ -47,66 +47,70 @@ PATH
GEM
remote: https://rubygems.org/
specs:
actioncable (5.0.7.2)
actionpack (= 5.0.7.2)
nio4r (>= 1.2, < 3.0)
websocket-driver (~> 0.6.1)
actionmailer (5.0.7.2)
actionpack (= 5.0.7.2)
actionview (= 5.0.7.2)
activejob (= 5.0.7.2)
actioncable (5.2.6)
actionpack (= 5.2.6)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
actionmailer (5.2.6)
actionpack (= 5.2.6)
actionview (= 5.2.6)
activejob (= 5.2.6)
mail (~> 2.5, >= 2.5.4)
rails-dom-testing (~> 2.0)
actionpack (5.0.7.2)
actionview (= 5.0.7.2)
activesupport (= 5.0.7.2)
rack (~> 2.0)
rack-test (~> 0.6.3)
actionpack (5.2.6)
actionview (= 5.2.6)
activesupport (= 5.2.6)
rack (~> 2.0, >= 2.0.8)
rack-test (>= 0.6.3)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.0.2)
actionpack-action_caching (1.2.1)
actionpack-action_caching (1.2.2)
actionpack (>= 4.0.0)
actionview (5.0.7.2)
activesupport (= 5.0.7.2)
actionview (5.2.6)
activesupport (= 5.2.6)
builder (~> 3.1)
erubis (~> 2.7.0)
erubi (~> 1.4)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.0.3)
active_model_serializers (0.8.4)
activemodel (>= 3.0)
activejob (5.0.7.2)
activesupport (= 5.0.7.2)
activejob (5.2.6)
activesupport (= 5.2.6)
globalid (>= 0.3.6)
activemerchant (1.107.4)
activemerchant (1.119.0)
activesupport (>= 4.2)
builder (>= 2.1.2, < 4.0.0)
i18n (>= 0.6.9)
nokogiri (~> 1.4)
activemodel (5.0.7.2)
activesupport (= 5.0.7.2)
activerecord (5.0.7.2)
activemodel (= 5.0.7.2)
activesupport (= 5.0.7.2)
arel (~> 7.0)
activerecord-import (1.0.8)
activemodel (5.2.6)
activesupport (= 5.2.6)
activerecord (5.2.6)
activemodel (= 5.2.6)
activesupport (= 5.2.6)
arel (>= 9.0)
activerecord-import (1.1.0)
activerecord (>= 3.2)
activerecord-postgresql-adapter (0.0.1)
pg
activerecord-session_store (1.1.3)
actionpack (>= 4.0)
activerecord (>= 4.0)
activerecord-session_store (2.0.0)
actionpack (>= 5.2.4.1)
activerecord (>= 5.2.4.1)
multi_json (~> 1.11, >= 1.11.2)
rack (>= 1.5.2, < 3)
railties (>= 4.0)
activesupport (5.0.7.2)
rack (>= 2.0.8, < 3)
railties (>= 5.2.4.1)
activestorage (5.2.6)
actionpack (= 5.2.6)
activerecord (= 5.2.6)
marcel (~> 1.0.0)
activesupport (5.2.6)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 0.7, < 2)
minitest (~> 5.1)
tzinfo (~> 1.1)
acts-as-taggable-on (4.0.0)
activerecord (>= 4.0)
acts_as_list (0.9.19)
activerecord (>= 3.0)
acts-as-taggable-on (7.0.0)
activerecord (>= 5.0, < 6.2)
acts_as_list (1.0.4)
activerecord (>= 4.2)
addressable (2.7.0)
public_suffix (>= 2.0.2, < 5.0)
andand (1.3.3)
@@ -114,48 +118,49 @@ GEM
railties (>= 4.2, < 7)
sprockets (>= 3.0, < 5)
tilt
angular_rails_csrf (4.2.0)
angular_rails_csrf (4.5.0)
railties (>= 3, < 7)
angularjs-file-upload-rails (2.4.1)
angularjs-rails (1.5.5)
arel (7.1.4)
arel (9.0.0)
ast (2.4.2)
atomic (1.1.101)
awesome_nested_set (3.4.0)
activerecord (>= 4.0.0, < 7.0)
awesome_print (1.8.0)
awesome_print (1.9.2)
aws-sdk (1.67.0)
aws-sdk-v1 (= 1.67.0)
aws-sdk-v1 (1.67.0)
json (~> 1.4)
nokogiri (~> 1)
bcrypt (3.1.16)
bugsnag (6.19.0)
bugsnag (6.20.0)
concurrent-ruby (~> 1.0)
builder (3.2.4)
bullet (6.1.4)
activesupport (>= 3.0.0)
uniform_notifier (~> 1.11)
byebug (11.1.3)
cancancan (1.7.1)
capybara (3.32.2)
cancancan (1.15.0)
capybara (3.35.3)
addressable
mini_mime (>= 0.1.3)
nokogiri (~> 1.8)
rack (>= 1.6.0)
rack-test (>= 0.6.3)
regexp_parser (~> 1.5)
regexp_parser (>= 1.5, < 3.0)
xpath (~> 3.2)
childprocess (3.0.0)
chronic (0.10.2)
chunky_png (1.3.14)
chunky_png (1.4.0)
climate_control (0.2.0)
cocaine (0.5.8)
climate_control (>= 0.0.3, < 1.0)
codecov (0.5.2)
simplecov (>= 0.15, < 0.22)
coderay (1.1.3)
coffee-rails (4.2.2)
coffee-rails (5.0.0)
coffee-script (>= 2.2.0)
railties (>= 4.0.0)
railties (>= 5.2.0)
coffee-script (2.4.1)
coffee-script-source
execjs
@@ -174,23 +179,26 @@ GEM
sass (>= 3.3.0, < 3.5)
compass-import-once (1.0.5)
sass (>= 3.2, < 3.5)
compass-rails (2.0.1)
compass-rails (4.0.0)
compass (~> 1.0.0)
sass-rails (< 5.1)
sprockets (< 4.0)
concurrent-ruby (1.1.8)
crack (0.4.5)
rexml
crass (1.0.6)
css_parser (1.7.1)
css_parser (1.9.0)
addressable
daemons (1.3.1)
daemons (1.4.0)
dalli (2.7.11)
database_cleaner (1.99.0)
ddtrace (0.46.0)
ddtrace (0.49.0)
ffi (~> 1.0)
msgpack
debugger-linecache (1.2.0)
delayed_job (4.1.9)
activesupport (>= 3.0, < 6.2)
delayed_job_active_record (4.1.5)
delayed_job_active_record (4.1.6)
activerecord (>= 3.0, < 6.2)
delayed_job (>= 3.0, < 5)
delayed_job_web (1.4.4)
@@ -198,7 +206,7 @@ GEM
delayed_job (> 2.0.3)
rack-protection (>= 1.5.5)
sinatra (>= 1.4.4)
devise (4.7.3)
devise (4.8.0)
bcrypt (~> 3.0)
orm_adapter (~> 0.1)
railties (>= 4.1.0)
@@ -209,22 +217,34 @@ GEM
devise-token_authenticatable (1.1.0)
devise (>= 4.0.0, < 5.0.0)
diff-lcs (1.4.4)
docile (1.3.4)
erubis (2.7.0)
docile (1.3.5)
erubi (1.10.0)
eventmachine (1.2.7)
excon (0.79.0)
execjs (2.7.0)
factory_bot (5.2.0)
activesupport (>= 4.2.0)
factory_bot_rails (5.2.0)
factory_bot (~> 5.2.0)
railties (>= 4.2.0)
faraday (1.0.1)
factory_bot (6.2.0)
activesupport (>= 5.0.0)
factory_bot_rails (6.2.0)
factory_bot (~> 6.2.0)
railties (>= 5.0.0)
faraday (1.3.0)
faraday-net_http (~> 1.0)
multipart-post (>= 1.2, < 3)
ffaker (2.16.0)
ffi (1.13.1)
ruby2_keywords
faraday-net_http (1.0.1)
ffaker (2.18.0)
ffi (1.15.0)
figaro (1.2.0)
thor (>= 0.14.0, < 2)
flipper (0.20.4)
flipper-active_record (0.20.4)
activerecord (>= 5.0, < 7)
flipper (~> 0.20.4)
flipper-ui (0.20.4)
erubi (>= 1.0.0, < 2.0.0)
flipper (~> 0.20.4)
rack (>= 1.4, < 3)
rack-protection (>= 1.5.3, < 2.2.0)
fog-aws (2.0.1)
fog-core (~> 1.38)
fog-json (~> 1.0)
@@ -250,7 +270,7 @@ GEM
fuubar (2.5.1)
rspec-core (~> 3.0)
ruby-progressbar (~> 1.4)
geocoder (1.6.6)
geocoder (1.6.7)
get_process_mem (0.2.7)
ffi (~> 1.0)
globalid (0.4.2)
@@ -264,9 +284,10 @@ GEM
tilt
hashdiff (1.0.1)
highline (2.0.3)
i18n (1.8.5)
hiredis (0.6.3)
i18n (1.8.10)
concurrent-ruby (~> 1.0)
i18n-js (3.8.1)
i18n-js (3.8.3)
i18n (>= 0.6.6)
immigrant (0.3.6)
activerecord (>= 3.0)
@@ -284,7 +305,7 @@ GEM
json_spec (1.1.5)
multi_json (~> 1.0)
rspec (>= 2.0, < 4.0)
jwt (2.2.2)
jwt (2.2.3)
kaminari (1.2.1)
activesupport (>= 4.1.0)
kaminari-actionview (= 1.2.1)
@@ -298,30 +319,34 @@ GEM
kaminari-core (= 1.2.1)
kaminari-core (1.2.1)
kgio (2.11.3)
knapsack (1.20.0)
knapsack (1.22.0)
rake
launchy (2.4.3)
addressable (~> 2.3)
letter_opener (1.7.0)
launchy (~> 2.2)
libv8 (8.4.255.0)
loofah (2.9.0)
libv8-node (15.14.0.0)
loofah (2.9.1)
crass (~> 1.0.2)
nokogiri (>= 1.5.9)
mail (2.7.1)
mini_mime (>= 0.1.1)
marcel (1.0.1)
method_source (1.0.0)
mime-types (3.3.1)
mime-types-data (~> 3.2015)
mime-types-data (3.2020.1104)
mini_mime (1.0.2)
mini_portile2 (2.4.0)
mini_racer (0.3.1)
libv8 (~> 8.4.255)
mimemagic (0.4.3)
nokogiri (~> 1)
rake
mini_mime (1.1.0)
mini_portile2 (2.5.1)
mini_racer (0.4.0)
libv8-node (~> 15.14.0.0)
minitest (5.14.4)
monetize (1.10.0)
monetize (1.11.0)
money (~> 6.12)
money (6.14.0)
money (6.14.1)
i18n (>= 0.6.4, <= 2)
msgpack (1.4.2)
multi_json (1.15.0)
@@ -329,10 +354,11 @@ GEM
multipart-post (2.1.1)
mustermann (1.1.1)
ruby2_keywords (~> 0.0.1)
nio4r (2.5.2)
nokogiri (1.10.10)
mini_portile2 (~> 2.4.0)
oauth2 (1.4.4)
nio4r (2.5.7)
nokogiri (1.11.4)
mini_portile2 (~> 2.5.0)
racc (~> 1.4)
oauth2 (1.4.7)
faraday (>= 0.8, < 2.0)
jwt (>= 1.0, < 3.0)
multi_json (~> 1.3)
@@ -351,16 +377,14 @@ GEM
parallel (1.20.1)
paranoia (2.4.3)
activerecord (>= 4.0, < 6.2)
parser (3.0.0.0)
parser (3.0.1.1)
ast (~> 2.4.1)
paypal-sdk-core (0.3.4)
multi_json (~> 1.0)
xml-simple
paypal-sdk-merchant (1.117.2)
paypal-sdk-core (~> 0.3.0)
pg (0.21.0)
polyamorous (2.3.0)
activerecord (>= 5.0)
pg (1.2.3)
power_assert (2.0.0)
pry (0.13.1)
coderay (~> 1.1)
@@ -369,27 +393,29 @@ GEM
byebug (~> 11.0)
pry (~> 0.13.0)
public_suffix (4.0.6)
racc (1.5.2)
rack (2.2.3)
rack-mini-profiler (2.3.1)
rack-mini-profiler (2.3.2)
rack (>= 1.2.0)
rack-protection (2.1.0)
rack
rack-rewrite (1.5.1)
rack-ssl (1.4.1)
rack
rack-test (0.6.3)
rack (>= 1.0)
rails (5.0.7.2)
actioncable (= 5.0.7.2)
actionmailer (= 5.0.7.2)
actionpack (= 5.0.7.2)
actionview (= 5.0.7.2)
activejob (= 5.0.7.2)
activemodel (= 5.0.7.2)
activerecord (= 5.0.7.2)
activesupport (= 5.0.7.2)
rack-test (1.1.0)
rack (>= 1.0, < 3)
rails (5.2.6)
actioncable (= 5.2.6)
actionmailer (= 5.2.6)
actionpack (= 5.2.6)
actionview (= 5.2.6)
activejob (= 5.2.6)
activemodel (= 5.2.6)
activerecord (= 5.2.6)
activestorage (= 5.2.6)
activesupport (= 5.2.6)
bundler (>= 1.3.0)
railties (= 5.0.7.2)
railties (= 5.2.6)
sprockets-rails (>= 2.0.0)
rails-controller-testing (1.0.5)
actionpack (>= 5.0.1.rc1)
@@ -404,38 +430,37 @@ GEM
i18n (>= 0.7, < 2)
railties (>= 5.0, < 6)
rails_safe_tasks (1.0.0)
railties (5.0.7.2)
actionpack (= 5.0.7.2)
activesupport (= 5.0.7.2)
railties (5.2.6)
actionpack (= 5.2.6)
activesupport (= 5.2.6)
method_source
rake (>= 0.8.7)
thor (>= 0.18.1, < 2.0)
thor (>= 0.19.0, < 2.0)
rainbow (3.0.0)
raindrops (0.19.1)
rake (13.0.3)
ransack (2.3.0)
actionpack (>= 5.0)
activerecord (>= 5.0)
activesupport (>= 5.0)
ransack (2.4.1)
activerecord (>= 5.2.4)
activesupport (>= 5.2.4)
i18n
polyamorous (= 2.3.0)
rb-fsevent (0.10.4)
rb-inotify (0.10.1)
ffi (~> 1.0)
redcarpet (3.5.1)
regexp_parser (1.8.2)
redis (4.2.5)
regexp_parser (2.1.1)
request_store (1.5.0)
rack (>= 1.4)
responders (2.4.1)
actionpack (>= 4.2.0, < 6.0)
railties (>= 4.2.0, < 6.0)
rexml (3.2.4)
roadie (3.5.1)
responders (3.0.1)
actionpack (>= 5.0)
railties (>= 5.0)
rexml (3.2.5)
roadie (4.0.0)
css_parser (~> 1.4)
nokogiri (~> 1.8)
roadie-rails (1.3.0)
railties (>= 3.0, < 5.3)
roadie (~> 3.1)
roadie-rails (2.2.0)
railties (>= 5.1, < 6.2)
roadie (>= 3.1, < 5.0)
roo (2.8.3)
nokogiri (~> 1)
rubyzip (>= 1.3.0, < 3.0.0)
@@ -448,20 +473,20 @@ GEM
rspec-expectations (3.10.1)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.10.0)
rspec-mocks (3.10.0)
rspec-mocks (3.10.2)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.10.0)
rspec-rails (4.0.2)
actionpack (>= 4.2)
activesupport (>= 4.2)
railties (>= 4.2)
rspec-rails (5.0.1)
actionpack (>= 5.2)
activesupport (>= 5.2)
railties (>= 5.2)
rspec-core (~> 3.10)
rspec-expectations (~> 3.10)
rspec-mocks (~> 3.10)
rspec-support (~> 3.10)
rspec-retry (0.6.2)
rspec-core (> 3.3)
rspec-support (3.10.1)
rspec-support (3.10.2)
rswag (2.4.0)
rswag-api (= 2.4.0)
rswag-specs (= 2.4.0)
@@ -475,21 +500,21 @@ GEM
rswag-ui (2.4.0)
actionpack (>= 3.1, < 7.0)
railties (>= 3.1, < 7.0)
rubocop (1.11.0)
rubocop (1.15.0)
parallel (~> 1.10)
parser (>= 3.0.0.0)
rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 1.8, < 3.0)
rexml
rubocop-ast (>= 1.2.0, < 2.0)
rubocop-ast (>= 1.5.0, < 2.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 1.4.0, < 3.0)
rubocop-ast (1.4.1)
parser (>= 2.7.1.5)
rubocop-rails (2.9.1)
rubocop-ast (1.5.0)
parser (>= 3.0.1.1)
rubocop-rails (2.10.1)
activesupport (>= 4.2.0)
rack (>= 1.1)
rubocop (>= 0.90.0, < 2.0)
rubocop (>= 1.7.0, < 2.0)
ruby-progressbar (1.11.0)
ruby-rc4 (0.1.5)
ruby2_keywords (0.0.2)
@@ -509,10 +534,12 @@ GEM
rubyzip (>= 1.2.2)
shoulda-matchers (4.5.1)
activesupport (>= 4.2.0)
simplecov (0.18.5)
simplecov (0.21.2)
docile (~> 1.1)
simplecov-html (~> 0.11)
simplecov_json_formatter (~> 0.1)
simplecov-html (0.12.3)
simplecov_json_formatter (0.1.2)
sinatra (2.1.0)
mustermann (~> 1.0)
rack (~> 2.2)
@@ -529,17 +556,17 @@ GEM
activesupport (>= 4.0)
sprockets (>= 3.0.0)
state_machines (0.5.0)
state_machines-activemodel (0.7.1)
activemodel (>= 4.1)
state_machines-activemodel (0.8.0)
activemodel (>= 5.1)
state_machines (>= 0.5.0)
state_machines-activerecord (0.6.0)
activerecord (>= 4.1)
state_machines-activemodel (>= 0.5.0)
state_machines-activerecord (0.8.0)
activerecord (>= 5.1)
state_machines-activemodel (>= 0.8.0)
stringex (2.8.5)
stripe (5.30.0)
temple (0.8.2)
test-prof (0.11.3)
test-unit (3.4.0)
test-prof (1.0.5)
test-unit (3.4.1)
power_assert
thor (0.20.3)
thread_safe (0.3.6)
@@ -550,34 +577,38 @@ GEM
uglifier (4.2.0)
execjs (>= 0.3.0, < 3)
unicode-display_width (2.0.0)
unicorn (5.8.0)
unicorn (6.0.0)
kgio (~> 2.6)
raindrops (~> 0.7)
unicorn-rails (2.2.1)
rack
unicorn
unicorn-worker-killer (0.4.4)
unicorn-worker-killer (0.4.5)
get_process_mem (~> 0)
unicorn (>= 4, < 6)
unicorn (>= 4, < 7)
uniform_notifier (1.14.1)
view_component (2.31.1)
activesupport (>= 5.0.0, < 7.0)
view_component_storybook (0.8.0)
view_component (>= 2.2)
warden (1.2.9)
rack (>= 2.0.9)
webdrivers (4.6.0)
nokogiri (~> 1.6)
rubyzip (>= 1.3.0)
selenium-webdriver (>= 3.0, < 4.0)
webmock (3.12.1)
webmock (3.13.0)
addressable (>= 2.3.6)
crack (>= 0.3.2)
hashdiff (>= 0.4.0, < 2.0.0)
websocket-driver (0.6.5)
websocket-driver (0.7.3)
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.5)
whenever (1.0.0)
chronic (>= 0.6.3)
wicked_pdf (2.1.0)
activesupport
wkhtmltopdf-binary (0.12.5)
wkhtmltopdf-binary (0.12.6.5)
xml-simple (1.1.8)
xpath (3.2.0)
nokogiri (~> 1.8)
@@ -592,24 +623,24 @@ DEPENDENCIES
activerecord-import
activerecord-postgresql-adapter
activerecord-session_store
acts-as-taggable-on (~> 4.0)
acts_as_list (= 0.9.19)
acts-as-taggable-on (~> 7.0)
acts_as_list (= 1.0.4)
andand
angular-rails-templates (>= 0.3.0)
angular_rails_csrf
angularjs-file-upload-rails (~> 2.4.1)
angularjs-rails (= 1.5.5)
atomic
awesome_nested_set
awesome_print
aws-sdk (= 1.67.0)
bugsnag
bullet
byebug
cancancan (~> 1.7.0)
cancancan (~> 1.15.0)
capybara
catalog!
coffee-rails (~> 4.2.2)
codecov
coffee-rails (~> 5.0.0)
combine_pdf
compass-rails
custom_error_message!
@@ -626,9 +657,12 @@ DEPENDENCIES
devise-token_authenticatable
dfc_provider!
eventmachine (>= 1.2.3)
factory_bot_rails (= 5.2.0)
factory_bot_rails (= 6.2.0)
ffaker
figaro
flipper
flipper-active_record
flipper-ui
fog-aws (>= 0.6.0)
foundation-icons-sass-rails
foundation-rails (= 5.5.2.1)
@@ -638,8 +672,9 @@ DEPENDENCIES
good_migrations
haml
highline (= 2.0.3)
hiredis
i18n
i18n-js (~> 3.8.1)
i18n-js (~> 3.8.3)
immigrant
jquery-migrate-rails
jquery-rails (= 4.4.0)
@@ -650,29 +685,31 @@ DEPENDENCIES
kaminari (~> 1.2.1)
knapsack
letter_opener (>= 1.4.1)
mini_racer (= 0.3.1)
monetize (~> 1.10)
oauth2 (~> 1.4.4)
mimemagic (> 0.3.5)
mini_racer (= 0.4.0)
monetize (~> 1.11)
oauth2 (~> 1.4.7)
ofn-qz!
order_management!
paper_trail (~> 10.3.1)
paperclip (~> 3.4.1)
paranoia (~> 2.4)
paypal-sdk-merchant (= 1.117.2)
pg (~> 0.21.0)
pg (~> 1.2.3)
pry
pry-byebug
rack-mini-profiler (< 3.0.0)
rack-rewrite
rack-ssl
rails (~> 5.0.0)
rails (~> 5.2)
rails-controller-testing
rails-i18n
rails_safe_tasks (~> 1.0)
ransack (= 2.3.0)
ransack (= 2.4.1)
redcarpet
redis (>= 4.0)
responders
roadie-rails (~> 1.3.0)
roadie-rails (~> 2.2.0)
roo (~> 2.8.3)
rspec-rails (>= 3.5.2)
rspec-retry
@@ -696,15 +733,17 @@ DEPENDENCIES
uglifier (>= 1.0.3)
unicorn-rails
unicorn-worker-killer
view_component
view_component_storybook
web!
webdrivers
webmock
whenever
wicked_pdf
wkhtmltopdf-binary (= 0.12.5)
wkhtmltopdf-binary
RUBY VERSION
ruby 2.4.4p296
ruby 2.5.8p224
BUNDLED WITH
1.17.3

View File

@@ -1,6 +1,6 @@
[![Build Status](https://semaphoreci.com/api/v1/openfoodfoundation/openfoodnetwork-2/branches/master/badge.svg)](https://semaphoreci.com/openfoodfoundation/openfoodnetwork-2)
[![Code Climate](https://codeclimate.com/github/openfoodfoundation/openfoodnetwork.png)](https://codeclimate.com/github/openfoodfoundation/openfoodnetwork)
[![Build](https://github.com/openfoodfoundation/openfoodnetwork/actions/workflows/build.yml/badge.svg)](https://github.com/openfoodfoundation/openfoodnetwork/actions/workflows/build.yml)
[![codecov](https://codecov.io/gh/openfoodfoundation/openfoodnetwork/branch/master/graph/badge.svg?token=FBSOod4qiu)](https://codecov.io/gh/openfoodfoundation/openfoodnetwork)
[![Code Climate](https://codeclimate.com/github/openfoodfoundation/openfoodnetwork.png)](https://codeclimate.com/github/openfoodfoundation/openfoodnetwork)
# Open Food Network
@@ -34,7 +34,7 @@ We also have a [Super Admin Guide][super-admin-guide] to help with configuration
## Testing
If you'd like to help out with testing, please introduce yourself on the #testing channel on [Slack][slack-invite] and download the [ZenHub browser extension][zenhub] to view the development pipeline.
If you'd like to help out with testing, please introduce yourself on the #testing channel on [Slack][slack-invite] and download the [ZenHub browser extension][zenhub] to view the development pipeline. Also, do have a look in our [Welcome New QAs board](https://github.com/openfoodfoundation/openfoodnetwork/projects/31) for some good first issues, both on manual and automated testing (RSpec/Capybara).
We use [BrowserStack](https://www.browserstack.com/) as a manual testing tool. BrowserStack provides open source projects with unlimited and free of charge accounts. A big thanks to them!

View File

@@ -52,6 +52,9 @@
//= require admin/spree/handlebar_extensions
// OFN specific
//= require ../shared/shared
//= require_tree ../shared/directives
//= require_tree ../templates/shared
//= require_tree ../templates/admin
//= require ./admin_ofn
//= require ./customers/customers

View File

@@ -147,7 +147,7 @@ angular.module("ofn.admin").controller "AdminProductEditCtrl", ($scope, $timeout
if confirm("Are you sure?")
$http(
method: "DELETE"
url: "/api/products/" + product.id
url: "/api/v0/products/" + product.id
).success (data) ->
$scope.products.splice $scope.products.indexOf(product), 1
DirtyProducts.deleteProduct product.id
@@ -162,7 +162,7 @@ angular.module("ofn.admin").controller "AdminProductEditCtrl", ($scope, $timeout
if confirm(t("are_you_sure"))
$http(
method: "DELETE"
url: "/api/products/" + product.permalink_live + "/variants/" + variant.id
url: "/api/v0/products/" + product.permalink_live + "/variants/" + variant.id
).success (data) ->
$scope.removeVariant(product, variant)
else

View File

@@ -1,7 +1,7 @@
angular.module('admin.enterpriseFees').directive 'spreeDeleteResource', ->
(scope, element, attrs) ->
if scope.enterprise_fee.id
url = '/api/enterprise_fees/' + scope.enterprise_fee.id
url = '/api/v0/enterprise_fees/' + scope.enterprise_fee.id
html = '<a href="' + url + '" class="delete-resource icon_link icon-trash no-text" data-action="remove" data-confirm="' + t('are_you_sure') + '" url="' + url + '"></a>'
#var html = '<a href="'+url+'" class="delete-resource" data-confirm="Are you sure?"><img alt="Delete" src="/assets/admin/icons/delete.png" /> Delete</a>';
element.append html

View File

@@ -1,5 +1,5 @@
angular.module("admin.indexUtils").factory "resources", ($resource) ->
LineItem = $resource '/api/orders/:order_number/line_items/:line_item_id.json',
LineItem = $resource '/api/v0/orders/:order_number/line_items/:line_item_id.json',
{ order_number: '@order_number', line_item_id: '@line_item_id'},
'update': { method: 'PUT' }
Customer = $resource '/admin/customers/:customer_id.json',

View File

@@ -1,5 +1,5 @@
angular.module('admin.orderCycles').factory('ExchangeProduct', ($resource) ->
ExchangeProductResource = $resource('/api/exchanges/:exchange_id/products.json', {}, {
ExchangeProductResource = $resource('/api/v0/exchanges/:exchange_id/products.json', {}, {
'index': { method: 'GET' }
'variant_count': { method: 'GET', params: { action_name: "variant_count" }}
})

View File

@@ -9,7 +9,7 @@ angular.module("admin.products").controller "editUnitsCtrl", ($scope, VariantUni
if $scope.product.variant_unit == 'items'
$scope.variant_unit_with_scale = 'items'
else
$scope.variant_unit_with_scale = $scope.product.variant_unit + '_' + $scope.product.variant_unit_scale
$scope.variant_unit_with_scale = $scope.product.variant_unit + '_' + $scope.product.variant_unit_scale.replace(/\.0$/, '');
$scope.setFields = ->
if $scope.variant_unit_with_scale == 'items'

View File

@@ -1,12 +1,13 @@
angular.module("admin.products")
.controller "unitsCtrl", ($scope, VariantUnitManager, OptionValueNamer) ->
.controller "unitsCtrl", ($scope, VariantUnitManager, OptionValueNamer, UnitPrices) ->
$scope.product = { master: {} }
$scope.product.master.product = $scope.product
$scope.placeholder_text = ""
$scope.$watchCollection '[product.variant_unit_with_scale, product.master.unit_value_with_description]', ->
$scope.$watchCollection '[product.variant_unit_with_scale, product.master.unit_value_with_description, product.price, product.variant_unit_name]', ->
$scope.processVariantUnitWithScale()
$scope.processUnitValueWithDescription()
$scope.processUnitPrice()
$scope.placeholder_text = new OptionValueNamer($scope.product.master).name()
$scope.variant_unit_options = VariantUnitManager.variantUnitOptions()
@@ -32,6 +33,14 @@ angular.module("admin.products")
$scope.product.master.unit_value *= $scope.product.variant_unit_scale if $scope.product.master.unit_value && $scope.product.variant_unit_scale
$scope.product.master.unit_description = match[3]
$scope.processUnitPrice = ->
price = $scope.product.price
scale = $scope.product.variant_unit_scale
unit_type = $scope.product.variant_unit
unit_value = $scope.product.master.unit_value
variant_unit_name = $scope.product.variant_unit_name
$scope.unit_price = UnitPrices.displayableUnitPrice(price, scale, unit_type, unit_value, variant_unit_name)
$scope.hasVariants = (product) ->
Object.keys(product.variants).length > 0

View File

@@ -1,8 +1,24 @@
angular.module("admin.products").controller "variantUnitsCtrl", ($scope, VariantUnitManager, $timeout) ->
angular.module("admin.products").controller "variantUnitsCtrl", ($scope, VariantUnitManager, $timeout, UnitPrices) ->
$scope.unitName = (scale, type) ->
VariantUnitManager.getUnitName(scale, type)
$scope.$watchCollection "[unit_value_human, variant.price]", ->
$scope.processUnitPrice()
$scope.processUnitPrice = ->
if ($scope.variant)
price = $scope.variant.price
scale = $scope.scale
unit_type = angular.element("#product_variant_unit").val()
if (unit_type != "items")
$scope.updateValue()
unit_value = $scope.unit_value
else
unit_value = 1
variant_unit_name = angular.element("#product_variant_unit_name").val()
$scope.unit_price = UnitPrices.displayableUnitPrice(price, scale, unit_type, unit_value, variant_unit_name)
$scope.scale = angular.element('#product_variant_unit_scale').val()
$scope.updateValue = ->
@@ -11,4 +27,6 @@ angular.module("admin.products").controller "variantUnitsCtrl", ($scope, Variant
variant_unit_value = angular.element('#variant_unit_value').val()
$scope.unit_value_human = variant_unit_value / $scope.scale
$timeout -> $scope.processUnitPrice()
$timeout -> $scope.updateValue()

View File

@@ -1 +1 @@
angular.module("admin.products", ["textAngular", "admin.utils"])
angular.module("admin.products", ["textAngular", "admin.utils", "OFNShared"])

View File

@@ -8,7 +8,7 @@ angular.module("ofn.admin").factory "ProductImageService", (FileUploader, SpreeA
autoUpload: true
configure: (product) =>
@imageUploader.url = "/api/product_images/#{product.id}"
@imageUploader.url = "/api/v0/product_images/#{product.id}"
@imagePreview = product.image_url
@imageUploader.onSuccessItem = (image, response) =>
product.thumb_url = response.thumb_url

View File

@@ -0,0 +1,32 @@
angular.module("admin.products").factory "UnitPrices", (VariantUnitManager, localizeCurrencyFilter) ->
class UnitPrices
@displayableUnitPrice: (price, scale, unit_type, unit_value, variant_unit_name) ->
if price && !isNaN(price) && unit_type && unit_value
value = localizeCurrencyFilter(UnitPrices.price(price, scale, unit_type, unit_value, variant_unit_name))
unit = UnitPrices.unit(scale, unit_type, variant_unit_name)
return value + " / " + unit
return null
@price: (price, scale, unit_type, unit_value) ->
price / @denominator(scale, unit_type, unit_value)
@denominator: (scale, unit_type, unit_value) ->
unit = @unit(scale, unit_type)
if unit == "lb"
unit_value / 453.6
else if unit == "kg"
unit_value / 1000
else
unit_value
@unit: (scale, unit_type, variant_unit_name = '') ->
if variant_unit_name.length > 0
variant_unit_name
else if unit_type == "items"
"item"
else if VariantUnitManager.systemOfMeasurement(scale, unit_type) == "imperial"
"lb"
else if unit_type == "weight"
"kg"
else if unit_type == "volume"
"L"

View File

@@ -67,3 +67,9 @@ angular.module("admin.products").factory "VariantUnitManager", (availableUnits)
scaleSystem = @units[unitType][scale]['system']
(parseFloat(scale) for scale, scaleInfo of @units[unitType] when scaleInfo['system'] == scaleSystem).sort (a, b) ->
a - b
@systemOfMeasurement: (scale, unitType) ->
if @units[unitType][scale]
@units[unitType][scale]['system']
else
'custom'

View File

@@ -9,12 +9,12 @@ angular.module("admin.resources").factory 'EnterpriseResource', ($resource) ->
'update':
method: 'PUT'
'removeLogo':
url: '/api/enterprises/:id/logo.json'
url: '/api/v0/enterprises/:id/logo.json'
method: 'DELETE'
'removePromoImage':
url: '/api/enterprises/:id/promo_image.json'
url: '/api/v0/enterprises/:id/promo_image.json'
method: 'DELETE'
'removeTermsAndConditions':
url: '/api/enterprises/:id/terms_and_conditions.json'
url: '/api/v0/enterprises/:id/terms_and_conditions.json'
method: 'DELETE'
})

View File

@@ -1,17 +1,17 @@
angular.module("admin.resources").factory 'OrderResource', ($resource) ->
$resource('/admin/orders/:id/:action.json', {}, {
'index':
url: '/api/orders.json'
url: '/api/v0/orders.json'
method: 'GET'
'update':
method: 'PUT'
'capture':
url: '/api/orders/:id/capture.json'
url: '/api/v0/orders/:id/capture.json'
method: 'PUT'
params:
id: '@id'
'ship':
url: '/api/orders/:id/ship.json'
url: '/api/v0/orders/:id/ship.json'
method: 'PUT'
params:
id: '@id'

View File

@@ -1,6 +1,6 @@
angular.module("admin.resources").factory 'ProductResource', ($resource) ->
$resource('/admin/product/:id/:action.json', {}, {
'index':
url: '/api/products/bulk_products.json'
url: '/api/v0/products/bulk_products.json'
method: 'GET'
})

View File

@@ -10,8 +10,8 @@ angular.module("ofn.admin").factory "BulkProducts", (ProductResource, dataFetche
angular.extend(@pagination, data.pagination)
cloneProduct: (product) ->
$http.post("/api/products/" + product.id + "/clone").success (data) =>
dataFetcher("/api/products/" + data.id + "?template=bulk_show").then (newProduct) =>
$http.post("/api/v0/products/" + product.id + "/clone").success (data) =>
dataFetcher("/api/v0/products/" + data.id + "?template=bulk_show").then (newProduct) =>
@unpackProduct newProduct
@insertProductAfter(product, newProduct)

View File

@@ -23,8 +23,6 @@ angular.module("admin.tagRules").controller "TagRulesCtrl", ($scope, $http, $fil
preferred_customer_tags: (tag.text for tag in tagGroup.tags).join(",")
type: "TagRule::#{ruleType}"
switch ruleType
when "DiscountOrder"
newRule.calculator = { preferred_flat_percent: 0 }
when "FilterShippingMethods"
newRule.peferred_shipping_method_tags = []
newRule.preferred_matched_shipping_methods_visibility = "visible"

View File

@@ -8,7 +8,6 @@ angular.module("admin.tagRules").directive 'newTagRuleDialog', ($compile, $templ
template = $compile($templateCache.get('admin/new_tag_rule_dialog.html'))(scope)
scope.ruleTypes = [
# { id: "DiscountOrder", name: 'Apply a discount to orders' }
{ id: "FilterProducts", name: t('js.tag_rules.show_hide_variants') }
{ id: "FilterShippingMethods", name: t('js.tag_rules.show_hide_shipping') }
{ id: "FilterPaymentMethods", name: t('js.tag_rules.show_hide_payment') }

View File

@@ -1,11 +1,11 @@
angular.module("admin.utils").factory "StatusMessage", ($timeout) ->
angular.module("admin.utils").factory "StatusMessage", ->
new class StatusMessage
types:
progress: {timeout: false, style: {color: '#ff9906'}}
alert: {timeout: 5000, style: {color: 'grey'}}
notice: {timeout: false, style: {color: 'grey'}}
success: {timeout: 5000, style: {color: '#9fc820'}}
failure: {timeout: false, style: {color: '#da5354'}}
progress: {style: {color: '#ff9906'}}
alert: {style: {color: 'grey'}}
notice: {style: {color: 'grey'}}
success: {style: {color: '#9fc820'}}
failure: {style: {color: '#da5354'}}
statusMessage:
text: ""
@@ -25,13 +25,7 @@ angular.module("admin.utils").factory "StatusMessage", ($timeout) ->
display: (type, text) ->
@statusMessage.text = text
@statusMessage.style = @types[type].style
$timeout.cancel @statusMessage.timeout if @statusMessage.timeout
timeout = @types[type].timeout
if timeout
@statusMessage.timeout = $timeout =>
@clear()
, timeout, true
null # So we don't return weird timeouts
null
clear: ->
@statusMessage.text = ''

View File

@@ -42,7 +42,7 @@ angular.module("admin.variantOverrides").controller "AdminVariantOverridesCtrl",
$scope.fetchProducts()
$scope.fetchProducts = ->
url = "/api/products/overridable?page=::page::;per_page=100"
url = "/api/v0/products/overridable?page=::page::;per_page=100"
PagedFetcher.fetch url, $scope.addProducts
$scope.addProducts = (data) ->

View File

@@ -11,14 +11,17 @@
#= require leaflet-1.6.0.js
#= require leaflet-providers.js
#= require lodash.underscore.js
# bluebird.js is a dependency of angular-google-maps.js 2.0.0
# bluebird.js and angular-simple-logger are dependencies of angular-google-maps.js 2.0.0
#= require bluebird.js
#= require angular-simple-logger.min.js
#= require angular-scroll.min.js
#= require angular-google-maps.min.js
#= require ../shared/mm-foundation-tpls-0.9.0-20180826174721.min.js
#= require ../shared/ng-infinite-scroll.min.js
#= require ../shared/angular-local-storage.js
#= require ../shared/angular-slideables.js
#= require ../shared/shared
#= require_tree ../shared/directives
#= require angularjs-file-upload
#= require i18n/translations

View File

@@ -3,7 +3,7 @@ Darkswarm.controller "EditBoughtOrderController", ($scope, $resource, $timeout,
$scope.removeEnabled = true
$scope.deleteLineItem = (id) ->
if Cart.has_one_line_item()
if Cart.isOnlyItemInOrder(id)
Messages.error(t 'orders_cannot_remove_the_final_item')
$scope.removeEnabled = false
$timeout (->

View File

@@ -24,7 +24,7 @@ Darkswarm.controller "HubNodeCtrl", ($scope, HashNavigation, CurrentHub, $http,
$scope.shopfront_loading = true
$scope.toggle_tab(event)
$http.get("/api/shops/" + $scope.hub.id)
$http.get("/api/v0/shops/" + $scope.hub.id)
.success (data) ->
$scope.shopfront_loading = false
$scope.hub = data

View File

@@ -24,7 +24,7 @@ Darkswarm.controller "ProducerNodeCtrl", ($scope, HashNavigation, $anchorScroll,
$scope.shopfront_loading = true
$scope.toggle_tab(event)
$http.get("/api/shops/" + $scope.producer.id)
$http.get("/api/v0/shops/" + $scope.producer.id)
.success (data) ->
$scope.shopfront_loading = false
$scope.producer = data

View File

@@ -11,6 +11,8 @@ Darkswarm.controller "ProductsCtrl", ($scope, $sce, $filter, $rootScope, Product
$scope.supplied_taxons = null
$scope.supplied_properties = null
$scope.showFilterSidebar = false
$scope.activeTaxons = []
$scope.activeProperties = []
# Update filters after initial load of shop tab
$timeout =>
@@ -20,6 +22,7 @@ Darkswarm.controller "ProductsCtrl", ($scope, $sce, $filter, $rootScope, Product
$rootScope.$on "orderCycleSelected", ->
$scope.update_filters()
$scope.clearAll()
$scope.page = 1
$scope.update_filters = ->
order_cycle_id = OrderCycle.order_cycle.order_cycle_id

View File

@@ -1,8 +1,10 @@
Darkswarm.controller "RegistrationCtrl", ($scope, RegistrationService, EnterpriseRegistrationService, availableCountries) ->
Darkswarm.controller "RegistrationCtrl", ($scope, RegistrationService, EnterpriseRegistrationService, availableCountries, GmapsGeo) ->
$scope.currentStep = RegistrationService.currentStep
$scope.enterprise = EnterpriseRegistrationService.enterprise
$scope.select = RegistrationService.select
$scope.geocodedAddress = ''
$scope.latLong = null
$scope.addressConfirmed = false
$scope.steps = ['details', 'contact', 'type', 'about', 'images', 'social']
# Filter countries without states since the form requires a state to be selected.
@@ -22,3 +24,26 @@ Darkswarm.controller "RegistrationCtrl", ($scope, RegistrationService, Enterpris
$scope.countryHasStates = ->
$scope.enterprise.country.states.length > 0
$scope.map = {center: {latitude: 0.000000, longitude: 0.000000 }, zoom: 1}
$scope.options = {scrollwheel: false}
$scope.locateAddress = () ->
{ address1, address2, city, state_id, zipcode } = $scope.enterprise.address
addressQuery = [address1, address2, city, state_id, zipcode].filter((value) => !!value).join(", ")
GmapsGeo.geocode addressQuery, (results, status) =>
$scope.geocodedAddress = results && results[0]?.formatted_address
location = results[0]?.geometry?.location
if location
$scope.$apply(() =>
$scope.latLong = {latitude: location.lat(), longitude: location.lng()}
$scope.map = {center: {latitude: location.lat(), longitude: location.lng()}, zoom: 16 }
)
$scope.toggleAddressConfirmed = ->
$scope.addressConfirmed = !$scope.addressConfirmed
if $scope.addressConfirmed
$scope.enterprise.address.latitude = $scope.latLong.latitude
$scope.enterprise.address.longitude = $scope.latLong.longitude
else
$scope.enterprise.address.latitude = null
$scope.enterprise.address.longitude = null

View File

@@ -10,7 +10,8 @@ window.Darkswarm = angular.module("Darkswarm", [
'uiGmapgoogle-maps',
'duScroll',
'angularFileUpload',
'angularSlideables'
'angularSlideables',
'OFNShared'
]).config ($httpProvider, $tooltipProvider, $locationProvider, $anchorScrollProvider) ->
$httpProvider.defaults.headers['common']['X-Requested-With'] = 'XMLHttpRequest'
$httpProvider.defaults.headers.common['Accept'] = "application/json, text/javascript, */*"

View File

@@ -3,7 +3,15 @@ Darkswarm.directive "bodyScroll", ($rootScope, BodyScroll) ->
scope: true
link: (scope, elem, attrs) ->
$rootScope.$on "toggleBodyScroll", ->
if BodyScroll.disabled
elem.addClass "disable-scroll"
if BodyScroll.disabled && document.body.scrollHeight > document.body.clientHeight
document.body.style.top = "-#{window.scrollY}px"
document.body.style.position = 'fixed'
document.body.style.overflowY = 'scroll'
document.body.style.width = '100%'
else
elem.removeClass "disable-scroll"
scrollY = parseInt(document.body.style.top) * -1
document.body.style.position = ''
document.body.style.top = ''
document.body.style.overflowY = ''
document.body.style.width = ''
window.scrollTo(0, scrollY) if scrollY

View File

@@ -4,4 +4,5 @@ Darkswarm.directive "shopVariantWithUnitPrice", ->
templateUrl: 'shop_variant_with_unit_price.html'
scope:
variant: '='
show_unit_price: '=showunitprice'
controller: 'ShopVariantCtrl'

View File

@@ -115,8 +115,9 @@ Darkswarm.factory 'Cart', (CurrentOrder, Variants, $timeout, $http, $modal, $roo
@line_items = []
localStorageService.clearAll() # One day this will have to be moar GRANULAR
has_one_line_item: =>
@line_items_finalised.length == 1
isOnlyItemInOrder: (id) =>
deletedItem = @line_items_finalised.find((item) -> item.id == id)
@line_items_finalised.filter((item) -> item.order_id == deletedItem.order_id).length == 1
removeFinalisedLineItem: (id) =>
@line_items_finalised = @line_items_finalised.filter (item) ->

View File

@@ -1,5 +1,5 @@
angular.module("Darkswarm").factory 'Customer', ($resource, $injector, Messages) ->
Customer = $resource('/api/customers/:id/:action.json', {}, {
Customer = $resource('/api/v0/customers/:id/:action.json', {}, {
'index':
method: 'GET'
isArray: true

View File

@@ -8,5 +8,5 @@ Darkswarm.factory "EnterpriseImageService", (FileUploader, spreeApiKey) ->
autoUpload: true
configure: (enterprise) =>
@imageUploader.url = "/api/enterprises/#{enterprise.id}/update_image"
@imageUploader.url = "/api/v0/enterprises/#{enterprise.id}/update_image"
@imageUploader.onSuccessItem = (image, response) => @imageSrc = response

View File

@@ -5,7 +5,7 @@ Darkswarm.factory "EnterpriseModal", ($modal, $rootScope, $http)->
scope = $rootScope.$new(true) # Spawn an isolate to contain the enterprise
scope.embedded_layout = window.location.search.indexOf("embedded_shopfront=true") != -1
$http.get("/api/shops/" + enterprise.id).success (data) ->
$http.get("/api/v0/shops/" + enterprise.id).success (data) ->
scope.enterprise = data
$modal.open(templateUrl: "enterprise_modal.html", scope: scope)
.error (data) ->

View File

@@ -18,9 +18,10 @@ Darkswarm.factory "EnterpriseRegistrationService", ($http, RegistrationService,
Loading.message = t('creating') + " " + @enterprise.name
$http(
method: "POST"
url: "/api/enterprises"
url: "/api/v0/enterprises"
data:
enterprise: @prepare()
use_geocoder: @useGeocoder()
params:
token: spreeApiKey
).success((data) =>
@@ -42,9 +43,10 @@ Darkswarm.factory "EnterpriseRegistrationService", ($http, RegistrationService,
Loading.message = t('updating') + " " + @enterprise.name
$http(
method: "PUT"
url: "/api/enterprises/#{@enterprise.id}"
url: "/api/v0/enterprises/#{@enterprise.id}"
data:
enterprise: @prepare()
use_geocoder: @useGeocoder()
params:
token: spreeApiKey
).success((data) ->
@@ -63,3 +65,7 @@ Darkswarm.factory "EnterpriseRegistrationService", ($http, RegistrationService,
enterprise.address_attributes = @enterprise.address if @enterprise.address?
enterprise.address_attributes.country_id = @enterprise.country.id if @enterprise.country?
enterprise
useGeocoder: =>
if @enterprise.address? && !@enterprise.address.latitude? && !@enterprise.address.longitude?
return "1"

View File

@@ -10,7 +10,7 @@ Darkswarm.service "GmapsGeo", ->
# console.log "Error: #{status}"
geocode: (address, callback) ->
geocoder = new google.maps.Geocoder()
geocoder.geocode {'address': address, 'region': "<%= Spree::Country.find_by(id: Spree::Config[:default_country_id]).iso %>"}, callback
geocoder.geocode {'address': address, 'region': "<%= DefaultCountry.code %>"}, callback
distanceBetween: (src, dst) ->
google.maps.geometry.spherical.computeDistanceBetween @toLatLng(src), @toLatLng(dst)
@@ -20,4 +20,4 @@ Darkswarm.service "GmapsGeo", ->
if locatable.lat?
locatable
else
new google.maps.LatLng locatable.latitude, locatable.longitude
new google.maps.LatLng locatable.latitude, locatable.longitude

View File

@@ -1,21 +1,21 @@
Darkswarm.factory 'OrderCycleResource', ($resource) ->
$resource('/api/order_cycles/:id.json', {}, {
$resource('/api/v0/order_cycles/:id.json', {}, {
'products':
method: 'GET'
isArray: true
url: '/api/order_cycles/:id/products.json'
url: '/api/v0/order_cycles/:id/products.json'
params:
id: '@id'
'taxons':
method: 'GET'
isArray: true
url: '/api/order_cycles/:id/taxons.json'
url: '/api/v0/order_cycles/:id/taxons.json'
params:
id: '@id'
'properties':
method: 'GET'
isArray: true
url: '/api/order_cycles/:id/properties.json'
url: '/api/v0/order_cycles/:id/properties.json'
params:
id: '@id'
})

View File

@@ -1,7 +1,7 @@
Darkswarm.factory 'ShopsResource', ($resource) ->
$resource('/api/shops/:id.json', {}, {
$resource('/api/v0/shops/:id.json', {}, {
'closed_shops':
method: 'GET'
isArray: true
url: '/api/shops/closed_shops.json'
url: '/api/v0/shops/closed_shops.json'
})

View File

@@ -1,17 +1,19 @@
Darkswarm.directive "questionMarkWithTooltip", ($tooltip)->
OFNShared.directive "questionMarkWithTooltip", ($tooltip)->
# We use the $tooltip service from Angular foundation to give us boilerplate
# Subsequently we patch the scope, template and restrictions
tooltip = $tooltip 'questionMarkWithTooltip', 'questionMarkWithTooltip', 'click'
tooltip.scope =
context: "="
tooltip.templateUrl = "question_mark_with_tooltip_icon.html"
key: "="
tooltip.templateUrl = "shared/question_mark_with_tooltip_icon.html"
tooltip.replace = true
tooltip.restrict = 'E'
tooltip
# This is automatically referenced via naming convention in $tooltip
Darkswarm.directive 'questionMarkWithTooltipPopup', ->
OFNShared.directive 'questionMarkWithTooltipPopup', ->
restrict: 'EA'
replace: true
templateUrl: 'question_mark_with_tooltip.html'
templateUrl: 'shared/question_mark_with_tooltip.html'
scope: false

View File

@@ -0,0 +1,4 @@
window.OFNShared = angular.module("OFNShared", [
"mm.foundation"
]).config ($httpProvider) ->
$httpProvider.defaults.headers.common["Accept"] = "application/json, text/javascript, */*"

View File

@@ -2,12 +2,21 @@
.columns.small-12
%h3{"ng-bind" => "::variant.extended_name"}
.row.variant-bulk-buy-price-summary
.columns.small-6
.variant-unit {{ ::variant.unit_to_display }}
.columns.small-6
.flex.variant-bulk-buy-price-summary{style: "justify-content: space-around;"}
.variant-unit
{{ ::variant.unit_to_display }}
.div
{{ variant.line_item.total_price | localizeCurrency }}
.unit-price{"ng-if": "show_unit_price"}
%question-mark-with-tooltip{"question-mark-with-tooltip": "_",
"question-mark-with-tooltip-append-to-body": "true",
"question-mark-with-tooltip-placement": "top",
"question-mark-with-tooltip-animation": true,
style: "margin-right: 5px",
key: "'js.shopfront.unit_price_tooltip'"}
{{ variant.unit_price_price | localizeCurrency }}&nbsp;/&nbsp;{{ variant.unit_price_unit }}
.row
.columns.small-12.medium-6
.variant-bulk-buy-quantity-label

View File

@@ -1,6 +1,6 @@
.joyride-tip-guide.question-mark-tooltip{class: "{{ context }}", ng: {class: "{ in: tt_isOpen, fade: tt_animation }", show: "tt_isOpen"}}
.background{ng: {click: "tt_isOpen = false"}}
.joyride-content-wrapper
{{ "js.shopfront.unit_price_tooltip" | t }}
{{ key | t }}
%span.joyride-nub.bottom

View File

@@ -12,8 +12,9 @@
%question-mark-with-tooltip{"question-mark-with-tooltip" => "_",
"question-mark-with-tooltip-append-to-body" => "true",
"question-mark-with-tooltip-placement" => "top",
"question-mark-with-tooltip-animation" => true}
{{ variant.unit_price_price | localizeCurrency }} / {{ variant.unit_price_unit }}
"question-mark-with-tooltip-animation" => true,
key: "'js.shopfront.unit_price_tooltip'"}
{{ variant.unit_price_price | localizeCurrency }}&nbsp;/&nbsp;{{ variant.unit_price_unit }}
.medium-2.large-2.columns.total-price
%span{"ng-class" => "{filled: variant.line_item.total_price}"}

View File

@@ -48,3 +48,6 @@
@import 'components/*';
@import 'pages/*';
@import '*';
@import "../shared/question-mark-icon";
@import "question-mark-tooltip";

View File

@@ -0,0 +1,18 @@
.joyride-tip-guide {
background: $color-3;
color: $white;
font-family: inherit;
font-weight: $font-weight-normal;
position: absolute;
z-index: 101;
padding: 5px 15px;
.joyride-nub.bottom {
border: 10px solid;
display: block;
height: 0;
position: absolute;
width: 0;
}
}

View File

@@ -117,6 +117,13 @@ button.bulk-buy-add.variant-quantity {
}
}
// Hide number arrows on Chrome, Safari, Edge, Opera
.variant-quantity::-webkit-outer-spin-button,
.variant-quantity::-webkit-inner-spin-button {
-webkit-appearance: none;
margin: 0;
}
.variant-bulk-buy-price-summary {
color: $disabled-med;
margin-bottom: 1em;

View File

@@ -181,11 +181,10 @@ shop ordercycle {
}
}
shop navigation ordercycle {
margin-top: 3.4em;
shop .tab-buttons ordercycle {
padding: 1em;
height: 7.6em;
position: absolute;
bottom: 0;
right: 1em;
}

View File

@@ -21,3 +21,5 @@
ofn-modal {
display: block;
}
@import "../shared/question-mark-icon";

View File

@@ -1,6 +1,8 @@
@import "mixins";
@import 'typography';
$shop-navigation-zindex: 20;
section {
:not(shop) navigation {
box-shadow: $distributor-header-shadow;
@@ -11,7 +13,7 @@ section {
display: block;
background: $white;
position: relative;
z-index: 20;
z-index: $shop-navigation-zindex;
.details {
box-sizing: border-box;

View File

@@ -4,8 +4,8 @@
footer {
.row {
p a {
font-size: 0.875rem;
p {
font-size: 1rem;
}
a, a * {
@@ -107,9 +107,14 @@ footer {
color: rgba($disabled-med, 0.35);
}
p.text-big {
font-size: 1.5rem;
font-weight: 300;
}
.social-icons {
margin-bottom: 0.25rem;
margin-top: 0.75rem;
margin-bottom: 0.9rem;
padding-top: 0.1rem;
a {
i {
@@ -128,5 +133,9 @@ footer {
}
}
}
.legal p {
font-size: 0.875rem;
}
}
}

View File

@@ -167,6 +167,26 @@
height: 166px;
}
}
.map-container--registration {
width: 100%;
height: 244px;
margin-bottom: 1em;
map, .angular-google-map-container, google-map, .angular-google-map {
display: block;
height: 220px;
width: 100%;
}
}
.center {
justify-content: center;
}
.button.primary {
border-radius: 0;
}
}
#registration-type {

View File

@@ -9,7 +9,7 @@
color: $dark-grey;
box-shadow: $distributor-header-shadow;
position: relative;
z-index: 10;
z-index: $shop-navigation-zindex + 1;
.columns {
display: flex;

View File

@@ -165,7 +165,3 @@ a.button.large {
.flex {
display: flex;
}
.disable-scroll {
overflow: hidden;
}

View File

@@ -1,3 +1,5 @@
@import "variables/variables";
.unit-price {
display: flex;
align-items: center;
@@ -26,14 +28,27 @@
background-image: none;
background-color: $teal-500;
&:focus {
outline: 0;
}
&::before {
@include icon-font;
content: "";
color: $white;
vertical-align: super;
}
}
}
// Question mark icon into a field
.field .question-mark-icon {
width: 15px;
min-width: 15px;
height: 15px;
margin-left: 2px;
}
.joyride-tip-guide.question-mark-tooltip {
width: 16rem;
max-width: 65%;
@@ -41,6 +56,7 @@
margin-left: -7.4rem;
margin-top: -0.1rem;
background-color: transparent;
z-index: $modal-zIndex + 1;
.background {
position: fixed;

View File

@@ -0,0 +1,28 @@
$padding-small: 0.5rem;
$radius-small: 0.25em;
$white: #fff;
$dynamic-blue: #3d8dd1;
$teal-500: #0096ad;
/* Defined in foundation-rails components/_reveal.scss */
$modal-zIndex: 1005;
@font-face {
font-family: 'OFN';
src: font-url('OFN-v2.eot');
src: font-url('OFN-v2.eot') format('embedded-opentype'),
font-url('OFN-v2.woff') format('woff'),
font-url('OFN-v2.ttf') format('truetype'),
font-url('OFN-v2.svg') format('svg');
font-weight: normal;
font-style: normal;
}
@mixin icon-font {
font-family: "OFN";
display: inline-block;
font-weight: normal;
font-style: normal;
font-variant: normal;
text-transform: none;
}

View File

@@ -0,0 +1,7 @@
# frozen_string_literal: true
class DistributorTitleComponent < ViewComponent::Base
def initialize(name:)
@name = name
end
end

View File

@@ -0,0 +1,7 @@
# frozen_string_literal: true
class ExampleComponent < ViewComponent::Base
def initialize(title:)
@title = title
end
end

View File

@@ -0,0 +1 @@
%h1 #{@title}

View File

@@ -35,8 +35,8 @@ module Admin
if @line_item.update(line_item_params)
order.update_line_item_fees! @line_item
order.update_order_fees!
order.update!
render nothing: true, status: :no_content # No Content, does not trigger ng resource auto-update
order.update_order!
render body: nil, status: :no_content # No Content, does not trigger ng resource auto-update
else
render json: { errors: @line_item.errors }, status: :precondition_failed
end
@@ -50,7 +50,7 @@ module Admin
authorize! :update, order
@line_item.destroy
render nothing: true, status: :no_content # No Content, does not trigger ng resource auto-update
render body: nil, status: :no_content # No Content, does not trigger ng resource auto-update
end
private

View File

@@ -12,7 +12,7 @@ module Admin
elsif @cp_set.errors.present?
render json: { errors: @cp_set.errors }, status: :bad_request
else
render nothing: true, status: :internal_server_error
render body: nil, status: :internal_server_error
end
end

View File

@@ -18,21 +18,13 @@ module Admin
format.html
format.json do
render json: @collection,
each_serializer: index_each_serializer,
each_serializer: ::Api::Admin::CustomerWithBalanceSerializer,
tag_rule_mapping: tag_rule_mapping,
customer_tags: customer_tags_by_id
end
end
end
def index_each_serializer
if OpenFoodNetwork::FeatureToggle.enabled?(:customer_balance, spree_current_user)
::Api::Admin::CustomerWithBalanceSerializer
else
::Api::Admin::CustomerWithCalculatedBalanceSerializer
end
end
def show
render_as_json @customer, ams_prefix: params[:ams_prefix]
end
@@ -53,15 +45,12 @@ module Admin
# copy of Admin::ResourceController without flash notice
def destroy
invoke_callbacks(:destroy, :before)
if @object.destroy
invoke_callbacks(:destroy, :after)
respond_with(@object) do |format|
format.html { redirect_to location_after_destroy }
format.js { render partial: "spree/admin/shared/destroy" }
end
else
invoke_callbacks(:destroy, :fails)
respond_with(@object) do |format|
format.html { redirect_to location_after_destroy }
format.json { render json: { errors: @object.errors.full_messages }, status: :conflict }
@@ -73,21 +62,18 @@ module Admin
def collection
if json_request? && params[:enterprise_id].present?
customers_relation.
includes(:bill_address, :ship_address, user: :credit_cards)
CustomersWithBalance.new(managed_enterprise_id).query.
includes(
:enterprise,
{ bill_address: [:state, :country] },
{ ship_address: [:state, :country] },
user: :credit_cards
)
else
Customer.where('1=0')
end
end
def customers_relation
if OpenFoodNetwork::FeatureToggle.enabled?(:customer_balance, spree_current_user)
CustomersWithBalance.new(managed_enterprise_id).query
else
Customer.of(managed_enterprise_id)
end
end
def managed_enterprise_id
@managed_enterprise_id ||= Enterprise.managed_by(spree_current_user).
select('enterprises.id').find_by(id: params[:enterprise_id])

View File

@@ -25,15 +25,12 @@ module Admin
protected
def build_resource_with_address
enterprise_group = build_resource_without_address
def build_resource
enterprise_group = super
enterprise_group.address = Spree::Address.new
enterprise_group.address.country = Spree::Country.find_by(
id: Spree::Config[:default_country_id]
)
enterprise_group.address.country = DefaultCountry.country
enterprise_group
end
alias_method_chain :build_resource, :address
# Overriding method on Spree's resource controller,
# so that resources are found using permalink.

View File

@@ -14,7 +14,7 @@ module Admin
@enterprise_relationship = EnterpriseRelationship.new enterprise_relationship_params
if @enterprise_relationship.save
render text: Api::Admin::EnterpriseRelationshipSerializer.new(@enterprise_relationship).to_json
render plain: Api::Admin::EnterpriseRelationshipSerializer.new(@enterprise_relationship).to_json
else
render status: :bad_request, json: { errors: @enterprise_relationship.errors.full_messages.join(', ') }
end
@@ -23,7 +23,7 @@ module Admin
def destroy
@enterprise_relationship = EnterpriseRelationship.find params[:id]
@enterprise_relationship.destroy
render nothing: true
render body: nil
end
private

View File

@@ -10,7 +10,7 @@ module Admin
@enterprise_role = EnterpriseRole.new enterprise_role_params
if @enterprise_role.save
render text: Api::Admin::EnterpriseRoleSerializer.new(@enterprise_role).to_json
render plain: Api::Admin::EnterpriseRoleSerializer.new(@enterprise_role).to_json
else
render status: :bad_request, json: { errors: @enterprise_role.errors.full_messages.join(', ') }
@@ -20,7 +20,7 @@ module Admin
def destroy
@enterprise_role = EnterpriseRole.find params[:id]
@enterprise_role.destroy
render nothing: true
render body: nil
end
private

View File

@@ -4,6 +4,8 @@ require 'open_food_network/order_cycle_permissions'
module Admin
class EnterprisesController < Admin::ResourceController
include GeocodeEnterpriseAddress
# These need to run before #load_resource so that @object is initialised with sanitised values
prepend_before_action :override_owner, only: :create
prepend_before_action :override_sells, only: :create
@@ -22,6 +24,8 @@ module Admin
before_action :load_properties, only: [:edit, :update]
before_action :setup_property, only: [:edit]
after_action :geocode_address_if_use_geocoder, only: [:create, :update]
helper 'spree/products'
include OrderCyclesHelper
@@ -43,12 +47,11 @@ module Admin
end
def update
invoke_callbacks(:update, :before)
tag_rules_attributes = params[object_name].delete :tag_rules_attributes
update_tag_rules(tag_rules_attributes) if tag_rules_attributes.present?
update_enterprise_notifications
if @object.update(enterprise_params)
invoke_callbacks(:update, :after)
flash[:success] = flash_message_for(@object, :successfully_updated)
respond_with(@object) do |format|
format.html { redirect_to location_after_save }
@@ -56,7 +59,6 @@ module Admin
format.json { render_as_json @object, ams_prefix: 'index', spree_current_user: spree_current_user }
end
else
invoke_callbacks(:update, :fails)
respond_with(@object) do |format|
format.json { render json: { errors: @object.errors.messages }, status: :unprocessable_entity }
end
@@ -114,13 +116,12 @@ module Admin
protected
def build_resource_with_address
enterprise = build_resource_without_address
def build_resource
enterprise = super
enterprise.address ||= Spree::Address.new
enterprise.address.country ||= Spree::Country.find_by(id: Spree::Config[:default_country_id])
enterprise.address.country ||= DefaultCountry.country
enterprise
end
alias_method_chain :build_resource, :address
# Overriding method on Spree's resource controller,
# so that resources are found using permalink
@@ -215,7 +216,6 @@ module Admin
tag_rules_attributes.select{ |_i, attrs| attrs[:type].present? }.each do |_i, attrs|
rule = @object.tag_rules.find_by(id: attrs.delete(:id)) ||
attrs[:type].constantize.new(enterprise: @object)
create_calculator_for(rule, attrs) if rule.type == "TagRule::DiscountOrder" && rule.calculator.nil?
rule.update(attrs.permit(PermittedAttributes::TagRules.attributes))
end

View File

@@ -1,5 +1,3 @@
require 'action_callbacks'
module Admin
class ResourceController < Spree::Admin::BaseController
helper_method :new_object_url, :edit_object_url, :object_url, :collection_url
@@ -11,7 +9,6 @@ module Admin
respond_to :js, except: [:show, :index]
def new
invoke_callbacks(:new_action, :before)
respond_with(@object) do |format|
format.html { render layout: !request.xhr? }
format.js { render layout: false }
@@ -26,32 +23,26 @@ module Admin
end
def update
invoke_callbacks(:update, :before)
if @object.update(permitted_resource_params)
invoke_callbacks(:update, :after)
flash[:success] = flash_message_for(@object, :successfully_updated)
respond_with(@object) do |format|
format.html { redirect_to location_after_save }
format.js { render layout: false }
end
else
invoke_callbacks(:update, :fails)
respond_with(@object)
end
end
def create
invoke_callbacks(:create, :before)
@object.attributes = permitted_resource_params
if @object.save
invoke_callbacks(:create, :after)
flash[:success] = flash_message_for(@object, :successfully_created)
respond_with(@object) do |format|
format.html { redirect_to location_after_save }
format.js { render layout: false }
end
else
invoke_callbacks(:create, :fails)
respond_with(@object)
end
end
@@ -62,21 +53,18 @@ module Admin
end
respond_to do |format|
format.js { render text: 'Ok' }
format.js { render plain: 'Ok' }
end
end
def destroy
invoke_callbacks(:destroy, :before)
if @object.destroy
invoke_callbacks(:destroy, :after)
flash[:success] = flash_message_for(@object, :successfully_removed)
respond_with(@object) do |format|
format.html { redirect_to collection_url }
format.js { render partial: "spree/admin/shared/destroy" }
end
else
invoke_callbacks(:destroy, :fails)
respond_with(@object) do |format|
format.html { redirect_to collection_url }
end
@@ -92,7 +80,6 @@ module Admin
class << self
attr_accessor :parent_data
attr_accessor :callbacks
def belongs_to(model_name, options = {})
@parent_data ||= {}
@@ -100,26 +87,6 @@ module Admin
@parent_data[:model_class] = model_name.to_s.classify.constantize
@parent_data[:find_by] = options[:find_by] || :id
end
def new_action
@callbacks ||= {}
@callbacks[:new_action] ||= ActionCallbacks.new
end
def create
@callbacks ||= {}
@callbacks[:create] ||= ActionCallbacks.new
end
def update
@callbacks ||= {}
@callbacks[:update] ||= ActionCallbacks.new
end
def destroy
@callbacks ||= {}
@callbacks[:destroy] ||= ActionCallbacks.new
end
end
def model_class
@@ -212,17 +179,6 @@ module Admin
collection_url
end
def invoke_callbacks(action, callback_type)
callbacks = self.class.callbacks || {}
return if callbacks[action].nil?
case callback_type.to_sym
when :before then callbacks[action].before_methods.each { |method| __send__ method }
when :after then callbacks[action].after_methods.each { |method| __send__ method }
when :fails then callbacks[action].fails_methods.each { |method| __send__ method }
end
end
# URL helpers
def new_object_url(options = {})
if parent_data.present?

View File

@@ -9,7 +9,8 @@ module Admin
before_action :editable_order_cycle_ids_for_create, only: [:create]
before_action :editable_order_cycle_ids_for_update, only: [:update]
before_action :check_dependent_subscriptions, only: [:destroy]
update.after :sync_subscriptions_for_update
after_action :sync_subscriptions_for_update, only: :update
respond_to :json
@@ -120,7 +121,7 @@ module Admin
end
def sync_subscriptions_for_update
return unless params[:schedule][:order_cycle_ids]
return unless params[:schedule][:order_cycle_ids] && @object.errors.blank?
sync_subscriptions
end

View File

@@ -3,7 +3,7 @@ module Admin
respond_to :json
respond_override destroy: { json: {
success: lambda { render nothing: true, status: :no_content }
success: lambda { render body: nil, status: :no_content }
} }
def map_by_tag

View File

@@ -21,7 +21,7 @@ module Admin
elsif @vo_set.errors.present?
render json: { errors: @vo_set.errors }, status: :bad_request
else
render nothing: true, status: :internal_server_error
render body: nil, status: :internal_server_error
end
end

View File

@@ -1,103 +0,0 @@
# Base controller for OFN's API
require_dependency 'spree/api/controller_setup'
require "spree/core/controller_helpers/ssl"
module Api
class BaseController < ActionController::Metal
include RawParams
include ActionController::StrongParameters
include ActionController::RespondWith
include Spree::Api::ControllerSetup
include Spree::Core::ControllerHelpers::SSL
include ::ActionController::Head
include ::ActionController::ConditionalGet
include ActionView::Layouts
layout false
attr_accessor :current_api_user
before_action :set_content_type
before_action :authenticate_user
rescue_from Exception, with: :error_during_processing
rescue_from CanCan::AccessDenied, with: :unauthorized
rescue_from ActiveRecord::RecordNotFound, with: :not_found
helper Spree::Api::ApiHelpers
ssl_allowed
# Include these because we inherit from ActionController::Metal
# rather than ActionController::Base and these are required for AMS
include ActionController::Serialization
include ActionController::UrlFor
include Rails.application.routes.url_helpers
use_renderers :json
check_authorization
def respond_with_conflict(json_hash)
render json: json_hash, status: :conflict
end
private
# Use logged in user (spree_current_user) for API authentication (current_api_user)
def authenticate_user
return if @current_api_user = spree_current_user
if api_key.blank?
# An anonymous user
@current_api_user = Spree.user_class.new
return
end
return if @current_api_user = Spree.user_class.find_by(spree_api_key: api_key.to_s)
invalid_api_key
end
def set_content_type
headers["Content-Type"] = "application/json"
end
def error_during_processing(exception)
Bugsnag.notify(exception)
render(json: { exception: exception.message },
status: :unprocessable_entity) && return
end
def current_ability
Spree::Ability.new(current_api_user)
end
def api_key
request.headers["X-Spree-Token"] || params[:token]
end
helper_method :api_key
def invalid_resource!(resource)
@resource = resource
render(json: { error: I18n.t(:invalid_resource, scope: "spree.api"),
errors: @resource.errors },
status: :unprocessable_entity)
end
def invalid_api_key
render(json: { error: I18n.t(:invalid_api_key, key: api_key, scope: "spree.api") },
status: :unauthorized) && return
end
def unauthorized
render(json: { error: I18n.t(:unauthorized, scope: "spree.api") },
status: :unauthorized) && return
end
def not_found
render(json: { error: I18n.t(:resource_not_found, scope: "spree.api") },
status: :not_found) && return
end
end
end

View File

@@ -1,37 +0,0 @@
module Api
class CustomersController < Api::BaseController
skip_authorization_check only: :index
def index
@customers = current_api_user.customers
render json: @customers, each_serializer: CustomerSerializer
end
def update
@customer = Customer.find(params[:id])
authorize! :update, @customer
client_secret = RecurringPayments.setup_for(@customer) if params[:customer][:allow_charges]
if @customer.update(customer_params)
add_recurring_payment_info(client_secret)
render json: @customer, serializer: CustomerSerializer, status: :ok
else
invalid_resource!(@customer)
end
end
private
def add_recurring_payment_info(client_secret)
return unless client_secret
@customer.gateway_recurring_payment_client_secret = client_secret
@customer.gateway_shop_id = @customer.enterprise.stripe_account&.stripe_user_id
end
def customer_params
params.require(:customer).permit(:code, :email, :enterprise_id, :allow_charges)
end
end
end

View File

@@ -1,42 +0,0 @@
# frozen_string_literal: true
require 'api/admin/enterprise_serializer'
module Api
class EnterpriseAttachmentController < Api::BaseController
class MissingImplementationError < StandardError; end
class UnknownEnterpriseAuthorizationActionError < StandardError; end
before_action :load_enterprise
respond_to :json
def destroy
return respond_with_conflict(error: destroy_attachment_does_not_exist_error_message) unless @enterprise.public_send("#{attachment_name}?")
@enterprise.update!(attachment_name => nil)
render json: @enterprise, serializer: Admin::EnterpriseSerializer, spree_current_user: spree_current_user
end
protected
def attachment_name
raise MissingImplementationError, "Method attachment_name should be defined"
end
def enterprise_authorize_action
raise MissingImplementationError, "Method enterprise_authorize_action should be defined"
end
def load_enterprise
@enterprise = Enterprise.find_by(permalink: params[:enterprise_id].to_s)
raise UnknownEnterpriseAuthorizationActionError if enterprise_authorize_action.blank?
authorize!(enterprise_authorize_action, @enterprise)
end
def destroy_attachment_does_not_exist_error_message
I18n.t("api.enterprise_#{attachment_name}.destroy_attachment_does_not_exist")
end
end
end

View File

@@ -1,21 +0,0 @@
module Api
class EnterpriseFeesController < Api::BaseController
respond_to :json
def destroy
authorize! :destroy, enterprise_fee
if enterprise_fee.destroy
render text: I18n.t(:successfully_removed), status: :no_content
else
render text: enterprise_fee.errors.full_messages.first, status: :forbidden
end
end
private
def enterprise_fee
@enterprise_fee ||= EnterpriseFee.find_by id: params[:id]
end
end
end

View File

@@ -1,78 +0,0 @@
module Api
class EnterprisesController < Api::BaseController
before_action :override_owner, only: [:create, :update]
before_action :check_type, only: :update
before_action :override_sells, only: [:create, :update]
before_action :override_visible, only: [:create, :update]
respond_to :json
def create
authorize! :create, Enterprise
# params[:user_ids] breaks the enterprise creation
# We remove them from params and save them after creating the enterprise
user_ids = enterprise_params.delete(:user_ids)
@enterprise = Enterprise.new(enterprise_params)
if @enterprise.save
@enterprise.user_ids = user_ids
render json: @enterprise.id, status: :created
else
invalid_resource!(@enterprise)
end
end
def update
@enterprise = Enterprise.find_by(permalink: params[:id]) || Enterprise.find(params[:id])
authorize! :update, @enterprise
if @enterprise.update(enterprise_params)
render json: @enterprise.id, status: :ok
else
invalid_resource!(@enterprise)
end
end
def update_image
@enterprise = Enterprise.find_by(permalink: params[:id]) || Enterprise.find(params[:id])
authorize! :update, @enterprise
if params[:logo] && @enterprise.update( logo: params[:logo] )
render text: @enterprise.logo.url(:medium), status: :ok
elsif params[:promo] && @enterprise.update( promo_image: params[:promo] )
render text: @enterprise.promo_image.url(:medium), status: :ok
else
invalid_resource!(@enterprise)
end
end
private
def override_owner
enterprise_params[:owner_id] = current_api_user.id
end
def check_type
enterprise_params.delete :type unless current_api_user.admin?
end
def override_sells
has_hub = current_api_user.owned_enterprises.is_hub.any?
new_enterprise_is_producer = !!enterprise_params[:is_primary_producer]
enterprise_params[:sells] = if has_hub && !new_enterprise_is_producer
'any'
else
'unspecified'
end
end
def override_visible
enterprise_params[:visible] = false
end
def enterprise_params
@enterprise_params ||= PermittedAttributes::Enterprise.new(params).call.
to_h.with_indifferent_access
end
end
end

View File

@@ -1,100 +0,0 @@
# frozen_string_literal: true
# This controller lists products that can be added to an exchange
#
# Pagination is optional and can be required by using param[:page]
module Api
class ExchangeProductsController < Api::BaseController
include PaginationData
DEFAULT_PER_PAGE = 100
skip_authorization_check only: [:index]
# If exchange_id is present in the URL:
# Lists Products that can be added to that Exchange
#
# If exchange_id is not present in the URL:
# Lists Products of the Enterprise given that can be added to the given Order Cycle
# In this case parameters are: enterprise_id, order_cycle_id and incoming
# (order_cycle_id is not necessary for incoming exchanges)
def index
if exchange_params[:exchange_id].present?
load_data_from_exchange
else
load_data_from_other_params
end
render_variant_count && return if params[:action_name] == "variant_count"
render_paginated_products paginated_products
end
private
def render_variant_count
render text: {
count: variants.count
}.to_json
end
def variants
renderer.exchange_variants(@incoming, @enterprise)
end
def products
renderer.exchange_products(@incoming, @enterprise)
end
def renderer
@renderer ||= ExchangeProductsRenderer.
new(@order_cycle, spree_current_user)
end
def paginated_products
return products unless pagination_required?
products.
page(params[:page]).
per(params[:per_page] || DEFAULT_PER_PAGE)
end
def load_data_from_exchange
exchange = Exchange.find_by(id: exchange_params[:exchange_id])
@order_cycle = exchange.order_cycle
@incoming = exchange.incoming
@enterprise = exchange.sender
end
def load_data_from_other_params
@enterprise = Enterprise.find_by(id: exchange_params[:enterprise_id])
# This will be a string (eg "true") when it arrives via params, but we want a boolean
@incoming = ActiveModel::Type::Boolean.new.cast exchange_params[:incoming]
if exchange_params[:order_cycle_id]
@order_cycle = OrderCycle.find_by(id: exchange_params[:order_cycle_id])
elsif !@incoming
raise "order_cycle_id is required to list products for new outgoing exchange"
end
end
def render_paginated_products(paginated_products)
serialized_products = ActiveModel::ArraySerializer.new(
paginated_products,
each_serializer: Api::Admin::ForOrderCycle::SuppliedProductSerializer,
order_cycle: @order_cycle
)
render json: {
products: serialized_products,
pagination: pagination_data(paginated_products)
}
end
def exchange_params
params.permit(:enterprise_id, :exchange_id, :order_cycle_id, :incoming).
to_h.with_indifferent_access
end
end
end

View File

@@ -1,16 +0,0 @@
module Api
class LogosController < Api::EnterpriseAttachmentController
private
def attachment_name
:logo
end
def enterprise_authorize_action
case action_name.to_sym
when :destroy
:remove_logo
end
end
end
end

View File

@@ -1,101 +0,0 @@
module Api
class OrderCyclesController < Api::BaseController
include EnterprisesHelper
include ApiActionCaching
skip_authorization_check
skip_before_action :authenticate_user, :ensure_api_key, only: [:taxons, :properties]
caches_action :taxons, :properties,
expires_in: CacheService::FILTERS_EXPIRY,
cache_path: proc { |controller| controller.request.url }
def products
return render_no_products unless order_cycle.open?
products = ProductsRenderer.new(
distributor,
order_cycle,
customer,
search_params
).products_json
render plain: products
rescue ProductsRenderer::NoProducts
render_no_products
end
def taxons
taxons = Spree::Taxon.
joins(:products).
where(spree_products: { id: distributed_products }).
select('DISTINCT spree_taxons.*')
render plain: ActiveModel::ArraySerializer.new(
taxons, each_serializer: Api::TaxonSerializer
).to_json
end
def properties
render plain: ActiveModel::ArraySerializer.new(
product_properties | producer_properties, each_serializer: Api::PropertySerializer
).to_json
end
private
def render_no_products
render status: :not_found, json: {}
end
def product_properties
Spree::Property.
joins(:products).
where(spree_products: { id: distributed_products }).
select('DISTINCT spree_properties.*')
end
def producer_properties
producers = Enterprise.
joins(:supplied_products).
where(spree_products: { id: distributed_products })
Spree::Property.
joins(:producer_properties).
where(producer_properties: { producer_id: producers }).
select('DISTINCT spree_properties.*')
end
def search_params
permitted_search_params = params.slice :q, :page, :per_page
if permitted_search_params.key? :q
permitted_search_params[:q].slice!(*permitted_ransack_params)
end
permitted_search_params
end
def permitted_ransack_params
[:name_or_meta_keywords_or_variants_display_as_or_variants_display_name_or_supplier_name_cont,
:properties_id_or_supplier_properties_id_in_any,
:primary_taxon_id_in_any]
end
def distributor
@distributor ||= Enterprise.find_by(id: params[:distributor])
end
def order_cycle
@order_cycle ||= OrderCycle.find_by(id: params[:id])
end
def customer
@current_api_user.andand.customer_of(distributor) || nil
end
def distributed_products
OrderCycleDistributedProducts.new(distributor, order_cycle, customer).products_relation
end
end
end

View File

@@ -1,67 +0,0 @@
module Api
class OrdersController < Api::BaseController
include PaginationData
def show
authorize! :read, order
render json: order, serializer: Api::OrderDetailedSerializer, current_order: order
end
def index
authorize! :admin, Spree::Order
orders = SearchOrders.new(params, current_api_user).orders
render json: {
orders: serialized_orders(orders),
pagination: pagination_data(orders)
}
end
def ship
authorize! :admin, order
if order.ship
render json: order.reload, serializer: Api::Admin::OrderSerializer, status: :ok
else
render json: { error: I18n.t('api.orders.failed_to_update') }, status: :unprocessable_entity
end
end
def capture
authorize! :admin, order
pending_payment = order.pending_payments.first
return payment_capture_failed unless order.payment_required? && pending_payment
if pending_payment.capture!
render json: order.reload, serializer: Api::Admin::OrderSerializer, status: :ok
else
payment_capture_failed
end
rescue Spree::Core::GatewayError => e
error_during_processing(e)
end
private
def payment_capture_failed
render json: { error: t(:payment_processing_failed) }, status: :unprocessable_entity
end
def serialized_orders(orders)
ActiveModel::ArraySerializer.new(
orders,
each_serializer: Api::Admin::OrderSerializer
)
end
def order
@order ||= Spree::Order.
where(number: params[:id]).
includes(line_items: { variant: [:product, :stock_items, :default_price] }).
first!
end
end
end

View File

@@ -1,19 +0,0 @@
module Api
class ProductImagesController < Api::BaseController
respond_to :json
def update_product_image
@product = Spree::Product.find(params[:product_id])
authorize! :update, @product
if @product.images.first.nil?
@image = Spree::Image.create(attachment: params[:file], viewable_id: @product.master.id, viewable_type: 'Spree::Variant')
render json: @image, serializer: ImageSerializer, status: :created
else
@image = @product.images.first
@image.update(attachment: params[:file])
render json: @image, serializer: ImageSerializer, status: :ok
end
end
end
end

View File

@@ -1,159 +0,0 @@
require 'open_food_network/permissions'
require 'spree/core/product_duplicator'
module Api
class ProductsController < Api::BaseController
include PaginationData
respond_to :json
DEFAULT_PER_PAGE = 15
before_action :set_default_available_on, only: :create
skip_authorization_check only: [:show, :bulk_products, :overridable]
def show
@product = find_product(params[:id])
render json: @product, serializer: Api::Admin::ProductSerializer
end
def create
authorize! :create, Spree::Product
@product = Spree::Product.new(product_params)
begin
if @product.save
render json: @product, serializer: Api::Admin::ProductSerializer, status: :created
else
invalid_resource!(@product)
end
rescue ActiveRecord::RecordNotUnique
@product.permalink = nil
retry
end
end
def update
authorize! :update, Spree::Product
@product = find_product(params[:id])
if @product.update(product_params)
render json: @product, serializer: Api::Admin::ProductSerializer, status: :ok
else
invalid_resource!(@product)
end
end
def destroy
authorize! :delete, Spree::Product
@product = find_product(params[:id])
authorize! :delete, @product
@product.destroy
render json: @product, serializer: Api::Admin::ProductSerializer, status: :no_content
end
def bulk_products
product_query = OpenFoodNetwork::Permissions.
new(current_api_user).
editable_products.
merge(product_scope)
if params[:import_date].present?
product_query = product_query.
imported_on(params[:import_date]).
group_by_products_id
end
@products = product_query.
ransack(query_params_with_defaults).
result.
page(params[:page] || 1).
per(params[:per_page] || DEFAULT_PER_PAGE)
render_paged_products @products
end
def overridable
producer_ids = OpenFoodNetwork::Permissions.new(current_api_user).
variant_override_producers.by_name.select('enterprises.id')
@products = paged_products_for_producers producer_ids
render_paged_products @products, ::Api::Admin::ProductSimpleSerializer
end
# POST /api/products/:product_id/clone
#
def clone
authorize! :create, Spree::Product
original_product = find_product(params[:product_id])
authorize! :update, original_product
@product = original_product.duplicate
render json: @product, serializer: Api::Admin::ProductSerializer, status: :created
end
private
def find_product(id)
product_scope.find_by!(permalink: id.to_s)
rescue ActiveRecord::RecordNotFound
product_scope.find(id)
end
def product_scope
if current_api_user.has_spree_role?("admin") || current_api_user.enterprises.present?
scope = Spree::Product
if params[:show_deleted]
scope = scope.with_deleted
end
else
scope = Spree::Product.active
end
scope.includes(product_query_includes)
end
def product_query_includes
[
master: [:images],
variants: [:default_price, :stock_locations, :stock_items, :variant_overrides,
{ option_values: :option_type }]
]
end
def paged_products_for_producers(producer_ids)
Spree::Product.where(nil).
merge(product_scope).
includes(variants: [:product, :default_price, :stock_items]).
where(supplier_id: producer_ids).
by_producer.by_name.
ransack(params[:q]).result.
page(params[:page]).per(params[:per_page])
end
def render_paged_products(products, product_serializer = ::Api::Admin::ProductSerializer)
serialized_products = ActiveModel::ArraySerializer.new(
products,
each_serializer: product_serializer
)
render json: {
products: serialized_products,
pagination: pagination_data(products)
}
end
def query_params_with_defaults
(params[:q] || {}).reverse_merge(s: 'created_at desc')
end
def product_params
@product_params ||=
params.permit(product: PermittedAttributes::Product.attributes)[:product].to_h
end
def set_default_available_on
product_params[:available_on] ||= Time.zone.now
end
end
end

View File

@@ -1,16 +0,0 @@
module Api
class PromoImagesController < Api::EnterpriseAttachmentController
private
def attachment_name
:promo_image
end
def enterprise_authorize_action
case action_name.to_sym
when :destroy
:remove_promo_image
end
end
end
end

Some files were not shown because too many files have changed in this diff Show More