workarea-gift_cards 4.0.2 → 4.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +31 -0
- data/README.md +24 -0
- data/app/models/workarea/checkout/steps/gift_card.rb +3 -2
- data/lib/workarea/gift_cards/version.rb +1 -1
- data/test/lib/workarea/gift_cards/gateway_test.rb +73 -39
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4640c0b94ade3085580304d3a0220f85cb73a570d93e3a7c945081a1bda0a72f
|
|
4
|
+
data.tar.gz: bcab8a176b67c59e809a89d0b459d3f01dd123d91e05b6aab8f51f3ea13766cd
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 4f8f96a3442cabeb3cc94aef6fd542b6a77d0c792947cf795edade12f36f6e67ca1ef743632415a2d4d689990e2f70eeefa8a4b28024699f44658851eeb2e18f
|
|
7
|
+
data.tar.gz: 800f842ad499e8adac230b8fabc356ad890d82c38f8269f449baf2e0f5082740e092df674c14c43c3c2b4a038bad49a9b4e7d13897aab24415668232285c5743
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,34 @@
|
|
|
1
|
+
Workarea Gift Cards 4.0.3 (2020-08-19)
|
|
2
|
+
--------------------------------------------------------------------------------
|
|
3
|
+
|
|
4
|
+
* Fix Update Step Result
|
|
5
|
+
|
|
6
|
+
Prevent returning `false` early when no Gift Card params are set. This
|
|
7
|
+
ensures the step won't block checkout.
|
|
8
|
+
|
|
9
|
+
Tom Scott
|
|
10
|
+
|
|
11
|
+
* Improve Test Experience For Custom Gift Card Gateways
|
|
12
|
+
|
|
13
|
+
If you're creating a new custom gift card gateway for your project, and
|
|
14
|
+
you want to use the tests from base as a starting point for that
|
|
15
|
+
integration, you currently must duplicate the tests from the plugin in
|
|
16
|
+
your own plugin, which makes things a bit harder but also removes the
|
|
17
|
+
ability to take on updates to the test in case of bug fixes. To improve
|
|
18
|
+
this experience, the `Workarea::GiftCards::GatewayTest` has been
|
|
19
|
+
modified to more easily allow decorating it in a host application. All
|
|
20
|
+
tests are now wrapped in a VCR cassette whose name is defined by the
|
|
21
|
+
parameterized gateway class name and the name of the method being
|
|
22
|
+
tested. This will activate and create cassettes in the real world when a
|
|
23
|
+
gateway makes an outbound HTTP call, similar to
|
|
24
|
+
`CreditCardIntegrationTest`.
|
|
25
|
+
|
|
26
|
+
GIFTCARDS-9
|
|
27
|
+
|
|
28
|
+
Tom Scott
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
1
32
|
Workarea Gift Cards 4.0.2 (2020-03-03)
|
|
2
33
|
--------------------------------------------------------------------------------
|
|
3
34
|
|
data/README.md
CHANGED
|
@@ -107,6 +107,30 @@ end
|
|
|
107
107
|
|
|
108
108
|
Note that it is set to a string of the class constant, and not an instance of the class. The system constantizes and initializes a new instance whenever it uses the gateway to ensure autoloading works correctly and so a gateway that cares about the current state of the application is applied correctly. This is most relevant in multi-site environments where each site might want to use their own gift card gateway.
|
|
109
109
|
|
|
110
|
+
### Testing Your Custom Gateway
|
|
111
|
+
|
|
112
|
+
Workarea comes with unit tests for the main Gateway class, and you can
|
|
113
|
+
decorate this test to provide your own setup code. A minimal
|
|
114
|
+
implementation would look as follows:
|
|
115
|
+
|
|
116
|
+
```ruby
|
|
117
|
+
module Workarea
|
|
118
|
+
module GiftCards
|
|
119
|
+
decorate GatewayTest do
|
|
120
|
+
# Provide your own Gateway instance here to use it in each test.
|
|
121
|
+
def gateway
|
|
122
|
+
CustomGiftCardGateway.new
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
# Provide a custom object representing a Gift Card on your
|
|
126
|
+
# 3rd-party service.
|
|
127
|
+
def gift_card
|
|
128
|
+
CustomGiftCard.new(balance: 10.to_m)
|
|
129
|
+
end
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
```
|
|
110
134
|
|
|
111
135
|
Workarea Commerce Documentation
|
|
112
136
|
--------------------------------------------------------------------------------
|
|
@@ -12,8 +12,9 @@ module Workarea
|
|
|
12
12
|
#
|
|
13
13
|
def update(params = {})
|
|
14
14
|
gift_card_params = extract_gift_card_params(params)
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
|
|
16
|
+
add_gift_card(gift_card_params) if applicable_gift_card?(gift_card_params)
|
|
17
|
+
|
|
17
18
|
update_order
|
|
18
19
|
end
|
|
19
20
|
|
|
@@ -5,10 +5,17 @@ module Workarea
|
|
|
5
5
|
class GatewayTest < TestCase
|
|
6
6
|
setup :gift_card
|
|
7
7
|
|
|
8
|
+
# Override this to instantiate an object that models a gift card
|
|
9
|
+
# on the remote system.
|
|
8
10
|
def gift_card
|
|
9
11
|
@gift_card ||= create_gift_card(amount: 10.to_m)
|
|
10
12
|
end
|
|
11
13
|
|
|
14
|
+
# The tender object used on an order that will be passed into each
|
|
15
|
+
# gateway method call. Override this to provide your own
|
|
16
|
+
# information.
|
|
17
|
+
#
|
|
18
|
+
# @return [Payment::Tender::GiftCard]
|
|
12
19
|
def tender
|
|
13
20
|
@tender ||= Payment::Tender::GiftCard.new(
|
|
14
21
|
number: gift_card.token,
|
|
@@ -16,81 +23,108 @@ module Workarea
|
|
|
16
23
|
)
|
|
17
24
|
end
|
|
18
25
|
|
|
26
|
+
# Override this in your test to instantiate a gateway for use in
|
|
27
|
+
# tests. The class name of the gateway is used to generate the
|
|
28
|
+
# folder name for the VCR cassettes used within this test.
|
|
19
29
|
def gateway
|
|
20
30
|
Gateway.new
|
|
21
31
|
end
|
|
22
32
|
|
|
33
|
+
# Use the class name of the gateway to generate a directory in
|
|
34
|
+
# `test/vcr_cassettes` where all cassettes for the custom gateway
|
|
35
|
+
# will go. This doesn't need to be overridden unless you need to
|
|
36
|
+
# customize the gateway cassette directory name.
|
|
37
|
+
#
|
|
38
|
+
# @return [String]
|
|
39
|
+
def gateway_cassette_name
|
|
40
|
+
gateway.class.name.systemize
|
|
41
|
+
end
|
|
42
|
+
|
|
23
43
|
def test_authorize
|
|
24
|
-
|
|
44
|
+
VCR.use_cassette "#{gateway_cassette_name}/authorize" do
|
|
45
|
+
response = gateway.authorize(200, tender)
|
|
25
46
|
|
|
26
|
-
|
|
27
|
-
|
|
47
|
+
assert(response.success?)
|
|
48
|
+
assert(response.message.present?)
|
|
28
49
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
50
|
+
gift_card.reload
|
|
51
|
+
assert_equal(8.to_m, gift_card.balance)
|
|
52
|
+
assert_equal(2.to_m, gift_card.used)
|
|
53
|
+
end
|
|
32
54
|
end
|
|
33
55
|
|
|
34
56
|
def test_cancel
|
|
35
|
-
|
|
36
|
-
|
|
57
|
+
VCR.use_cassette "#{gateway_cassette_name}/cancel" do
|
|
58
|
+
response = gateway.authorize(200, tender)
|
|
59
|
+
assert(response.success?)
|
|
37
60
|
|
|
38
|
-
|
|
61
|
+
response = gateway.cancel(200, tender)
|
|
39
62
|
|
|
40
|
-
|
|
41
|
-
|
|
63
|
+
assert(response.success?)
|
|
64
|
+
assert(response.message.present?)
|
|
42
65
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
66
|
+
gift_card.reload
|
|
67
|
+
assert_equal(10.to_m, gift_card.balance)
|
|
68
|
+
assert_equal(0.to_m, gift_card.used)
|
|
69
|
+
end
|
|
46
70
|
end
|
|
47
71
|
|
|
48
72
|
def test_capture
|
|
49
|
-
|
|
50
|
-
|
|
73
|
+
VCR.use_cassette "#{gateway_cassette_name}/capture" do
|
|
74
|
+
assert(gateway.capture(200, tender).success?)
|
|
75
|
+
assert_equal(10.to_m, gift_card.reload.balance)
|
|
76
|
+
end
|
|
51
77
|
end
|
|
52
78
|
|
|
53
79
|
def test_purchase
|
|
54
|
-
|
|
80
|
+
VCR.use_cassette "#{gateway_cassette_name}/purchase" do
|
|
81
|
+
response = gateway.purchase(200, tender)
|
|
55
82
|
|
|
56
|
-
|
|
57
|
-
|
|
83
|
+
assert(response.success?)
|
|
84
|
+
assert(response.message.present?)
|
|
58
85
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
86
|
+
gift_card.reload
|
|
87
|
+
assert_equal(8.to_m, gift_card.balance)
|
|
88
|
+
assert_equal(2.to_m, gift_card.used)
|
|
89
|
+
end
|
|
62
90
|
end
|
|
63
91
|
|
|
64
92
|
def test_refund
|
|
65
|
-
|
|
66
|
-
|
|
93
|
+
VCR.use_cassette "#{gateway_cassette_name}/refund" do
|
|
94
|
+
response = gateway.authorize(200, tender)
|
|
95
|
+
assert(response.success?)
|
|
67
96
|
|
|
68
|
-
|
|
97
|
+
response = gateway.refund(200, tender)
|
|
69
98
|
|
|
70
|
-
|
|
71
|
-
|
|
99
|
+
assert(response.success?)
|
|
100
|
+
assert(response.message.present?)
|
|
72
101
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
102
|
+
gift_card.reload
|
|
103
|
+
assert_equal(10.to_m, gift_card.balance)
|
|
104
|
+
assert_equal(0.to_m, gift_card.used)
|
|
105
|
+
end
|
|
76
106
|
end
|
|
77
107
|
|
|
78
108
|
def test_balance
|
|
79
|
-
balance
|
|
80
|
-
|
|
109
|
+
VCR.use_cassette "#{gateway_cassette_name}/balance" do
|
|
110
|
+
balance = gateway.balance(gift_card.number)
|
|
111
|
+
assert_equal(10.to_m, balance)
|
|
81
112
|
|
|
82
|
-
|
|
113
|
+
gateway.authorize(300, tender)
|
|
83
114
|
|
|
84
|
-
|
|
85
|
-
|
|
115
|
+
balance = gateway.balance(gift_card.number)
|
|
116
|
+
assert_equal(7.to_m, balance)
|
|
117
|
+
end
|
|
86
118
|
end
|
|
87
119
|
|
|
88
120
|
def test_lookup
|
|
89
|
-
|
|
90
|
-
|
|
121
|
+
VCR.use_cassette "#{gateway_cassette_name}/lookup" do
|
|
122
|
+
lookup = gateway.lookup(email: gift_card.to, token: gift_card.token)
|
|
123
|
+
assert_equal(gift_card.id, lookup.id)
|
|
91
124
|
|
|
92
|
-
|
|
93
|
-
|
|
125
|
+
lookup = gateway.lookup(email: 'foo', token: gift_card.token)
|
|
126
|
+
assert_nil(lookup)
|
|
127
|
+
end
|
|
94
128
|
end
|
|
95
129
|
end
|
|
96
130
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: workarea-gift_cards
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 4.0.
|
|
4
|
+
version: 4.0.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- bcrouse
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2020-
|
|
11
|
+
date: 2020-08-19 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: workarea
|
|
@@ -224,7 +224,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
224
224
|
- !ruby/object:Gem::Version
|
|
225
225
|
version: '0'
|
|
226
226
|
requirements: []
|
|
227
|
-
rubygems_version: 3.0.
|
|
227
|
+
rubygems_version: 3.0.3
|
|
228
228
|
signing_key:
|
|
229
229
|
specification_version: 4
|
|
230
230
|
summary: Gift Cards plugin for the Workarea Commerce Platform
|