1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
|
require 'spec_helper'
RSpec.describe Spree::Admin::SubscriptionsController, type: :request do
extend Spree::TestingSupport::AuthorizationHelpers::Request
stub_authorization!
before do
ActionController::Base.allow_forgery_protection = false
end
after do
ActionController::Base.allow_forgery_protection = true
end
describe 'get /admin/subscriptions' do
subject do
get spree.admin_subscriptions_path
response
end
it { is_expected.to be_successful }
end
describe 'GET :new' do
subject do
get spree.new_admin_subscription_path
response
end
it { is_expected.to be_successful }
end
describe 'GET :edit' do
subject do
get spree.edit_admin_subscription_path(subscription)
response
end
let(:subscription) { create :subscription, :actionable }
it { is_expected.to be_successful }
end
describe 'PUT :update' do
subject { put spree.admin_subscription_path(subscription), params: subscription_params }
let(:expected_date) { DateTime.parse('2001/11/12') }
let(:subscription) { create :subscription, :actionable }
let(:subscription_params) do
{
subscription: { actionable_date: expected_date }
}
end
it { is_expected.to redirect_to spree.admin_subscriptions_path }
it 'updates the subscription attributes', :aggregate_failures do
expect { subject }.to change { subscription.reload.actionable_date }.to expected_date
end
end
describe 'POST cancel' do
subject { delete spree.cancel_admin_subscription_path(subscription) }
context 'the subscription can be canceled' do
let(:subscription) { create :subscription, :actionable }
it { is_expected.to redirect_to spree.admin_subscriptions_path }
it 'has a message' do
subject
expect(flash[:notice]).to be_present
end
it 'cancels the subscription' do
expect { subject }.to change { subscription.reload.state }.from('active').to('canceled')
end
end
context 'the subscription cannot be canceled' do
let(:subscription) { create :subscription, :canceled }
it { is_expected.to redirect_to spree.admin_subscriptions_path }
it 'has a message' do
subject
expect(flash[:notice]).to be_present
end
it 'cancels the subscription' do
expect { subject }.to_not change { subscription.reload.state }
end
end
end
describe 'POST activate' do
subject { post spree.activate_admin_subscription_path(subscription) }
context 'the subscription can be activated' do
let(:subscription) { create :subscription, :canceled, :with_line_item }
it { is_expected.to redirect_to spree.admin_subscriptions_path }
it 'has a message' do
subject
expect(flash[:notice]).to be_present
end
it 'cancels the subscription' do
expect { subject }.to change { subscription.reload.state }.from('canceled').to('active')
end
end
context 'the subscription cannot be activated' do
let(:subscription) { create :subscription, :actionable, :with_line_item }
it { is_expected.to redirect_to spree.admin_subscriptions_path }
it 'has a message' do
subject
expect(flash[:notice]).to be_present
end
it 'cancels the subscription' do
expect { subject }.to_not change { subscription.reload.state }
end
end
end
describe 'POST skip' do
subject { post spree.skip_admin_subscription_path(subscription) }
let(:subscription) { create :subscription, :actionable, :with_line_item }
let!(:expected_date) { subscription.next_actionable_date }
it { is_expected.to redirect_to spree.admin_subscriptions_path }
it 'has a message' do
subject
expect(flash[:notice]).to be_present
end
it 'advances the actioanble_date' do
expect { subject }.
to change { subscription.reload.actionable_date }.
from(subscription.actionable_date).to(expected_date)
end
end
end
|