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.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -1
  3. data/README.md +1 -1
  4. data/VERSION +1 -1
  5. data/app/models/paid_up/ability.rb +7 -3
  6. data/coverage/.last_run.json +1 -1
  7. data/coverage/.resultset.json +1430 -33
  8. data/lib/paid_up/engine.rb +9 -4
  9. data/lib/paid_up/mixins/paid_for.rb +1 -1
  10. data/paid_up.gemspec +13 -5
  11. data/spec/controllers/paid_up/plans_spec.rb +2 -2
  12. data/spec/controllers/paid_up/subscriptions_spec.rb +25 -46
  13. data/spec/dummy/config/application.rb +12 -0
  14. data/spec/dummy/coverage/.last_run.json +5 -0
  15. data/spec/dummy/coverage/.resultset.json +155 -0
  16. data/spec/dummy/coverage/.resultset.json.lock +0 -0
  17. data/spec/dummy/db/development.sqlite3 +0 -0
  18. data/spec/dummy/db/seeds.rb +88 -14
  19. data/spec/dummy/db/test.sqlite3 +0 -0
  20. data/spec/dummy/log/development.log +2281 -0
  21. data/spec/factories/group.rb +10 -0
  22. data/spec/factories/user.rb +19 -1
  23. data/spec/models/group_spec.rb +5 -5
  24. data/spec/models/paid_up/feature_spec.rb +2 -1
  25. data/spec/models/paid_up/plan_spec.rb +3 -2
  26. data/spec/models/user_spec.rb +47 -32
  27. data/spec/rails_helper.rb +18 -1
  28. data/spec/routing/paid_up/plans_spec.rb +1 -1
  29. data/spec/routing/paid_up/subscription_spec.rb +1 -1
  30. data/spec/support/features.rb +5 -0
  31. data/spec/support/groups.rb +4 -32
  32. data/spec/support/loaded_site.rb +7 -0
  33. data/spec/support/plans.rb +7 -0
  34. data/spec/support/users.rb +8 -0
  35. data/spec/views/paid_up/plans_spec.rb +1 -2
  36. data/spec/views/paid_up/subscriptions_spec.rb +2 -3
  37. metadata +23 -4
  38. data/spec/support/plans_and_features.rb +0 -163
  39. data/spec/support/subscribers.rb +0 -44
@@ -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
@@ -1,7 +1,25 @@
1
1
  FactoryGirl.define do
2
- factory :user, aliases: [:subscriber] do
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
@@ -2,7 +2,7 @@ require 'rails_helper'
2
2
  require "cancan/matchers"
3
3
 
4
4
  describe Group do
5
- include_context 'groups'
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 1 }
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?' do
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(1) }
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') }
@@ -2,7 +2,7 @@ require 'rails_helper'
2
2
  require "cancan/matchers"
3
3
 
4
4
  describe User do
5
- include_context 'subscribers'
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 5 }
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 5 }
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 1 }
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 eq PaidUp::Unlimited.to_i }
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 1 }
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 { professional_subscriber.rolify_rows 'groups' }
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
- group = Group.create! title: Forgery('name').company_name
195
- professional_subscriber.add_role(:owner, group)
207
+ FactoryGirl.create(
208
+ :group,
209
+ owner: blank_subscriber
210
+ )
196
211
  end
197
212
  end
198
- subject { professional_subscriber.rolify_rows 'groups' }
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) { Group.create!(title: 'Test 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(:read, Group) }
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) { Group.create!(title: 'Test 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(:read, Group) }
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) { Group.create!(title: 'Test 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(:read, Group) }
328
- it{ should_not be_able_to(:manage, group) }
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 one group is owned" do
335
- let(:group) { Group.create!(title: 'Test 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(:read, Group) }
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) { Group.create!(title: 'Test 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(:read, Group) }
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){ Group.create!(title: 'Test 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(:read, Group) }
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
@@ -1,7 +1,7 @@
1
1
  require 'rails_helper'
2
2
 
3
3
  describe 'PaidUp::Routing' do
4
- include_context 'plans and features'
4
+ include_context 'loaded site'
5
5
  routes { PaidUp::Engine.routes }
6
6
 
7
7
  describe "routes to the list of all plans" do
@@ -1,7 +1,7 @@
1
1
  require 'rails_helper'
2
2
 
3
3
  describe 'PaidUp::Routing' do
4
- include_context 'plans and features'
4
+ include_context 'loaded site'
5
5
  routes { PaidUp::Engine.routes }
6
6
 
7
7
  describe 'nested resource' do
@@ -0,0 +1,5 @@
1
+ shared_context "features" do
2
+ let!(:ad_free_feature) { PaidUp::Feature.find_by_slug('ad_free') }
3
+ let!(:groups_feature) { PaidUp::Feature.find_by_slug('groups') }
4
+ let!(:doodads_feature) { PaidUp::Feature.find_by_slug('doodads') }\
5
+ end
@@ -1,34 +1,6 @@
1
1
  shared_context 'groups' do
2
- include_context 'subscribers'
3
-
4
- let!(:first_group) {
5
- FactoryGirl.create(
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 'loaded site' do
2
+ include_context 'plans'
3
+ include_context 'features'
4
+ include_context 'stripe'
5
+ include_context 'users'
6
+ include_context 'groups'
7
+ 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,7 @@
1
1
  require "rails_helper"
2
2
 
3
3
  RSpec.describe "paid_up/plans/index" do
4
- include_context 'plans and features'
5
- include_context 'subscribers'
4
+ include_context 'loaded site'
6
5
 
7
6
  context 'when user is anonymous' do
8
7
  before do
@@ -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.5
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-21 00:00:00.000000000 Z
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/plans_and_features.rb
452
+ - spec/support/loaded_site.rb
453
+ - spec/support/plans.rb
435
454
  - spec/support/stripe.rb
436
- - spec/support/subscribers.rb
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