paid_up 0.7.5 → 0.7.6
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/Gemfile +1 -1
- data/README.md +1 -1
- data/VERSION +1 -1
- data/app/models/paid_up/ability.rb +7 -3
- data/coverage/.last_run.json +1 -1
- data/coverage/.resultset.json +1430 -33
- data/lib/paid_up/engine.rb +9 -4
- data/lib/paid_up/mixins/paid_for.rb +1 -1
- data/paid_up.gemspec +13 -5
- data/spec/controllers/paid_up/plans_spec.rb +2 -2
- data/spec/controllers/paid_up/subscriptions_spec.rb +25 -46
- data/spec/dummy/config/application.rb +12 -0
- data/spec/dummy/coverage/.last_run.json +5 -0
- data/spec/dummy/coverage/.resultset.json +155 -0
- data/spec/dummy/coverage/.resultset.json.lock +0 -0
- data/spec/dummy/db/development.sqlite3 +0 -0
- data/spec/dummy/db/seeds.rb +88 -14
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/log/development.log +2281 -0
- data/spec/factories/group.rb +10 -0
- data/spec/factories/user.rb +19 -1
- data/spec/models/group_spec.rb +5 -5
- data/spec/models/paid_up/feature_spec.rb +2 -1
- data/spec/models/paid_up/plan_spec.rb +3 -2
- data/spec/models/user_spec.rb +47 -32
- data/spec/rails_helper.rb +18 -1
- data/spec/routing/paid_up/plans_spec.rb +1 -1
- data/spec/routing/paid_up/subscription_spec.rb +1 -1
- data/spec/support/features.rb +5 -0
- data/spec/support/groups.rb +4 -32
- data/spec/support/loaded_site.rb +7 -0
- data/spec/support/plans.rb +7 -0
- data/spec/support/users.rb +8 -0
- data/spec/views/paid_up/plans_spec.rb +1 -2
- data/spec/views/paid_up/subscriptions_spec.rb +2 -3
- metadata +23 -4
- data/spec/support/plans_and_features.rb +0 -163
- data/spec/support/subscribers.rb +0 -44
data/spec/factories/group.rb
CHANGED
@@ -1,5 +1,15 @@
|
|
1
1
|
FactoryGirl.define do
|
2
2
|
factory :group do
|
3
3
|
title 'Test Title'
|
4
|
+
transient do
|
5
|
+
owner { User.order("RANDOM()").first }
|
6
|
+
end
|
7
|
+
# the after(:create) yields two values; the user instance itself and the
|
8
|
+
# evaluator, which stores all values from the factory, including transient
|
9
|
+
# attributes; `create_list`'s second argument is the number of records
|
10
|
+
# to create and we make sure the user is associated properly to the post
|
11
|
+
after(:create) do |group, evaluator|
|
12
|
+
evaluator.owner.add_role(:owner, group)
|
13
|
+
end
|
4
14
|
end
|
5
15
|
end
|
data/spec/factories/user.rb
CHANGED
@@ -1,7 +1,25 @@
|
|
1
1
|
FactoryGirl.define do
|
2
|
-
factory :user
|
2
|
+
factory :user do
|
3
3
|
email { "#{name.gsub(' ', '.').downcase}@example.com" }
|
4
4
|
password "password"
|
5
5
|
password_confirmation "password"
|
6
|
+
transient do
|
7
|
+
plan { PaidUp::Plan.order("RANDOM()").first }
|
8
|
+
end
|
9
|
+
# the after(:create) yields two values; the user instance itself and the
|
10
|
+
# evaluator, which stores all values from the factory, including transient
|
11
|
+
# attributes; `create_list`'s second argument is the number of records
|
12
|
+
# to create and we make sure the user is associated properly to the post
|
13
|
+
after(:create) do |user, evaluator|
|
14
|
+
token = Stripe::Token.create(
|
15
|
+
card: {
|
16
|
+
number: '4242424242424242',
|
17
|
+
exp_month: 1,
|
18
|
+
exp_year: 45,
|
19
|
+
cvc: '111'
|
20
|
+
}
|
21
|
+
).id
|
22
|
+
user.subscribe_to_plan(evaluator.plan, token)
|
23
|
+
end
|
6
24
|
end
|
7
25
|
end
|
data/spec/models/group_spec.rb
CHANGED
@@ -2,7 +2,7 @@ require 'rails_helper'
|
|
2
2
|
require "cancan/matchers"
|
3
3
|
|
4
4
|
describe Group do
|
5
|
-
include_context '
|
5
|
+
include_context 'loaded site'
|
6
6
|
|
7
7
|
describe '#owners' do
|
8
8
|
subject { first_group.owners }
|
@@ -22,7 +22,7 @@ describe Group do
|
|
22
22
|
describe '#owners_enabled_count' do
|
23
23
|
describe 'when limited' do
|
24
24
|
subject { first_group.owners_enabled_count }
|
25
|
-
it { should eq
|
25
|
+
it { should eq 5 }
|
26
26
|
end
|
27
27
|
describe 'when unlimited' do
|
28
28
|
subject { second_group.owners_enabled_count }
|
@@ -41,13 +41,13 @@ describe Group do
|
|
41
41
|
it { should eq 2 }
|
42
42
|
end
|
43
43
|
|
44
|
-
describe '#enabled
|
44
|
+
describe '#enabled' do
|
45
45
|
describe 'when true' do
|
46
|
-
subject { first_group.enabled
|
46
|
+
subject { first_group.enabled }
|
47
47
|
it { should eq true }
|
48
48
|
end
|
49
49
|
describe 'when false' do
|
50
|
-
subject { disabled_group.enabled
|
50
|
+
subject { disabled_group.enabled }
|
51
51
|
it { should eq false }
|
52
52
|
end
|
53
53
|
end
|
@@ -1,12 +1,13 @@
|
|
1
1
|
require 'rails_helper'
|
2
2
|
|
3
3
|
describe PaidUp::Feature do
|
4
|
+
include_context 'loaded site'
|
5
|
+
|
4
6
|
it { should validate_presence_of(:slug) }
|
5
7
|
it { should validate_presence_of(:title) }
|
6
8
|
it { should validate_presence_of(:setting_type) }
|
7
9
|
it { should validate_inclusion_of(:setting_type).in_array(%w(boolean table_rows rolify_rows))}
|
8
10
|
|
9
|
-
include_context 'plans and features'
|
10
11
|
context '#feature_model' do
|
11
12
|
subject { groups_feature.feature_model }
|
12
13
|
it { should eq Group }
|
@@ -1,6 +1,8 @@
|
|
1
1
|
require 'rails_helper'
|
2
2
|
|
3
3
|
describe PaidUp::Plan do
|
4
|
+
include_context 'loaded site'
|
5
|
+
|
4
6
|
it { should have_many(:plan_feature_settings).class_name('PaidUp::PlanFeatureSetting') }
|
5
7
|
|
6
8
|
it { should validate_presence_of(:title) }
|
@@ -8,7 +10,6 @@ describe PaidUp::Plan do
|
|
8
10
|
|
9
11
|
it { should validate_uniqueness_of(:title) }
|
10
12
|
|
11
|
-
include_context 'plans and features'
|
12
13
|
|
13
14
|
describe '.subscribable' do
|
14
15
|
context 'returns all subscribable plans' do
|
@@ -28,7 +29,7 @@ describe PaidUp::Plan do
|
|
28
29
|
describe 'when setting_type is integer' do
|
29
30
|
context 'returns the setting value if available' do
|
30
31
|
subject { group_leader_plan.feature_setting('groups') }
|
31
|
-
it { should eq(
|
32
|
+
it { should eq(5) }
|
32
33
|
end
|
33
34
|
context 'returns 0 if not available' do
|
34
35
|
subject { free_plan.feature_setting('groups') }
|
data/spec/models/user_spec.rb
CHANGED
@@ -2,7 +2,7 @@ require 'rails_helper'
|
|
2
2
|
require "cancan/matchers"
|
3
3
|
|
4
4
|
describe User do
|
5
|
-
include_context '
|
5
|
+
include_context 'loaded site'
|
6
6
|
|
7
7
|
context '#stripe_data' do
|
8
8
|
subject { no_ads_subscriber.stripe_data }
|
@@ -20,6 +20,9 @@ describe User do
|
|
20
20
|
token = working_stripe_token free_subscriber
|
21
21
|
free_subscriber.subscribe_to_plan no_ads_plan, token
|
22
22
|
end
|
23
|
+
after do
|
24
|
+
free_subscriber.subscribe_to_plan free_plan
|
25
|
+
end
|
23
26
|
subject { free_subscriber.plan }
|
24
27
|
it { should eq(no_ads_plan) }
|
25
28
|
end
|
@@ -29,6 +32,9 @@ describe User do
|
|
29
32
|
before do
|
30
33
|
no_ads_subscriber.subscribe_to_plan group_leader_plan
|
31
34
|
end
|
35
|
+
after do
|
36
|
+
no_ads_subscriber.subscribe_to_plan no_ads_plan
|
37
|
+
end
|
32
38
|
subject { no_ads_subscriber.plan }
|
33
39
|
it { should eq(group_leader_plan) }
|
34
40
|
end
|
@@ -37,6 +43,9 @@ describe User do
|
|
37
43
|
token = working_stripe_token no_ads_subscriber
|
38
44
|
no_ads_subscriber.subscribe_to_plan group_leader_plan, token
|
39
45
|
end
|
46
|
+
after do
|
47
|
+
no_ads_subscriber.subscribe_to_plan no_ads_plan
|
48
|
+
end
|
40
49
|
subject { no_ads_subscriber.plan }
|
41
50
|
it { should eq(group_leader_plan) }
|
42
51
|
end
|
@@ -60,6 +69,10 @@ describe User do
|
|
60
69
|
before do
|
61
70
|
professional_subscriber.subscribe_to_free_plan
|
62
71
|
end
|
72
|
+
after do
|
73
|
+
token = working_stripe_token no_ads_subscriber
|
74
|
+
professional_subscriber.subscribe_to_plan professional_plan, token
|
75
|
+
end
|
63
76
|
subject { professional_subscriber.plan }
|
64
77
|
it { should eq(free_plan) }
|
65
78
|
end
|
@@ -84,7 +97,7 @@ describe User do
|
|
84
97
|
end
|
85
98
|
context 'when subscribed to a plan with the feature limited' do
|
86
99
|
subject { group_leader_subscriber.table_rows_remaining 'doodads' }
|
87
|
-
it { should eq
|
100
|
+
it { should eq 10 }
|
88
101
|
end
|
89
102
|
context 'when subscribed to a plan with the feature unlimited' do
|
90
103
|
subject { professional_subscriber.table_rows_remaining 'doodads' }
|
@@ -114,7 +127,7 @@ describe User do
|
|
114
127
|
end
|
115
128
|
context 'when subscribed to a plan with the feature limited' do
|
116
129
|
subject { group_leader_subscriber.table_rows_allowed 'doodads' }
|
117
|
-
it { should eq
|
130
|
+
it { should eq 10 }
|
118
131
|
end
|
119
132
|
context 'when subscribed to a plan with the feature unlimited' do
|
120
133
|
subject { professional_subscriber.table_rows_allowed 'doodads' }
|
@@ -145,11 +158,11 @@ describe User do
|
|
145
158
|
end
|
146
159
|
context 'when subscribed to a plan with the feature limited' do
|
147
160
|
subject { group_leader_subscriber.rolify_rows_remaining 'groups' }
|
148
|
-
it { should eq
|
161
|
+
it { should eq 4 }
|
149
162
|
end
|
150
163
|
context 'when subscribed to a plan with the feature unlimited' do
|
151
164
|
subject { professional_subscriber.rolify_rows_remaining 'groups' }
|
152
|
-
it { should
|
165
|
+
it { should be > 99999999 }
|
153
166
|
end
|
154
167
|
end
|
155
168
|
|
@@ -175,7 +188,7 @@ describe User do
|
|
175
188
|
end
|
176
189
|
context 'when subscribed to a plan with the feature limited' do
|
177
190
|
subject { group_leader_subscriber.rolify_rows_allowed 'groups' }
|
178
|
-
it { should eq
|
191
|
+
it { should eq 5 }
|
179
192
|
end
|
180
193
|
context 'when subscribed to a plan with the feature unlimited' do
|
181
194
|
subject { professional_subscriber.rolify_rows_allowed 'groups' }
|
@@ -185,17 +198,19 @@ describe User do
|
|
185
198
|
|
186
199
|
context '#rolify_rows' do
|
187
200
|
context 'when possessing no rows' do
|
188
|
-
subject {
|
201
|
+
subject { blank_subscriber.rolify_rows 'groups' }
|
189
202
|
it { should eq 0 }
|
190
203
|
end
|
191
204
|
context 'when possessing 3 rows' do
|
192
205
|
before do
|
193
206
|
3.times do
|
194
|
-
|
195
|
-
|
207
|
+
FactoryGirl.create(
|
208
|
+
:group,
|
209
|
+
owner: blank_subscriber
|
210
|
+
)
|
196
211
|
end
|
197
212
|
end
|
198
|
-
subject {
|
213
|
+
subject { blank_subscriber.rolify_rows 'groups' }
|
199
214
|
it { should eq 3 }
|
200
215
|
end
|
201
216
|
end
|
@@ -298,10 +313,11 @@ describe User do
|
|
298
313
|
describe "Abilities" do
|
299
314
|
|
300
315
|
context "when anonymous" do
|
301
|
-
let(:group)
|
316
|
+
let(:group){ FactoryGirl.create(:group, owner: professional_subscriber) }
|
302
317
|
let(:user){ nil }
|
303
318
|
subject(:ability){ Ability.new(user) }
|
304
|
-
it{ should be_able_to(:
|
319
|
+
it{ should be_able_to(:index, group) }
|
320
|
+
it{ should be_able_to(:show, group) }
|
305
321
|
it{ should_not be_able_to(:manage, group) }
|
306
322
|
it{ should_not be_able_to(:own, Group) }
|
307
323
|
it{ should_not be_able_to(:create, Group) }
|
@@ -309,10 +325,11 @@ describe User do
|
|
309
325
|
it{ should_not be_able_to(:create, Doodad) }
|
310
326
|
end
|
311
327
|
context "when on free plan" do
|
312
|
-
let(:group)
|
328
|
+
let(:group){ FactoryGirl.create(:group, owner: professional_subscriber) }
|
313
329
|
let(:user){ free_subscriber }
|
314
330
|
subject(:ability){ Ability.new(user) }
|
315
|
-
it{ should be_able_to(:
|
331
|
+
it{ should be_able_to(:index, group) }
|
332
|
+
it{ should be_able_to(:show, group) }
|
316
333
|
it{ should_not be_able_to(:manage, group) }
|
317
334
|
it{ should_not be_able_to(:own, Group) }
|
318
335
|
it{ should_not be_able_to(:create, Group) }
|
@@ -321,24 +338,23 @@ describe User do
|
|
321
338
|
end
|
322
339
|
context "when on group plan" do
|
323
340
|
context "given no groups are owned" do
|
324
|
-
let(:group)
|
341
|
+
let(:group){ FactoryGirl.create(:group, owner: group_leader_subscriber) }
|
325
342
|
let(:user){ group_leader_subscriber }
|
326
343
|
subject(:ability){ Ability.new(user) }
|
327
|
-
it{ should be_able_to(:
|
328
|
-
it{
|
344
|
+
it{ should be_able_to(:index, group) }
|
345
|
+
it{ should be_able_to(:show, group) }
|
346
|
+
it{ should be_able_to(:manage, group) }
|
329
347
|
it{ should be_able_to(:own, Group) }
|
330
348
|
it{ should be_able_to(:create, Group) }
|
331
349
|
it{ should be_able_to(:use, :ad_free) }
|
332
350
|
it{ should be_able_to(:create, Doodad) }
|
333
351
|
end
|
334
|
-
context "given
|
335
|
-
let(:group)
|
336
|
-
let(:user) {
|
337
|
-
group_leader_subscriber.add_role(:owner, group)
|
338
|
-
group_leader_subscriber
|
339
|
-
}
|
352
|
+
context "given all allowed groups are owned" do
|
353
|
+
let(:group){ FactoryGirl.create(:group, owner: disabling_subscriber) }
|
354
|
+
let(:user) { disabling_subscriber }
|
340
355
|
subject(:ability){ Ability.new(user) }
|
341
|
-
it{ should be_able_to(:
|
356
|
+
it{ should be_able_to(:index, group) }
|
357
|
+
it{ should be_able_to(:show, group) }
|
342
358
|
it{ should be_able_to(:manage, group) }
|
343
359
|
it{ should be_able_to(:own, Group) }
|
344
360
|
it{ should_not be_able_to(:create, Group) }
|
@@ -348,10 +364,11 @@ describe User do
|
|
348
364
|
end
|
349
365
|
context "when on professional plan" do
|
350
366
|
context "given no groups are owned" do
|
351
|
-
let(:group)
|
367
|
+
let(:group){ FactoryGirl.create(:group, owner: blank_subscriber) }
|
352
368
|
let(:user){ professional_subscriber }
|
353
369
|
subject(:ability){ Ability.new(user) }
|
354
|
-
it{ should be_able_to(:
|
370
|
+
it{ should be_able_to(:index, group) }
|
371
|
+
it{ should be_able_to(:show, group) }
|
355
372
|
it{ should_not be_able_to(:manage, group) }
|
356
373
|
it{ should be_able_to(:own, Group) }
|
357
374
|
it{ should be_able_to(:create, Group) }
|
@@ -359,13 +376,11 @@ describe User do
|
|
359
376
|
it{ should be_able_to(:create, Doodad) }
|
360
377
|
end
|
361
378
|
context "given one group is owned" do
|
362
|
-
let(:group){
|
363
|
-
let(:user){
|
364
|
-
professional_subscriber.add_role(:owner, group)
|
365
|
-
professional_subscriber
|
366
|
-
}
|
379
|
+
let(:group){ FactoryGirl.create(:group, owner: professional_subscriber) }
|
380
|
+
let(:user){ professional_subscriber }
|
367
381
|
subject(:ability){ Ability.new(user) }
|
368
|
-
it{ should be_able_to(:
|
382
|
+
it{ should be_able_to(:index, group) }
|
383
|
+
it{ should be_able_to(:show, group) }
|
369
384
|
it{ should be_able_to(:manage, group) }
|
370
385
|
it{ should be_able_to(:own, Group) }
|
371
386
|
it{ should be_able_to(:create, Group) }
|
data/spec/rails_helper.rb
CHANGED
@@ -10,6 +10,8 @@ require 'rspec/rails'
|
|
10
10
|
require 'shoulda/matchers'
|
11
11
|
require 'factory_girl_rails'
|
12
12
|
require 'capybara/rspec'
|
13
|
+
require 'database_cleaner'
|
14
|
+
require 'rake'
|
13
15
|
|
14
16
|
# Requires supporting ruby files with custom matchers and macros, etc, in
|
15
17
|
# spec/support/ and its subdirectories. Files matching `spec/**/*_spec.rb` are
|
@@ -26,11 +28,26 @@ require 'capybara/rspec'
|
|
26
28
|
#
|
27
29
|
Dir["./spec/support/**/*.rb"].sort.each { |f| require f}
|
28
30
|
|
31
|
+
ActiveRecord::Migrator.migrations_paths = 'spec/dummy/db/migrate'
|
32
|
+
|
29
33
|
# Checks for pending migrations before tests are run.
|
30
34
|
# If you are not using ActiveRecord, you can remove this line.
|
31
35
|
# ActiveRecord::Migration.maintain_test_schema!
|
32
36
|
|
33
37
|
RSpec.configure do |config|
|
38
|
+
|
39
|
+
config.before(:suite) do
|
40
|
+
DatabaseCleaner.strategy = :transaction
|
41
|
+
DatabaseCleaner.clean_with(:truncation)
|
42
|
+
Dummy::Application.load_tasks
|
43
|
+
Rake::Task['db:seed'].invoke # loading seeds
|
44
|
+
end
|
45
|
+
config.around(:each) do |example|
|
46
|
+
DatabaseCleaner.cleaning do
|
47
|
+
example.run
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
34
51
|
# Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
|
35
52
|
# config.fixture_path = "#{::Rails.root}/spec/fixtures
|
36
53
|
|
@@ -39,7 +56,7 @@ RSpec.configure do |config|
|
|
39
56
|
# If you're not using ActiveRecord, or you'd prefer not to run each of your
|
40
57
|
# examples within a transaction, remove the following line or assign false
|
41
58
|
# instead of true.
|
42
|
-
config.use_transactional_fixtures = true
|
59
|
+
# config.use_transactional_fixtures = true
|
43
60
|
|
44
61
|
# RSpec Rails can automatically mix in different behaviours to your tests
|
45
62
|
# based on their file location, for example enabling you to call `get` and
|
data/spec/support/groups.rb
CHANGED
@@ -1,34 +1,6 @@
|
|
1
1
|
shared_context 'groups' do
|
2
|
-
|
3
|
-
|
4
|
-
let
|
5
|
-
|
6
|
-
:group,
|
7
|
-
title: 'First Group'
|
8
|
-
)
|
9
|
-
}
|
10
|
-
let!(:second_group) {
|
11
|
-
FactoryGirl.create(
|
12
|
-
:group,
|
13
|
-
title: 'Second Group'
|
14
|
-
)
|
15
|
-
}
|
16
|
-
let!(:third_group) {
|
17
|
-
FactoryGirl.create(
|
18
|
-
:group,
|
19
|
-
title: 'Third Group'
|
20
|
-
)
|
21
|
-
}
|
22
|
-
let!(:disabled_group) {
|
23
|
-
FactoryGirl.create(
|
24
|
-
:group,
|
25
|
-
title: 'Disabled Group'
|
26
|
-
)
|
27
|
-
}
|
28
|
-
before do
|
29
|
-
group_leader_subscriber.add_role(:owner, first_group)
|
30
|
-
group_leader_subscriber.add_role(:owner, disabled_group)
|
31
|
-
professional_subscriber.add_role(:owner, second_group)
|
32
|
-
professional_subscriber.add_role(:owner, third_group)
|
33
|
-
end
|
2
|
+
let(:first_group) { Group.find_by_title('First Group') }
|
3
|
+
let(:second_group) { Group.find_by_title('Second Group') }
|
4
|
+
let(:third_group) { Group.find_by_title('Third Group') }
|
5
|
+
let(:disabled_group) { Group.find_by_title('Disabled Group') }
|
34
6
|
end
|
@@ -0,0 +1,7 @@
|
|
1
|
+
shared_context "plans" do
|
2
|
+
let!(:anonymous_plan) { PaidUp::Plan.find_by_stripe_id('anonymous-plan') }
|
3
|
+
let!(:free_plan) { PaidUp::Plan.find_by_stripe_id('free-plan') }
|
4
|
+
let!(:no_ads_plan) { PaidUp::Plan.find_by_stripe_id('no-ads-plan') }
|
5
|
+
let!(:group_leader_plan) { PaidUp::Plan.find_by_stripe_id('group-leader-plan') }
|
6
|
+
let!(:professional_plan) { PaidUp::Plan.find_by_stripe_id('professional-plan') }
|
7
|
+
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
shared_context 'users' do
|
2
|
+
let(:free_subscriber) { User.find_by_name('Free Subscriber') }
|
3
|
+
let(:no_ads_subscriber) { User.find_by_name('No Ads Subscriber') }
|
4
|
+
let(:group_leader_subscriber) { User.find_by_name('Group Leader Subscriber') }
|
5
|
+
let(:professional_subscriber) { User.find_by_name('Professional Subscriber') }
|
6
|
+
let(:blank_subscriber) { User.find_by_name('Blank Subscriber') }
|
7
|
+
let(:disabling_subscriber) { User.find_by_name('Disabling Subscriber') }
|
8
|
+
end
|
@@ -1,8 +1,8 @@
|
|
1
1
|
require "rails_helper"
|
2
2
|
|
3
3
|
RSpec.describe "paid_up/subscriptions/new" do
|
4
|
+
include_context 'loaded site'
|
4
5
|
context 'when user is logged in as free customer' do
|
5
|
-
include_context 'subscribers'
|
6
6
|
context "displays a payment form" do
|
7
7
|
before do
|
8
8
|
view.extend PaidUp::PlansHelper
|
@@ -19,7 +19,6 @@ RSpec.describe "paid_up/subscriptions/new" do
|
|
19
19
|
end
|
20
20
|
end
|
21
21
|
context 'when user is logged in as a paid customer' do
|
22
|
-
include_context 'subscribers'
|
23
22
|
context "displays a payment form" do
|
24
23
|
before do
|
25
24
|
view.extend PaidUp::PlansHelper
|
@@ -38,8 +37,8 @@ RSpec.describe "paid_up/subscriptions/new" do
|
|
38
37
|
end
|
39
38
|
|
40
39
|
RSpec.describe "paid_up/subscriptions/index" do
|
40
|
+
include_context 'loaded site'
|
41
41
|
context 'when user is logged in' do
|
42
|
-
include_context 'subscribers'
|
43
42
|
context "displays the details of a user's subscriptions" do
|
44
43
|
before do
|
45
44
|
view.extend PaidUp::PlansHelper
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: paid_up
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Karen Lundgren
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-06-
|
11
|
+
date: 2015-06-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -276,6 +276,20 @@ dependencies:
|
|
276
276
|
- - "~>"
|
277
277
|
- !ruby/object:Gem::Version
|
278
278
|
version: '3.2'
|
279
|
+
- !ruby/object:Gem::Dependency
|
280
|
+
name: factory_girl_rails
|
281
|
+
requirement: !ruby/object:Gem::Requirement
|
282
|
+
requirements:
|
283
|
+
- - "~>"
|
284
|
+
- !ruby/object:Gem::Version
|
285
|
+
version: '4.5'
|
286
|
+
type: :development
|
287
|
+
prerelease: false
|
288
|
+
version_requirements: !ruby/object:Gem::Requirement
|
289
|
+
requirements:
|
290
|
+
- - "~>"
|
291
|
+
- !ruby/object:Gem::Version
|
292
|
+
version: '4.5'
|
279
293
|
description: Allows a model of your choosing (such as users) to subscribe to a plan,
|
280
294
|
which enables features.
|
281
295
|
email: karen.e.lundgren@gmail.com
|
@@ -387,6 +401,9 @@ files:
|
|
387
401
|
- spec/dummy/config/locales/en.yml
|
388
402
|
- spec/dummy/config/routes.rb
|
389
403
|
- spec/dummy/config/secrets.yml
|
404
|
+
- spec/dummy/coverage/.last_run.json
|
405
|
+
- spec/dummy/coverage/.resultset.json
|
406
|
+
- spec/dummy/coverage/.resultset.json.lock
|
390
407
|
- spec/dummy/db/development.sqlite3
|
391
408
|
- spec/dummy/db/migrate/20150406154440_create_users_table.rb
|
392
409
|
- spec/dummy/db/migrate/20150517175135_create_groups_table.rb
|
@@ -430,10 +447,12 @@ files:
|
|
430
447
|
- spec/spec_helper.rb
|
431
448
|
- spec/support/controller_macros.rb
|
432
449
|
- spec/support/factory_girl.rb
|
450
|
+
- spec/support/features.rb
|
433
451
|
- spec/support/groups.rb
|
434
|
-
- spec/support/
|
452
|
+
- spec/support/loaded_site.rb
|
453
|
+
- spec/support/plans.rb
|
435
454
|
- spec/support/stripe.rb
|
436
|
-
- spec/support/
|
455
|
+
- spec/support/users.rb
|
437
456
|
- spec/views/paid_up/plans_spec.rb
|
438
457
|
- spec/views/paid_up/subscriptions_spec.rb
|
439
458
|
homepage: http://www.gemvein.com/museum/cases/paid_up
|