solidus_virtual_gift_card 1.0.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +1 -0
- data/app/assets/javascripts/spree/backend/solidus_virtual_gift_card.coffee +6 -6
- data/app/assets/stylesheets/spree/backend/solidus_virtual_gift_card.css +4 -0
- data/app/controllers/spree/admin/gift_cards_controller.rb +32 -12
- data/app/mailers/spree/gift_card_mailer.rb +2 -1
- data/app/models/concerns/spree/gift_cards/line_item_concerns.rb +6 -1
- data/app/models/concerns/spree/gift_cards/order_concerns.rb +15 -9
- data/app/models/concerns/spree/gift_cards/order_contents_concerns.rb +84 -0
- data/app/models/spree/order_contents_decorator.rb +1 -0
- data/app/models/spree/virtual_gift_card.rb +47 -10
- data/app/overrides/admin_gift_card_order_confirmation.rb +6 -0
- data/app/overrides/admin_item_view_gift_card_codes.rb +9 -2
- data/app/views/spree/admin/gift_cards/_lookup_form.html.erb +31 -6
- data/app/views/spree/admin/gift_cards/edit.html.erb +81 -0
- data/app/views/spree/admin/gift_cards/index.html.erb +39 -0
- data/app/views/spree/admin/gift_cards/show.html.erb +0 -32
- data/app/views/spree/admin/orders/_cart_gift_card_details.html.erb +3 -0
- data/app/views/spree/admin/orders/_confirmation_gift_card_details.html.erb +50 -0
- data/app/views/spree/admin/orders/_gift_card_details.html.erb +2 -0
- data/app/views/spree/admin/orders/_shipments_gift_card_details.html.erb +3 -0
- data/bin/rails +1 -1
- data/config/initializers/line_item_controller_gift_card_details.rb +4 -0
- data/config/initializers/ransack.rb +7 -0
- data/config/locales/en.yml +3 -0
- data/config/routes.rb +9 -1
- data/db/migrate/20151013172931_add_recipient_fields_to_virtual_gift_card.rb +8 -0
- data/db/migrate/20151013210615_add_active_flag_to_virtual_gift_card.rb +5 -0
- data/db/migrate/20151013214647_set_redeemable_true_on_virtual_gift_cards.rb +11 -0
- data/db/migrate/20151019190731_add_email_send_time_to_virtual_gift_card.rb +7 -0
- data/lib/spree_virtual_gift_card/factories.rb +11 -2
- data/lib/tasks/send_gift_card_emails.rake +8 -0
- data/solidus_virtual_gift_card.gemspec +1 -1
- data/spec/controllers/spree/admin/gift_cards_controller_spec.rb +1 -33
- data/spec/controllers/spree/api/gift_cards_controller_spec.rb +1 -1
- data/spec/features/admin/gift_cards_spec.rb +74 -0
- data/spec/lib/tasks/send_gift_card_emails_spec.rb +60 -0
- data/spec/models/spree/line_item_spec.rb +21 -0
- data/spec/models/spree/order_contents_spec.rb +270 -0
- data/spec/models/spree/order_spec.rb +34 -57
- data/spec/models/spree/virtual_gift_card_spec.rb +54 -23
- data/spec/spec_helper.rb +1 -0
- metadata +23 -3
- data/app/views/spree/admin/orders/_gift_card_redemption_codes.html.erb +0 -3
@@ -5,7 +5,7 @@ describe Spree::VirtualGiftCard do
|
|
5
5
|
let!(:credit_type) { create(:secondary_credit_type, name: "Non-expiring") }
|
6
6
|
|
7
7
|
context 'validations' do
|
8
|
-
let(:invalid_gift_card) {
|
8
|
+
let(:invalid_gift_card) { build(:virtual_gift_card, amount: 0) }
|
9
9
|
|
10
10
|
context 'given an amount less than one' do
|
11
11
|
it 'is not valid' do
|
@@ -19,29 +19,31 @@ describe Spree::VirtualGiftCard do
|
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
|
-
|
23
|
-
let(:
|
24
|
-
|
22
|
+
describe '#make_redeemable!' do
|
23
|
+
let(:user) { create(:user) }
|
24
|
+
let(:gift_card) { create(:virtual_gift_card) }
|
25
|
+
subject { gift_card.make_redeemable!(purchaser: user) }
|
25
26
|
|
26
|
-
context '
|
27
|
-
|
28
|
-
it 'keeps that redemption code' do
|
27
|
+
context 'no collision on redemption code' do
|
28
|
+
it 'sets a redemption code' do
|
29
29
|
subject
|
30
|
-
expect(gift_card.redemption_code).to
|
30
|
+
expect(gift_card.redemption_code).to be_present
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
34
|
-
context '
|
35
|
-
|
34
|
+
context 'redemption code is already set' do
|
35
|
+
let(:expected_code) { "EXPECTEDCODE" }
|
36
|
+
before { gift_card.redemption_code = expected_code }
|
37
|
+
it "does not update the redemption code" do
|
36
38
|
subject
|
37
|
-
expect(gift_card.redemption_code).to
|
39
|
+
expect(gift_card.redemption_code).to eq expected_code
|
38
40
|
end
|
39
41
|
end
|
40
42
|
|
41
43
|
|
42
|
-
context 'there is a collision on redemption code' do
|
44
|
+
context 'there is a collision on redemption code' do
|
43
45
|
context 'the existing giftcard has not been redeemed yet' do
|
44
|
-
let!(:existing_giftcard) { create(:virtual_gift_card) }
|
46
|
+
let!(:existing_giftcard) { create(:virtual_gift_card, redemption_code: "ABC123-EFG456") }
|
45
47
|
let(:expected_code) { 'EXPECTEDCODE' }
|
46
48
|
let(:generator) { Spree::RedemptionCodeGenerator }
|
47
49
|
|
@@ -56,7 +58,7 @@ describe Spree::VirtualGiftCard do
|
|
56
58
|
end
|
57
59
|
|
58
60
|
context 'the existing gift card has been redeemed' do
|
59
|
-
let!(:existing_giftcard) { create(:virtual_gift_card, redeemed_at: Time.now) }
|
61
|
+
let!(:existing_giftcard) { create(:virtual_gift_card, redemption_code: "ABC123-EFG456", redeemed_at: Time.now) }
|
60
62
|
let(:generator) { Spree::RedemptionCodeGenerator }
|
61
63
|
|
62
64
|
it 'recursively generates redemption codes' do
|
@@ -71,26 +73,42 @@ describe Spree::VirtualGiftCard do
|
|
71
73
|
end
|
72
74
|
|
73
75
|
describe '#redeemed?' do
|
74
|
-
let(:gift_card) {
|
75
|
-
subject { gift_card.save }
|
76
|
+
let(:gift_card) { build(:virtual_gift_card) }
|
76
77
|
|
77
78
|
it 'is redeemed if there is a redeemed_at set' do
|
78
79
|
gift_card.redeemed_at = Time.now
|
79
|
-
subject
|
80
80
|
expect(gift_card.redeemed?).to be true
|
81
81
|
end
|
82
82
|
|
83
83
|
it 'is not redeemed if there is no timestamp for redeemed_at' do
|
84
|
-
subject
|
85
84
|
expect(gift_card.redeemed?).to be false
|
86
85
|
end
|
87
86
|
end
|
88
87
|
|
89
88
|
describe '#redeem' do
|
90
|
-
let(:gift_card) {
|
89
|
+
let(:gift_card) { create(:redeemable_virtual_gift_card) }
|
91
90
|
let(:redeemer) { create(:user) }
|
92
91
|
subject { gift_card.redeem(redeemer) }
|
93
92
|
|
93
|
+
context 'it is not redeemable' do
|
94
|
+
before { gift_card.redeemable = false }
|
95
|
+
|
96
|
+
it 'should return false' do
|
97
|
+
expect(subject).to be false
|
98
|
+
end
|
99
|
+
|
100
|
+
context 'does nothing to the gift card' do
|
101
|
+
it 'should not create a store credit' do
|
102
|
+
expect(gift_card.store_credit).not_to be_present
|
103
|
+
end
|
104
|
+
|
105
|
+
it 'should not update the gift card' do
|
106
|
+
expect { subject }.to_not change{ gift_card }
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
|
94
112
|
context 'it has already been redeemed' do
|
95
113
|
before { gift_card.redeemed_at = Date.yesterday }
|
96
114
|
|
@@ -109,7 +127,7 @@ describe Spree::VirtualGiftCard do
|
|
109
127
|
end
|
110
128
|
end
|
111
129
|
|
112
|
-
context 'it has not been redeemed already' do
|
130
|
+
context 'it has not been redeemed already and is redeemable' do
|
113
131
|
context 'generates a store credit' do
|
114
132
|
before { subject }
|
115
133
|
let(:store_credit) { gift_card.store_credit }
|
@@ -165,15 +183,28 @@ describe Spree::VirtualGiftCard do
|
|
165
183
|
end
|
166
184
|
|
167
185
|
describe '#formatted_redemption_code' do
|
168
|
-
let(:redemption_code) { 'AAAABBBBCCCCDDDD' }
|
169
186
|
let(:formatted_redemption_code) { 'AAAA-BBBB-CCCC-DDDD' }
|
170
|
-
let(:gift_card) {
|
187
|
+
let(:gift_card) { build(:redeemable_virtual_gift_card, redemption_code: 'AAAABBBBCCCCDDDD') }
|
171
188
|
|
172
189
|
subject { gift_card.formatted_redemption_code }
|
173
190
|
|
174
191
|
it 'inserts dashes into the code after every 4 characters' do
|
175
|
-
expect(gift_card).to receive(:redemption_code).and_return(redemption_code)
|
176
192
|
expect(subject).to eq formatted_redemption_code
|
177
193
|
end
|
178
194
|
end
|
195
|
+
|
196
|
+
describe "#send_email" do
|
197
|
+
let(:gift_card) { create(:redeemable_virtual_gift_card) }
|
198
|
+
|
199
|
+
subject { gift_card.send_email }
|
200
|
+
|
201
|
+
it "sends the gift card email" do
|
202
|
+
expect(Spree::GiftCardMailer).to receive(:gift_card_email).with(gift_card).and_return(double(deliver_later: true))
|
203
|
+
subject
|
204
|
+
end
|
205
|
+
|
206
|
+
it "sets sent_at" do
|
207
|
+
expect { subject }.to change { gift_card.sent_at }
|
208
|
+
end
|
209
|
+
end
|
179
210
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: solidus_virtual_gift_card
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bonobos
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-12-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: solidus
|
@@ -175,28 +175,37 @@ files:
|
|
175
175
|
- app/mailers/spree/gift_card_mailer.rb
|
176
176
|
- app/models/concerns/spree/gift_cards/line_item_concerns.rb
|
177
177
|
- app/models/concerns/spree/gift_cards/order_concerns.rb
|
178
|
+
- app/models/concerns/spree/gift_cards/order_contents_concerns.rb
|
178
179
|
- app/models/concerns/spree/redemption_code_generator.rb
|
179
180
|
- app/models/spree/line_item_decorator.rb
|
181
|
+
- app/models/spree/order_contents_decorator.rb
|
180
182
|
- app/models/spree/order_decorator.rb
|
181
183
|
- app/models/spree/permission_sets/virtual_gift_card_display.rb
|
182
184
|
- app/models/spree/permission_sets/virtual_gift_card_management.rb
|
183
185
|
- app/models/spree/store_credit_category_decorator.rb
|
184
186
|
- app/models/spree/virtual_gift_card.rb
|
187
|
+
- app/overrides/admin_gift_card_order_confirmation.rb
|
185
188
|
- app/overrides/admin_item_view_gift_card_codes.rb
|
186
189
|
- app/overrides/admin_user_sidebar_store_credits.rb
|
187
190
|
- app/overrides/admin_user_sub_menu.rb
|
188
191
|
- app/views/spree/admin/gift_cards/_lookup_form.html.erb
|
189
192
|
- app/views/spree/admin/gift_cards/_redemption_form.html.erb
|
193
|
+
- app/views/spree/admin/gift_cards/edit.html.erb
|
190
194
|
- app/views/spree/admin/gift_cards/index.html.erb
|
191
195
|
- app/views/spree/admin/gift_cards/lookup.html.erb
|
192
196
|
- app/views/spree/admin/gift_cards/show.html.erb
|
193
|
-
- app/views/spree/admin/orders/
|
197
|
+
- app/views/spree/admin/orders/_cart_gift_card_details.html.erb
|
198
|
+
- app/views/spree/admin/orders/_confirmation_gift_card_details.html.erb
|
199
|
+
- app/views/spree/admin/orders/_gift_card_details.html.erb
|
200
|
+
- app/views/spree/admin/orders/_shipments_gift_card_details.html.erb
|
194
201
|
- app/views/spree/admin/users/_gift_card_sidebar.html.erb
|
195
202
|
- app/views/spree/admin/users/_sub_menu.html.erb
|
196
203
|
- app/views/spree/gift_card_mailer/gift_card_email.text.erb
|
197
204
|
- bin/rails
|
198
205
|
- circle.yml
|
199
206
|
- config/initializers/gift_card_store_credit_event_originator.rb
|
207
|
+
- config/initializers/line_item_controller_gift_card_details.rb
|
208
|
+
- config/initializers/ransack.rb
|
200
209
|
- config/locales/en.yml
|
201
210
|
- config/routes.rb
|
202
211
|
- db/migrate/20140623152903_create_virtual_gift_card.rb
|
@@ -204,16 +213,24 @@ files:
|
|
204
213
|
- db/migrate/20140627185148_add_timestamps_to_gift_cards.rb
|
205
214
|
- db/migrate/20140702153907_add_gift_card_flag_to_products.rb
|
206
215
|
- db/migrate/20140707200431_add_line_item_to_gift_card.rb
|
216
|
+
- db/migrate/20151013172931_add_recipient_fields_to_virtual_gift_card.rb
|
217
|
+
- db/migrate/20151013210615_add_active_flag_to_virtual_gift_card.rb
|
218
|
+
- db/migrate/20151013214647_set_redeemable_true_on_virtual_gift_cards.rb
|
219
|
+
- db/migrate/20151019190731_add_email_send_time_to_virtual_gift_card.rb
|
207
220
|
- db/seeds.rb
|
208
221
|
- lib/generators/solidus_virtual_gift_card/install/install_generator.rb
|
209
222
|
- lib/solidus_virtual_gift_card.rb
|
210
223
|
- lib/spree_virtual_gift_card/engine.rb
|
211
224
|
- lib/spree_virtual_gift_card/factories.rb
|
225
|
+
- lib/tasks/send_gift_card_emails.rake
|
212
226
|
- solidus_virtual_gift_card.gemspec
|
213
227
|
- spec/controllers/spree/admin/gift_cards_controller_spec.rb
|
214
228
|
- spec/controllers/spree/api/gift_cards_controller_spec.rb
|
229
|
+
- spec/features/admin/gift_cards_spec.rb
|
230
|
+
- spec/lib/tasks/send_gift_card_emails_spec.rb
|
215
231
|
- spec/models/concerns/spree/redemption_code_generator_spec.rb
|
216
232
|
- spec/models/spree/line_item_spec.rb
|
233
|
+
- spec/models/spree/order_contents_spec.rb
|
217
234
|
- spec/models/spree/order_spec.rb
|
218
235
|
- spec/models/spree/permission_sets/virtual_gift_card_display_spec.rb
|
219
236
|
- spec/models/spree/permission_sets/virtual_gift_card_management_spec.rb
|
@@ -248,8 +265,11 @@ summary: Virtual gift card for purchase, drops into the user's account as store
|
|
248
265
|
test_files:
|
249
266
|
- spec/controllers/spree/admin/gift_cards_controller_spec.rb
|
250
267
|
- spec/controllers/spree/api/gift_cards_controller_spec.rb
|
268
|
+
- spec/features/admin/gift_cards_spec.rb
|
269
|
+
- spec/lib/tasks/send_gift_card_emails_spec.rb
|
251
270
|
- spec/models/concerns/spree/redemption_code_generator_spec.rb
|
252
271
|
- spec/models/spree/line_item_spec.rb
|
272
|
+
- spec/models/spree/order_contents_spec.rb
|
253
273
|
- spec/models/spree/order_spec.rb
|
254
274
|
- spec/models/spree/permission_sets/virtual_gift_card_display_spec.rb
|
255
275
|
- spec/models/spree/permission_sets/virtual_gift_card_management_spec.rb
|