workarea-gift_cards 3.4.10 → 4.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. checksums.yaml +5 -5
  2. data/{.eslintrc → .eslintrc.json} +12 -1
  3. data/.github/workflows/ci.yml +10 -8
  4. data/.rubocop.yml +2 -197
  5. data/.stylelintrc.json +8 -0
  6. data/CHANGELOG.md +40 -20
  7. data/Gemfile +3 -5
  8. data/README.md +25 -1
  9. data/app/controllers/workarea/api/admin/gift_cards_controller.rb +309 -0
  10. data/app/controllers/workarea/api/storefront/checkouts_controller.decorator +6 -0
  11. data/app/controllers/workarea/api/storefront/gift_cards_controller.rb +2 -8
  12. data/app/controllers/workarea/storefront/checkout/gift_cards_controller.rb +32 -0
  13. data/app/controllers/workarea/storefront/gift_cards_controller.rb +15 -16
  14. data/app/models/workarea/checkout/steps/gift_card.rb +72 -0
  15. data/app/models/workarea/fulfillment/policies/create_gift_card.rb +30 -0
  16. data/app/models/workarea/payment.decorator +25 -7
  17. data/app/models/workarea/payment/authorize/gift_card.rb +7 -20
  18. data/app/models/workarea/payment/capture/gift_card.rb +5 -7
  19. data/app/models/workarea/payment/gift_card.rb +1 -1
  20. data/app/models/workarea/payment/gift_card_operation.rb +9 -0
  21. data/app/models/workarea/payment/purchase/gift_card.rb +24 -1
  22. data/app/models/workarea/payment/refund/gift_card.rb +9 -14
  23. data/app/models/workarea/payment/tender/gift_card.rb +3 -10
  24. data/app/models/workarea/search/admin/order.decorator +2 -4
  25. data/app/seeds/workarea/gift_card_seeds.rb +7 -7
  26. data/app/view_models/workarea/storefront/gift_card_order_pricing.rb +19 -20
  27. data/app/view_models/workarea/storefront/order_view_model.decorator +2 -22
  28. data/app/views/workarea/admin/payment_gift_cards/_menu.html.haml +2 -1
  29. data/app/views/workarea/storefront/checkouts/_gift_card_error.html.haml +8 -6
  30. data/app/views/workarea/storefront/checkouts/_gift_card_payment.html.haml +20 -12
  31. data/app/views/workarea/storefront/gift_card_mailer/created.html.haml +1 -1
  32. data/app/views/workarea/storefront/order_mailer/_gift_card_summary.html.haml +6 -5
  33. data/app/views/workarea/storefront/orders/_gift_card_summary.html.haml +2 -2
  34. data/app/views/workarea/storefront/products/templates/_gift_card.html.haml +5 -5
  35. data/app/workers/workarea/log_gift_card_redemption.rb +16 -9
  36. data/config/initializers/configuration.rb +7 -4
  37. data/config/initializers/fields.rb +14 -0
  38. data/config/locales/en.yml +14 -4
  39. data/config/routes.rb +9 -2
  40. data/lib/workarea/gift_cards.rb +9 -0
  41. data/lib/workarea/gift_cards/gateway.rb +128 -0
  42. data/lib/workarea/gift_cards/version.rb +1 -1
  43. data/test/documentation/workarea/api/admin/gift_cards_documentation_test.rb +24 -10
  44. data/test/documentation/workarea/api/storefront/gift_cards_documentation_test.rb +57 -50
  45. data/test/dummy/config/initializers/session_store.rb +1 -1
  46. data/test/integration/workarea/api/admin/gift_card_integration_test.rb +13 -5
  47. data/test/integration/workarea/api/storefront/checkout_gift_cards_integration_test.rb +120 -0
  48. data/test/integration/workarea/api/storefront/{balance_integration_test.rb → gift_cards_integration_test.rb} +1 -1
  49. data/test/integration/workarea/storefront/checkout_gift_cards_integration_test.rb +116 -0
  50. data/test/integration/workarea/storefront/gift_cards_integration_test.rb +48 -0
  51. data/test/integration/workarea/storefront/purchase_gift_cards_integration_test.rb +55 -0
  52. data/test/lib/workarea/gift_cards/gateway_test.rb +131 -0
  53. data/test/models/workarea/checkout/steps/gift_card_test.rb +104 -0
  54. data/test/models/workarea/fulfillment/policies/create_gift_card_test.rb +47 -0
  55. data/test/models/workarea/gift_card_payment_test.rb +15 -3
  56. data/test/models/workarea/payment/purchase/gift_card_test.rb +11 -8
  57. data/test/queries/workarea/admin_redemptions_export_test.rb +31 -35
  58. data/test/system/workarea/storefront/gift_cards_system_test.rb +8 -2
  59. data/test/view_models/workarea/storefront/gift_card_order_pricing_test.rb +113 -0
  60. data/test/workers/workarea/log_gift_card_redemption_test.rb +1 -1
  61. data/workarea-gift_cards.gemspec +4 -4
  62. metadata +32 -25
  63. data/.eslintignore +0 -2
  64. data/.scss-lint.yml +0 -188
  65. data/app/controllers/workarea/api/admin/payment_gift_cards_controller.rb +0 -49
  66. data/app/controllers/workarea/storefront/checkouts_controller.decorator +0 -24
  67. data/app/services/workarea/checkout/steps/gift_card.rb +0 -49
  68. data/app/view_models/workarea/storefront/checkout/payment_view_model.decorator +0 -32
  69. data/app/view_models/workarea/storefront/checkout/summary_view_model.decorator +0 -11
  70. data/app/workers/workarea/create_ordered_gift_cards.rb +0 -47
  71. data/config/initializers/jump_to_navigation.rb +0 -3
  72. data/test/integration/workarea/api/storefront/checkout_integration_test.rb +0 -161
  73. data/test/integration/workarea/storefront/gift_card_integration_test.rb +0 -226
  74. data/test/services/workarea/checkout/steps/gift_card_test.rb +0 -87
  75. data/test/view_models/workarea/storefront/checkout/gift_card_payment_view_model_test.rb +0 -65
  76. data/test/workers/workarea/create_ordered_gift_cards_test.rb +0 -39
@@ -1,87 +0,0 @@
1
- require 'test_helper'
2
-
3
- module Workarea
4
- class Checkout
5
- module Steps
6
- class GiftCardTest < TestCase
7
- def user
8
- @user ||= create_user
9
- end
10
-
11
- def order
12
- @order ||= create_order
13
- end
14
-
15
- def checkout
16
- @checkout ||= Checkout.new(order, user)
17
- end
18
-
19
- def payment
20
- @payment ||= checkout.payment.tap(&:save!)
21
- end
22
-
23
- def step
24
- @step ||= Checkout::Steps::GiftCard.new(checkout)
25
- end
26
-
27
- def card
28
- @card ||= create_gift_card
29
- end
30
-
31
- def test_user
32
- assert_equal(user, step.user)
33
- end
34
-
35
- def test_update
36
- product = create_product
37
- create_shipping_sku(id: product.skus.first)
38
- shipping = create_shipping(order_id: order.id)
39
- shipping.set_shipping_service(
40
- id: 'GROUND',
41
- name: 'Ground',
42
- tax_code: '001',
43
- base_price: 1.to_m
44
- )
45
- shipping.set_address(
46
- first_name: 'Ben',
47
- last_name: 'Crouse',
48
- street: '22 S. 3rd St.',
49
- street_2: 'Second Floor',
50
- city: 'Philadelphia',
51
- region: 'PA',
52
- postal_code: '19106',
53
- country: 'US',
54
- phone_number: '2159251800'
55
- )
56
- order.add_item(
57
- product_id: product.id,
58
- sku: product.skus.first,
59
- quantity: 1
60
- )
61
- params = { gift_card_number: " #{card.number} " }
62
-
63
- refute_empty(order.items)
64
- assert(payment.set_gift_card(number: card.number))
65
- assert(step.update(params))
66
-
67
- assert_equal(1.to_m, order.shipping_total)
68
- assert_equal(5.to_m, order.subtotal_price)
69
- assert_equal(6.to_m, payment.gift_card.amount)
70
- end
71
-
72
- def test_complete?
73
- assert(step.complete?)
74
-
75
- payment.set_gift_card(number: card.number)
76
- assert(step.complete?)
77
-
78
- payment.set_gift_card(number: '')
79
- refute(step.complete?)
80
-
81
- payment.set_gift_card(number: '1234')
82
- refute(step.complete?)
83
- end
84
- end
85
- end
86
- end
87
- end
@@ -1,65 +0,0 @@
1
- require 'test_helper'
2
-
3
- module Workarea
4
- module Storefront
5
- module Checkout
6
- class GiftCardPaymentViewModelTest < TestCase
7
- def test_order_covered_by_gift_card_when_amounts_match
8
- product = create_product
9
- order = create_order
10
- order.add_item(sku: product.skus.first, quantity: 1, product_id: product.id)
11
- Pricing.perform(order)
12
- order.reload
13
- gift_card = create_gift_card(amount: order.total_price, token: 'foo')
14
- payment = create_payment(id: order.id)
15
- payment.set_gift_card(number: gift_card.token)
16
- checkout = Workarea::Checkout.new(order)
17
- step = Workarea::Checkout::Steps::Payment.new(checkout)
18
- step.update(gift_card: { number: gift_card.token })
19
- view_model = Storefront::Checkout::PaymentViewModel.new(step)
20
-
21
- assert(view_model.show_gift_card?)
22
- assert(view_model.order_covered_by_gift_card?)
23
- end
24
-
25
- def test_order_covered_by_gift_card_when_balance_exceeds_total
26
- product = create_product
27
- order = create_order
28
- order.add_item(sku: product.skus.first, quantity: 1, product_id: product.id)
29
- Pricing.perform(order)
30
- order.reload
31
- gift_card = create_gift_card(amount: order.total_price + 1.to_m, token: 'foo')
32
- payment = create_payment(id: order.id)
33
- payment.set_gift_card(number: gift_card.token)
34
- checkout = Workarea::Checkout.new(order)
35
- step = Workarea::Checkout::Steps::Payment.new(checkout)
36
- step.update(gift_card: { number: gift_card.token })
37
- view_model = Storefront::Checkout::PaymentViewModel.new(step)
38
-
39
- assert(view_model.show_gift_card?)
40
- assert(view_model.order_covered_by_gift_card?)
41
- end
42
-
43
- def test_order_not_covered_by_gift_card_when_total_exceeds_balance
44
- product = create_product
45
- order = create_order
46
- order.add_item(sku: product.skus.first, quantity: 1, product_id: product.id)
47
- Pricing.perform(order)
48
- order.reload
49
- gift_card = create_gift_card(amount: 1.to_m, token: 'foo')
50
- payment = create_payment(id: order.id)
51
- payment.set_gift_card(number: gift_card.token)
52
- checkout = Workarea::Checkout.new(order)
53
- step = Workarea::Checkout::Steps::Payment.new(checkout)
54
- step.update(gift_card: { number: gift_card.token })
55
- view_model = Storefront::Checkout::PaymentViewModel.new(step)
56
-
57
- assert(view_model.show_gift_card?)
58
- assert_equal(5.to_m, order.total_price)
59
- assert_equal(1.to_m, view_model.gift_card_balance)
60
- refute(view_model.order_covered_by_gift_card?)
61
- end
62
- end
63
- end
64
- end
65
- end
@@ -1,39 +0,0 @@
1
- require 'test_helper'
2
-
3
- module Workarea
4
- class CreateOrderedGiftCardsTest < TestCase
5
- def test_perform
6
- order = create_order(id: 123)
7
- order.add_item(
8
- product_id: 'PROD',
9
- sku: 'SKU',
10
- product_attributes: { digital: true },
11
- gift_card: true,
12
- customizations: {
13
- 'email' => 'bob@workarea.com',
14
- 'from' => 'system@workarea.com',
15
- 'message' => 'Hello'
16
- },
17
- price_adjustments: [
18
- {
19
- amount: 10.to_m
20
- }
21
- ]
22
- )
23
-
24
- CreateFulfillment.new(order).perform
25
- CreateOrderedGiftCards.new.perform('123')
26
- card = Payment::GiftCard.first
27
- assert(card.present?)
28
- assert(card.notify)
29
- assert(card.purchased)
30
- assert_equal('bob@workarea.com', card.to)
31
- assert_equal('system@workarea.com', card.from)
32
- assert_equal('Hello', card.message)
33
- assert_equal(order.id, card.order_id)
34
-
35
- fulfillment = Fulfillment.find(order.id)
36
- assert_equal(1, fulfillment.items.first.quantity_shipped)
37
- end
38
- end
39
- end