solidus_virtual_gift_card 1.2.0 → 1.3.0
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 +5 -5
- data/.circleci/config.yml +35 -0
- data/Gemfile +20 -6
- data/README.md +4 -3
- data/Rakefile +2 -2
- data/app/controllers/spree/admin/gift_cards_controller.rb +14 -14
- data/app/controllers/spree/api/gift_cards_controller.rb +2 -2
- data/app/decorators/models/solidus_virtual_gift_card/spree/inventory_unit_decorator.rb +13 -0
- data/app/decorators/models/solidus_virtual_gift_card/spree/line_item_decorator.rb +24 -0
- data/app/{models/concerns/spree/gift_cards/order_contents_concerns.rb → decorators/models/solidus_virtual_gift_card/spree/order_contents_decorator.rb} +14 -20
- data/app/{models/concerns/spree/gift_cards/order_concerns.rb → decorators/models/solidus_virtual_gift_card/spree/order_decorator.rb} +14 -14
- data/app/{models → decorators/models/solidus_virtual_gift_card}/spree/store_credit_category_decorator.rb +1 -1
- data/app/mailers/spree/gift_card_mailer.rb +5 -2
- data/app/models/spree/gift_cards/gift_card_date_format_error.rb +6 -0
- data/app/models/{concerns/spree → spree}/redemption_code_generator.rb +0 -0
- data/app/models/spree/virtual_gift_card.rb +19 -16
- data/app/overrides/admin_gift_card_order_confirmation.rb +4 -4
- data/app/overrides/admin_item_view_gift_card_codes.rb +12 -12
- data/app/overrides/admin_user_sidebar_store_credits.rb +3 -3
- data/app/overrides/admin_user_sub_menu.rb +2 -2
- data/app/views/spree/admin/gift_cards/_lookup_form.html.erb +2 -2
- data/app/views/spree/admin/gift_cards/_redemption_form.html.erb +1 -1
- data/app/views/spree/admin/gift_cards/edit.html.erb +5 -5
- data/app/views/spree/admin/gift_cards/index.html.erb +1 -1
- data/app/views/spree/admin/gift_cards/lookup.html.erb +1 -1
- data/app/views/spree/admin/orders/_confirmation_gift_card_details.html.erb +9 -9
- data/app/views/spree/admin/orders/_gift_card_details.html.erb +2 -2
- data/app/views/spree/admin/users/_gift_card_sidebar.html.erb +2 -2
- data/app/views/spree/gift_card_mailer/gift_card_email.text.erb +3 -3
- data/config/initializers/line_item_controller_gift_card_details.rb +1 -1
- data/db/migrate/20140623152903_create_virtual_gift_card.rb +1 -1
- data/db/migrate/20140624175113_seed_gift_card_category.rb +1 -1
- data/db/migrate/20140627185148_add_timestamps_to_gift_cards.rb +1 -1
- data/db/migrate/20140702153907_add_gift_card_flag_to_products.rb +1 -1
- data/db/migrate/20140707200431_add_line_item_to_gift_card.rb +1 -1
- data/db/migrate/20151013172931_add_recipient_fields_to_virtual_gift_card.rb +1 -1
- data/db/migrate/20151013210615_add_active_flag_to_virtual_gift_card.rb +1 -1
- data/db/migrate/20151013214647_set_redeemable_true_on_virtual_gift_cards.rb +2 -2
- data/db/migrate/20151019190731_add_email_send_time_to_virtual_gift_card.rb +1 -1
- data/db/migrate/20151109202300_add_deactivated_at_to_gift_card.rb +1 -1
- data/db/migrate/20151110202752_add_inventory_unit_to_gift_card.rb +1 -1
- data/db/migrate/20151111211220_backfill_inventory_units_on_gift_card.rb +2 -2
- data/lib/generators/solidus_virtual_gift_card/install/install_generator.rb +1 -1
- data/lib/solidus_virtual_gift_card.rb +1 -0
- data/lib/spree_virtual_gift_card/engine.rb +3 -3
- data/lib/spree_virtual_gift_card/factories.rb +7 -7
- data/lib/tasks/send_gift_card_emails.rake +1 -1
- data/solidus_virtual_gift_card.gemspec +23 -21
- data/spec/controllers/spree/admin/gift_cards_controller_spec.rb +33 -34
- data/spec/controllers/spree/api/gift_cards_controller_spec.rb +12 -13
- data/spec/features/admin/gift_cards_spec.rb +19 -17
- data/spec/features/admin/products_card_spec.rb +3 -3
- data/spec/lib/tasks/send_gift_card_emails_spec.rb +12 -12
- data/spec/mailers/spree/gift_card_mailer_spec.rb +4 -4
- data/spec/models/concerns/spree/redemption_code_generator_spec.rb +5 -5
- data/spec/models/spree/line_item_spec.rb +2 -2
- data/spec/models/spree/order_contents_spec.rb +82 -82
- data/spec/models/spree/order_spec.rb +13 -13
- data/spec/models/spree/permission_sets/virtual_gift_card_display_spec.rb +2 -2
- data/spec/models/spree/permission_sets/virtual_gift_card_management_spec.rb +2 -2
- data/spec/models/spree/store_credit_category_spec.rb +6 -6
- data/spec/models/spree/virtual_gift_card_spec.rb +23 -23
- data/spec/spec_helper.rb +13 -74
- data/spec/support/cancan.rb +3 -0
- metadata +56 -25
- data/.travis.yml +0 -8
- data/app/models/concerns/spree/gift_cards/inventory_unit_concerns.rb +0 -10
- data/app/models/concerns/spree/gift_cards/line_item_concerns.rb +0 -22
- data/app/models/spree/inventory_unit_decorator.rb +0 -1
- data/app/models/spree/line_item_decorator.rb +0 -1
- data/app/models/spree/order_contents_decorator.rb +0 -1
- data/app/models/spree/order_decorator.rb +0 -1
- data/circle.yml +0 -6
|
@@ -3,24 +3,24 @@ require 'spec_helper'
|
|
|
3
3
|
describe Spree::Admin::GiftCardsController do
|
|
4
4
|
stub_authorization!
|
|
5
5
|
let!(:gc_category) { create(:store_credit_gift_card_category) }
|
|
6
|
-
let!(:credit_type) { create(:secondary_credit_type, name:
|
|
6
|
+
let!(:credit_type) { create(:secondary_credit_type, name: 'Non-expiring') }
|
|
7
7
|
|
|
8
8
|
describe 'GET index' do
|
|
9
|
-
subject {
|
|
9
|
+
subject { get :index }
|
|
10
10
|
|
|
11
|
-
it
|
|
11
|
+
it 'returns a 200 status code' do
|
|
12
12
|
subject
|
|
13
|
-
expect(response.code).to eq
|
|
13
|
+
expect(response.code).to eq '200'
|
|
14
14
|
end
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
describe 'GET lookup' do
|
|
18
18
|
let(:user) { create :user }
|
|
19
|
-
subject {
|
|
19
|
+
subject { get :lookup, params: { user_id: user.id } }
|
|
20
20
|
|
|
21
|
-
it
|
|
21
|
+
it 'returns a 200 status code' do
|
|
22
22
|
subject
|
|
23
|
-
expect(response.code).to eq
|
|
23
|
+
expect(response.code).to eq '200'
|
|
24
24
|
end
|
|
25
25
|
end
|
|
26
26
|
|
|
@@ -30,52 +30,52 @@ describe Spree::Admin::GiftCardsController do
|
|
|
30
30
|
let(:order) { create(:shipped_order, line_items_count: 1) }
|
|
31
31
|
let!(:default_refund_reason) { Spree::RefundReason.find_or_create_by!(name: Spree::RefundReason::RETURN_PROCESSING_REASON, mutable: false) }
|
|
32
32
|
|
|
33
|
-
subject {
|
|
33
|
+
subject { put :deactivate, params: { id: gift_card.id, order_id: order.number } }
|
|
34
34
|
|
|
35
|
-
context
|
|
36
|
-
it
|
|
35
|
+
context 'when successful' do
|
|
36
|
+
it 'redirects to the admin order edit page' do
|
|
37
37
|
expect(subject).to redirect_to spree.edit_admin_order_path(order)
|
|
38
38
|
end
|
|
39
39
|
|
|
40
|
-
it
|
|
40
|
+
it 'deactivates the gift card' do
|
|
41
41
|
subject
|
|
42
42
|
expect(gift_card.reload.deactivated_at).to be_present
|
|
43
43
|
end
|
|
44
44
|
end
|
|
45
45
|
|
|
46
|
-
context
|
|
46
|
+
context 'when deactivating fails without raising an exception' do
|
|
47
47
|
before { expect_any_instance_of(Spree::VirtualGiftCard).to receive(:deactivate).and_return(false) }
|
|
48
48
|
|
|
49
|
-
it
|
|
49
|
+
it 'does not deactivate the gift card' do
|
|
50
50
|
subject
|
|
51
51
|
expect(gift_card.reload.deactivated_at).to be_nil
|
|
52
52
|
end
|
|
53
53
|
|
|
54
|
-
it
|
|
54
|
+
it 'redirects to gift card edit page' do
|
|
55
55
|
expect(subject).to redirect_to spree.edit_admin_order_gift_card_path(order, gift_card)
|
|
56
56
|
end
|
|
57
57
|
|
|
58
|
-
it
|
|
58
|
+
it 'sets the flash message' do
|
|
59
59
|
subject
|
|
60
|
-
expect(flash[:error]).to eq
|
|
60
|
+
expect(flash[:error]).to eq I18n.t('spree.admin.gift_cards.errors.unable_to_reimburse_gift_card')
|
|
61
61
|
end
|
|
62
62
|
end
|
|
63
63
|
|
|
64
|
-
context
|
|
64
|
+
context 'when deactivating fails from reimbursement' do
|
|
65
65
|
before { expect_any_instance_of(Spree::VirtualGiftCard).to receive(:deactivate).and_raise(Spree::Reimbursement::IncompleteReimbursementError) }
|
|
66
66
|
|
|
67
|
-
it
|
|
67
|
+
it 'does not deactivate the gift card' do
|
|
68
68
|
subject
|
|
69
69
|
expect(gift_card.reload.deactivated_at).to be_nil
|
|
70
70
|
end
|
|
71
71
|
|
|
72
|
-
it
|
|
72
|
+
it 'redirects to gift card edit page' do
|
|
73
73
|
expect(subject).to redirect_to spree.edit_admin_order_gift_card_path(order, gift_card)
|
|
74
74
|
end
|
|
75
75
|
|
|
76
|
-
it
|
|
76
|
+
it 'sets the flash message' do
|
|
77
77
|
subject
|
|
78
|
-
expect(flash[:error]).to eq
|
|
78
|
+
expect(flash[:error]).to eq I18n.t('spree.admin.gift_cards.errors.unable_to_reimburse_gift_card')
|
|
79
79
|
end
|
|
80
80
|
end
|
|
81
81
|
end
|
|
@@ -85,48 +85,47 @@ describe Spree::Admin::GiftCardsController do
|
|
|
85
85
|
let(:gift_card) { create(:redeemable_virtual_gift_card) }
|
|
86
86
|
let(:redemption_code) { gift_card.redemption_code }
|
|
87
87
|
|
|
88
|
-
subject {
|
|
88
|
+
subject { post :redeem, params: { user_id: user.id, gift_card: { redemption_code: redemption_code } } }
|
|
89
89
|
|
|
90
|
-
context
|
|
91
|
-
|
|
92
|
-
it "redirects to store credit index" do
|
|
90
|
+
context 'with a gift card that has not yet been redeemed' do
|
|
91
|
+
it 'redirects to store credit index' do
|
|
93
92
|
expect(subject).to redirect_to spree.admin_user_store_credits_path(user)
|
|
94
93
|
end
|
|
95
94
|
|
|
96
|
-
it
|
|
95
|
+
it 'redeems the gift card' do
|
|
97
96
|
subject
|
|
98
97
|
expect(gift_card.reload.redeemed?).to eq true
|
|
99
98
|
end
|
|
100
99
|
|
|
101
|
-
it
|
|
100
|
+
it 'sets the redeemer to the correct user' do
|
|
102
101
|
subject
|
|
103
102
|
expect(gift_card.reload.redeemer).to eq user
|
|
104
103
|
end
|
|
105
104
|
|
|
106
|
-
it
|
|
105
|
+
it 'creates store credit for the user' do
|
|
107
106
|
subject
|
|
108
107
|
expect(user.reload.store_credits.count).to eq 1
|
|
109
108
|
end
|
|
110
109
|
|
|
111
|
-
it
|
|
110
|
+
it 'sets the store credit equal to the amount of the gift card' do
|
|
112
111
|
subject
|
|
113
112
|
expect(user.reload.store_credits.first.amount).to eq gift_card.amount
|
|
114
113
|
end
|
|
115
114
|
end
|
|
116
115
|
|
|
117
|
-
context
|
|
116
|
+
context 'with a gift card that has already been redeemed' do
|
|
118
117
|
before(:each) { gift_card.update_attribute(:redeemed_at, Date.yesterday) }
|
|
119
118
|
|
|
120
|
-
it
|
|
119
|
+
it 'renders the lookup page' do
|
|
121
120
|
subject
|
|
122
121
|
expect(response).to render_template(:lookup)
|
|
123
122
|
end
|
|
124
123
|
end
|
|
125
124
|
|
|
126
|
-
context
|
|
127
|
-
let(:redemption_code) {
|
|
125
|
+
context 'with a gift card code that does not exist' do
|
|
126
|
+
let(:redemption_code) { 'INVALID-REDEMPTION-CODE' }
|
|
128
127
|
|
|
129
|
-
it
|
|
128
|
+
it 'renders the lookup page' do
|
|
130
129
|
subject
|
|
131
130
|
expect(response).to render_template(:lookup)
|
|
132
131
|
end
|
|
@@ -2,10 +2,10 @@ require 'spec_helper'
|
|
|
2
2
|
|
|
3
3
|
describe Spree::Api::GiftCardsController do
|
|
4
4
|
render_views
|
|
5
|
-
let!(:credit_type) { create(:secondary_credit_type, name:
|
|
5
|
+
let!(:credit_type) { create(:secondary_credit_type, name: 'Non-expiring') }
|
|
6
6
|
let!(:gc_category) { create(:store_credit_gift_card_category) }
|
|
7
7
|
|
|
8
|
-
describe
|
|
8
|
+
describe 'POST redeem' do
|
|
9
9
|
let(:gift_card) { create(:redeemable_virtual_gift_card) }
|
|
10
10
|
|
|
11
11
|
let(:parameters) do
|
|
@@ -14,18 +14,18 @@ describe Spree::Api::GiftCardsController do
|
|
|
14
14
|
}
|
|
15
15
|
end
|
|
16
16
|
|
|
17
|
-
subject {
|
|
17
|
+
subject { post :redeem, params: parameters.merge(format: :json) }
|
|
18
18
|
|
|
19
|
-
context
|
|
19
|
+
context 'the user is not logged in' do
|
|
20
20
|
|
|
21
21
|
before { subject }
|
|
22
22
|
|
|
23
|
-
it
|
|
23
|
+
it 'returns a 401' do
|
|
24
24
|
expect(response.status).to eq 401
|
|
25
25
|
end
|
|
26
26
|
end
|
|
27
27
|
|
|
28
|
-
context
|
|
28
|
+
context 'the current api user is authenticated' do
|
|
29
29
|
let(:api_user) { create(:user) }
|
|
30
30
|
|
|
31
31
|
before do
|
|
@@ -35,7 +35,7 @@ describe Spree::Api::GiftCardsController do
|
|
|
35
35
|
|
|
36
36
|
let(:parsed_response) { HashWithIndifferentAccess.new(JSON.parse(response.body)) }
|
|
37
37
|
|
|
38
|
-
context
|
|
38
|
+
context 'given an invalid gift card redemption code' do
|
|
39
39
|
before { subject }
|
|
40
40
|
|
|
41
41
|
let(:parameters) do
|
|
@@ -52,21 +52,20 @@ describe Spree::Api::GiftCardsController do
|
|
|
52
52
|
expect(parsed_response['error_message']).to be_present
|
|
53
53
|
end
|
|
54
54
|
|
|
55
|
-
it
|
|
55
|
+
it 'returns a 404' do
|
|
56
56
|
expect(subject.status).to eq 404
|
|
57
57
|
end
|
|
58
58
|
end
|
|
59
59
|
|
|
60
|
-
context
|
|
60
|
+
context 'there is no redemption code in the request body' do
|
|
61
61
|
let(:parameters) { {} }
|
|
62
62
|
|
|
63
|
-
it
|
|
63
|
+
it 'returns a 404' do
|
|
64
64
|
expect(subject.status).to eq 404
|
|
65
65
|
end
|
|
66
66
|
end
|
|
67
67
|
|
|
68
|
-
context
|
|
69
|
-
|
|
68
|
+
context 'given a valid gift card redemption code' do
|
|
70
69
|
it 'finds the gift card' do
|
|
71
70
|
subject
|
|
72
71
|
expect(assigns(:gift_card)).to eq gift_card
|
|
@@ -78,7 +77,7 @@ describe Spree::Api::GiftCardsController do
|
|
|
78
77
|
subject
|
|
79
78
|
end
|
|
80
79
|
|
|
81
|
-
it
|
|
80
|
+
it 'returns a 201' do
|
|
82
81
|
subject
|
|
83
82
|
expect(subject.status).to eq 201
|
|
84
83
|
end
|
|
@@ -1,28 +1,33 @@
|
|
|
1
|
-
require
|
|
1
|
+
require "spec_helper"
|
|
2
2
|
|
|
3
|
-
describe
|
|
3
|
+
describe "Gift Cards", type: :feature do
|
|
4
4
|
stub_authorization!
|
|
5
5
|
|
|
6
|
+
let(:gift_card) { create(:redeemable_virtual_gift_card) }
|
|
7
|
+
let(:product) { gift_card.line_item.product }
|
|
8
|
+
let!(:order) do
|
|
9
|
+
create(:order_ready_to_ship,
|
|
10
|
+
number: "R100",
|
|
11
|
+
state: "complete",
|
|
12
|
+
line_items: [gift_card.line_item])
|
|
13
|
+
end
|
|
6
14
|
let(:admin_user) { create(:admin_user) }
|
|
7
15
|
|
|
8
16
|
before do
|
|
9
17
|
allow_any_instance_of(Spree::Admin::BaseController).to receive(:spree_current_user).and_return(admin_user)
|
|
18
|
+
product.update_attribute(:gift_card, true)
|
|
10
19
|
end
|
|
11
20
|
|
|
12
21
|
describe "edit gift card" do
|
|
13
|
-
let(:gift_card) { create(:redeemable_virtual_gift_card) }
|
|
14
|
-
let(:order) { gift_card.line_item.order }
|
|
15
22
|
let(:new_recipient_name) { "Heidi" }
|
|
16
23
|
let(:new_recipient_email) { "heidi@gmail.com" }
|
|
17
24
|
let(:new_purchaser_name) { "Neerali" }
|
|
18
25
|
let(:new_gift_message) { "Sweaters!" }
|
|
19
26
|
|
|
20
27
|
it "can edit recipient information and send email date" do
|
|
21
|
-
visit spree.
|
|
28
|
+
visit spree.edit_admin_order_path(order)
|
|
22
29
|
|
|
23
|
-
|
|
24
|
-
click_link("Edit Details")
|
|
25
|
-
end
|
|
30
|
+
click_link("Edit Details")
|
|
26
31
|
|
|
27
32
|
fill_in "virtual_gift_card_recipient_name", with: new_recipient_name
|
|
28
33
|
fill_in "virtual_gift_card_recipient_email", with: new_recipient_email
|
|
@@ -30,10 +35,7 @@ describe 'Gift Cards', :type => :feature, :js => true do
|
|
|
30
35
|
fill_in "virtual_gift_card_gift_message", with: new_gift_message
|
|
31
36
|
fill_in "virtual_gift_card_send_email_at", with: Date.tomorrow
|
|
32
37
|
|
|
33
|
-
|
|
34
|
-
page.execute_script("$('#virtual_gift_card_send_email_at').datepicker('widget').hide();")
|
|
35
|
-
|
|
36
|
-
click_on 'Update'
|
|
38
|
+
click_on "Update"
|
|
37
39
|
expect(page).to have_content("Gift card updated!")
|
|
38
40
|
expect(gift_card.reload.recipient_name).to eq(new_recipient_name)
|
|
39
41
|
expect(gift_card.recipient_email).to eq(new_recipient_email)
|
|
@@ -43,12 +45,12 @@ describe 'Gift Cards', :type => :feature, :js => true do
|
|
|
43
45
|
end
|
|
44
46
|
|
|
45
47
|
describe "lookup a gift card" do
|
|
46
|
-
let(:gift_card) {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
48
|
+
let(:gift_card) {
|
|
49
|
+
create(:redeemable_virtual_gift_card,
|
|
50
|
+
recipient_name: "Daeva",
|
|
51
|
+
recipient_email: "dog@example.com")
|
|
50
52
|
}
|
|
51
|
-
let(:other_gift_card) { create(:redeemable_virtual_gift_card)}
|
|
53
|
+
let(:other_gift_card) { create(:redeemable_virtual_gift_card) }
|
|
52
54
|
let(:order) { gift_card.line_item.order }
|
|
53
55
|
|
|
54
56
|
it "can lookup gift card by recipient email" do
|
|
@@ -9,17 +9,17 @@ describe 'Gift Cards', type: :feature, js: true do
|
|
|
9
9
|
allow_any_instance_of(Spree::Admin::BaseController).to receive(:spree_current_user).and_return(admin_user)
|
|
10
10
|
end
|
|
11
11
|
|
|
12
|
-
describe
|
|
12
|
+
describe 'edit product' do
|
|
13
13
|
let(:product) { create(:product, available_on: 1.year.from_now) }
|
|
14
14
|
|
|
15
|
-
it
|
|
15
|
+
it 'can mark a product as a gift card' do
|
|
16
16
|
visit spree.admin_product_path(product)
|
|
17
17
|
|
|
18
18
|
find('#product_gift_card').click
|
|
19
19
|
|
|
20
20
|
click_on 'Update'
|
|
21
21
|
|
|
22
|
-
expect(page).to have_content(
|
|
22
|
+
expect(page).to have_content('successfully updated!')
|
|
23
23
|
expect(page).to have_field('product_gift_card', checked: true)
|
|
24
24
|
end
|
|
25
25
|
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
2
|
|
|
3
|
-
describe
|
|
3
|
+
describe 'solidus_virtual_gift_card:send_current_emails' do
|
|
4
4
|
|
|
5
5
|
let(:task) { Rake::Task['solidus_virtual_gift_card:send_current_emails'] }
|
|
6
6
|
let(:purchaser) {create(:user)}
|
|
@@ -12,46 +12,46 @@ describe "solidus_virtual_gift_card:send_current_emails" do
|
|
|
12
12
|
|
|
13
13
|
subject { task.invoke }
|
|
14
14
|
|
|
15
|
-
context
|
|
16
|
-
it
|
|
15
|
+
context 'with gift card sent today' do
|
|
16
|
+
it 'sends emails to be sent today' do
|
|
17
17
|
gift_card = Spree::VirtualGiftCard.create!(amount: 50, send_email_at: Date.today, redeemable: true, purchaser: purchaser)
|
|
18
18
|
expect(Spree::GiftCardMailer).to receive(:gift_card_email).with(gift_card).and_return(double(deliver_later: true))
|
|
19
19
|
subject
|
|
20
20
|
end
|
|
21
21
|
|
|
22
|
-
it
|
|
22
|
+
it 'does not send unredeemable giftcards' do
|
|
23
23
|
gift_card = Spree::VirtualGiftCard.create!(amount: 50, send_email_at: Date.today)
|
|
24
24
|
expect(Spree::GiftCardMailer).to_not receive(:gift_card_email).with(gift_card)
|
|
25
25
|
subject
|
|
26
26
|
end
|
|
27
27
|
end
|
|
28
28
|
|
|
29
|
-
context
|
|
30
|
-
it
|
|
29
|
+
context 'with gift card already sent today' do
|
|
30
|
+
it 'sends emails to be sent today' do
|
|
31
31
|
Spree::VirtualGiftCard.create!(amount: 50, send_email_at: Date.today, sent_at: DateTime.now, redeemable: true, purchaser: purchaser)
|
|
32
32
|
expect(Spree::GiftCardMailer).to_not receive(:gift_card_email)
|
|
33
33
|
subject
|
|
34
34
|
end
|
|
35
35
|
end
|
|
36
36
|
|
|
37
|
-
context
|
|
38
|
-
it
|
|
37
|
+
context 'with gift cards sent in the future' do
|
|
38
|
+
it 'does not sends emails' do
|
|
39
39
|
Spree::VirtualGiftCard.create!(amount: 50, send_email_at: 10.days.from_now.to_date, redeemable: true, purchaser: purchaser)
|
|
40
40
|
expect(Spree::GiftCardMailer).to_not receive(:gift_card_email)
|
|
41
41
|
subject
|
|
42
42
|
end
|
|
43
43
|
end
|
|
44
44
|
|
|
45
|
-
context
|
|
46
|
-
it
|
|
45
|
+
context 'with gift cards sent in the past' do
|
|
46
|
+
it 'does not sends emails' do
|
|
47
47
|
Spree::VirtualGiftCard.create!(amount: 50, send_email_at: 1.days.ago, sent_at: 1.days.ago.to_date, redeemable: true, purchaser: purchaser)
|
|
48
48
|
expect(Spree::GiftCardMailer).to_not receive(:gift_card_email)
|
|
49
49
|
subject
|
|
50
50
|
end
|
|
51
51
|
end
|
|
52
52
|
|
|
53
|
-
context
|
|
54
|
-
it
|
|
53
|
+
context 'with gift cards not specified' do
|
|
54
|
+
it 'does not sends emails' do
|
|
55
55
|
Spree::VirtualGiftCard.create!(amount: 50, send_email_at: nil)
|
|
56
56
|
expect(Spree::GiftCardMailer).to_not receive(:gift_card_email)
|
|
57
57
|
subject
|
|
@@ -6,13 +6,13 @@ describe Spree::GiftCardMailer, type: :mailer do
|
|
|
6
6
|
|
|
7
7
|
subject { Spree::GiftCardMailer.gift_card_email(gift_card) }
|
|
8
8
|
|
|
9
|
-
context
|
|
9
|
+
context 'the recipient email is blank' do
|
|
10
10
|
before do
|
|
11
|
-
gift_card.
|
|
12
|
-
gift_card.line_item.order.
|
|
11
|
+
gift_card.update!(recipient_email: '')
|
|
12
|
+
gift_card.line_item.order.update!(email: 'gift_card_tester@example.com')
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
-
it
|
|
15
|
+
it 'uses the email associated with the order' do
|
|
16
16
|
expect(subject.to).to contain_exactly('gift_card_tester@example.com')
|
|
17
17
|
end
|
|
18
18
|
end
|
|
@@ -14,7 +14,7 @@ describe Spree::RedemptionCodeGenerator do
|
|
|
14
14
|
subject { Spree::RedemptionCodeGenerator.format_redemption_code_for_lookup(redemption_code) }
|
|
15
15
|
|
|
16
16
|
context 'redemption code has no dashes' do
|
|
17
|
-
let(:redemption_code) {
|
|
17
|
+
let(:redemption_code) { '1234ABCD1234ABCD' }
|
|
18
18
|
|
|
19
19
|
it 'does nothing to the code' do
|
|
20
20
|
expect(subject).to eq redemption_code
|
|
@@ -22,8 +22,8 @@ describe Spree::RedemptionCodeGenerator do
|
|
|
22
22
|
end
|
|
23
23
|
|
|
24
24
|
context 'redemption code 4 groups of 4 characters, separated by dashes' do
|
|
25
|
-
let(:redemption_code) {
|
|
26
|
-
let(:formatted_redemption_code) {
|
|
25
|
+
let(:redemption_code) { '1234-ABCD-1234-ABCD' }
|
|
26
|
+
let(:formatted_redemption_code) { '1234ABCD1234ABCD' }
|
|
27
27
|
|
|
28
28
|
it 'strips the dashes' do
|
|
29
29
|
expect(subject).to eq formatted_redemption_code
|
|
@@ -31,8 +31,8 @@ describe Spree::RedemptionCodeGenerator do
|
|
|
31
31
|
end
|
|
32
32
|
|
|
33
33
|
context 'redemption code is mixed-case' do
|
|
34
|
-
let(:redemption_code) {
|
|
35
|
-
let(:formatted_redemption_code) {
|
|
34
|
+
let(:redemption_code) { '1234-aBCd-1234-AbcD' }
|
|
35
|
+
let(:formatted_redemption_code) { '1234ABCD1234ABCD' }
|
|
36
36
|
|
|
37
37
|
it 'makes it all upcase' do
|
|
38
38
|
expect(subject).to eq formatted_redemption_code
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
2
|
|
|
3
3
|
describe Spree::LineItem do
|
|
4
|
-
describe
|
|
4
|
+
describe '#redemption_codes' do
|
|
5
5
|
let(:line_item) { create(:line_item, quantity: 2) }
|
|
6
6
|
let!(:gift_card) { create(:virtual_gift_card, line_item: line_item) }
|
|
7
7
|
let!(:gift_card_2) { create(:virtual_gift_card, line_item: line_item) }
|
|
@@ -28,7 +28,7 @@ describe Spree::LineItem do
|
|
|
28
28
|
end
|
|
29
29
|
end
|
|
30
30
|
|
|
31
|
-
describe
|
|
31
|
+
describe '#gift_card_details' do
|
|
32
32
|
let(:line_item) { create(:line_item, quantity: 2) }
|
|
33
33
|
let!(:gift_card) { create(:redeemable_virtual_gift_card, line_item: line_item) }
|
|
34
34
|
let!(:gift_card_2) { create(:redeemable_virtual_gift_card, line_item: line_item) }
|