paid_up 0.10.4 → 0.11.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.
@@ -8,7 +8,8 @@ module PaidUp
8
8
  PaidUp::Feature.find_by_slug(table_name)
9
9
  end
10
10
 
11
- def paid_for
11
+ def paid_for(options = {})
12
+ my_scope = options[:scope] || :all
12
13
  feature.nil? && raise(
13
14
  :feature_not_found_feature.l(feature: table_name)
14
15
  )
@@ -20,6 +21,7 @@ module PaidUp
20
21
  attr_accessor :owner
21
22
  when 'table_rows'
22
23
  belongs_to :user
24
+ User.has_many table_name.to_sym
23
25
  else
24
26
  raise(
25
27
  :value_is_not_a_valid_setting_type.l(
@@ -28,8 +30,19 @@ module PaidUp
28
30
  )
29
31
  end
30
32
 
33
+ singleton_class.instance_eval do
34
+ send(:define_method, :paid_for_scope) do
35
+ send(my_scope)
36
+ end
37
+ end
38
+
31
39
  send(:define_method, :owners) do
32
- User.with_role(:owner, self)
40
+ case self.class.feature.setting_type
41
+ when 'table_rows'
42
+ [user]
43
+ when 'rolify_rows'
44
+ User.with_role(:owner, self)
45
+ end
33
46
  end
34
47
 
35
48
  send(:define_method, :save_with_owner) do |owner|
@@ -41,6 +54,7 @@ module PaidUp
41
54
  end
42
55
  end
43
56
 
57
+ # How many records can this user have?
44
58
  send(:define_method, :owners_enabled_count) do
45
59
  setting = 0
46
60
  owners.each do |subscriber|
@@ -54,9 +68,14 @@ module PaidUp
54
68
  owners.each do |subscriber|
55
69
  case self.class.feature.setting_type
56
70
  when 'table_rows'
57
- ids += subscriber.send(self.class.table_name).pluck(:id)
71
+ ids += subscriber.send(self.class.table_name)
72
+ .send(my_scope)
73
+ .pluck(:id)
58
74
  when 'rolify_rows'
59
- ids += self.class.with_role(:owner, subscriber).pluck(:id)
75
+ ids += self.class
76
+ .with_role(:owner, subscriber)
77
+ .send(my_scope)
78
+ .pluck(:id)
60
79
  else
61
80
  raise(
62
81
  :no_features_associated_with_table.l(
@@ -88,7 +88,8 @@ module PaidUp
88
88
  plan.feature_setting table_name
89
89
  end
90
90
  send(:define_method, :table_rows) do |table_name|
91
- send(table_name).size
91
+ model = table_name.classify.constantize
92
+ model.paid_for_scope.size
92
93
  end
93
94
  send(:define_method, :rolify_rows_unlimited?) do |table_name|
94
95
  rolify_rows_allowed(table_name) == PaidUp::Unlimited.to_i
@@ -100,8 +101,8 @@ module PaidUp
100
101
  plan.feature_setting table_name
101
102
  end
102
103
  send(:define_method, :rolify_rows) do |table_name|
103
- records = table_name.classify.constantize.with_role(:owner, self)
104
- records.size
104
+ model = table_name.classify.constantize
105
+ model.with_role(:owner, self).paid_for_scope.size
105
106
  end
106
107
  send(:define_method, :plan_stripe_id) do
107
108
  subscription.nil? && return
data/paid_up.gemspec CHANGED
@@ -2,16 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: paid_up 0.10.4 ruby lib
5
+ # stub: paid_up 0.11.0 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "paid_up"
9
- s.version = "0.10.4"
9
+ s.version = "0.11.0"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib"]
13
13
  s.authors = ["Karen Lundgren"]
14
- s.date = "2016-04-06"
14
+ s.date = "2017-02-20"
15
15
  s.description = "Allows a model of your choosing (such as users) to subscribe to a plan, which enables features."
16
16
  s.email = "karen.e.lundgren@gmail.com"
17
17
  s.extra_rdoc_files = [
@@ -96,6 +96,7 @@ Gem::Specification.new do |s|
96
96
  "spec/dummy/app/models/ability.rb",
97
97
  "spec/dummy/app/models/doodad.rb",
98
98
  "spec/dummy/app/models/group.rb",
99
+ "spec/dummy/app/models/post.rb",
99
100
  "spec/dummy/app/models/role.rb",
100
101
  "spec/dummy/app/models/user.rb",
101
102
  "spec/dummy/app/views/layouts/application.html.haml",
@@ -141,6 +142,8 @@ Gem::Specification.new do |s|
141
142
  "spec/dummy/db/migrate/20160207184113_add_stripe_id_column_to_users.paid_up.rb",
142
143
  "spec/dummy/db/migrate/20160207184114_create_paid_up_plan_feature_settings_table.paid_up.rb",
143
144
  "spec/dummy/db/migrate/20160210165341_add_coupon_code_column_to_users.paid_up.rb",
145
+ "spec/dummy/db/migrate/20170219225950_create_posts_table.rb",
146
+ "spec/dummy/db/migrate/20170220001913_add_active_column_to_groups.rb",
144
147
  "spec/dummy/db/schema.rb",
145
148
  "spec/dummy/db/seeds.rb",
146
149
  "spec/dummy/db/test.sqlite3",
@@ -162,11 +165,13 @@ Gem::Specification.new do |s|
162
165
  "spec/factories/group.rb",
163
166
  "spec/factories/plan.rb",
164
167
  "spec/factories/plan_feature_setting.rb",
168
+ "spec/factories/post.rb",
165
169
  "spec/factories/user.rb",
166
170
  "spec/models/group_spec.rb",
167
171
  "spec/models/paid_up/feature_spec.rb",
168
172
  "spec/models/paid_up/plan_feature_setting_spec.rb",
169
173
  "spec/models/paid_up/plan_spec.rb",
174
+ "spec/models/scope_spec.rb",
170
175
  "spec/models/user_spec.rb",
171
176
  "spec/paid_up_spec.rb",
172
177
  "spec/rails_helper.rb",
@@ -179,6 +184,7 @@ Gem::Specification.new do |s|
179
184
  "spec/support/loaded_site/groups.rb",
180
185
  "spec/support/loaded_site/loaded_site.rb",
181
186
  "spec/support/loaded_site/plans.rb",
187
+ "spec/support/loaded_site/posts.rb",
182
188
  "spec/support/loaded_site/users.rb",
183
189
  "spec/support/stripe.rb",
184
190
  "spec/views/paid_up/plans_spec.rb",
@@ -1,3 +1,5 @@
1
1
  class Group < ActiveRecord::Base
2
- paid_for
2
+ paid_for scope: :active
3
+
4
+ scope :active, -> { where(active: true) }
3
5
  end
@@ -0,0 +1,5 @@
1
+ class Post < ActiveRecord::Base
2
+ paid_for scope: :active
3
+
4
+ scope :active, -> { where(active: true) }
5
+ end
@@ -24,4 +24,10 @@ PaidUp.configure do |config|
24
24
  description: 'How many doodads included with this plan?',
25
25
  setting_type: 'table_rows'
26
26
  )
27
+ PaidUp.add_feature(
28
+ slug: 'posts',
29
+ title: 'Posts',
30
+ description: 'How many posts included with this plan?',
31
+ setting_type: 'table_rows'
32
+ )
27
33
  end
Binary file
@@ -0,0 +1,11 @@
1
+ class CreatePostsTable < ActiveRecord::Migration
2
+ def change
3
+ create_table :posts do |t|
4
+ t.string :user_id, index: true
5
+ t.string :title
6
+ t.boolean :active, null: false, default: false
7
+ t.timestamps
8
+ end
9
+ add_index :posts, :active
10
+ end
11
+ end
@@ -0,0 +1,6 @@
1
+ class AddActiveColumnToGroups < ActiveRecord::Migration
2
+ def change
3
+ add_column :groups, :active, :boolean, null: false, default: false
4
+ add_index :groups, :active
5
+ end
6
+ end
@@ -11,79 +11,93 @@
11
11
  #
12
12
  # It's strongly recommended that you check this file into your version control system.
13
13
 
14
- ActiveRecord::Schema.define(version: 20160210165341) do
14
+ ActiveRecord::Schema.define(version: 20170220001913) do
15
15
 
16
- create_table 'doodads', force: :cascade do |t|
17
- t.string 'user_id'
18
- t.string 'name'
19
- t.text 'description'
16
+ create_table "doodads", force: :cascade do |t|
17
+ t.string "user_id"
18
+ t.string "name"
19
+ t.text "description"
20
20
  end
21
21
 
22
- add_index "doodads", ['user_id'], name: "index_doodads_on_user_id"
22
+ add_index "doodads", ["user_id"], name: "index_doodads_on_user_id"
23
23
 
24
- create_table 'groups', force: :cascade do |t|
25
- t.string 'title'
26
- t.text 'description'
27
- t.datetime 'created_at'
28
- t.datetime 'updated_at'
24
+ create_table "groups", force: :cascade do |t|
25
+ t.string "title"
26
+ t.text "description"
27
+ t.datetime "created_at"
28
+ t.datetime "updated_at"
29
+ t.boolean "active", default: false, null: false
29
30
  end
30
31
 
31
- create_table 'paid_up_plan_feature_settings', force: :cascade do |t|
32
- t.integer 'paid_up_plan_id'
33
- t.string 'feature'
34
- t.integer 'setting'
32
+ add_index "groups", ["active"], name: "index_groups_on_active"
33
+
34
+ create_table "paid_up_plan_feature_settings", force: :cascade do |t|
35
+ t.integer "paid_up_plan_id"
36
+ t.string "feature"
37
+ t.integer "setting"
35
38
  end
36
39
 
37
- add_index "paid_up_plan_feature_settings", ['feature'], name: "index_paid_up_plan_feature_settings_on_feature"
38
- add_index "paid_up_plan_feature_settings", ['paid_up_plan_id'], name: "index_paid_up_plan_feature_settings_on_paid_up_plan_id"
40
+ add_index "paid_up_plan_feature_settings", ["feature"], name: "index_paid_up_plan_feature_settings_on_feature"
41
+ add_index "paid_up_plan_feature_settings", ["paid_up_plan_id"], name: "index_paid_up_plan_feature_settings_on_paid_up_plan_id"
39
42
 
40
- create_table 'paid_up_plans', force: :cascade do |t|
41
- t.string 'stripe_id'
42
- t.string 'title'
43
- t.text 'description'
44
- t.integer 'sort_order'
45
- t.datetime 'created_at'
46
- t.datetime 'updated_at'
43
+ create_table "paid_up_plans", force: :cascade do |t|
44
+ t.string "stripe_id"
45
+ t.string "title"
46
+ t.text "description"
47
+ t.integer "sort_order"
48
+ t.datetime "created_at"
49
+ t.datetime "updated_at"
47
50
  end
48
51
 
49
- add_index "paid_up_plans", ["stripe_id"], name: 'index_paid_up_plans_on_stripe_id', unique: true
50
- add_index "paid_up_plans", ["title"], name: 'index_paid_up_plans_on_title', unique: true
52
+ add_index "paid_up_plans", ["stripe_id"], name: "index_paid_up_plans_on_stripe_id", unique: true
53
+ add_index "paid_up_plans", ["title"], name: "index_paid_up_plans_on_title", unique: true
51
54
 
52
- create_table 'roles', force: :cascade do |t|
53
- t.string 'name'
54
- t.integer 'resource_id'
55
- t.string 'resource_type'
56
- t.datetime 'created_at'
57
- t.datetime 'updated_at'
55
+ create_table "posts", force: :cascade do |t|
56
+ t.string "user_id"
57
+ t.string "title"
58
+ t.boolean "active", default: false, null: false
59
+ t.datetime "created_at"
60
+ t.datetime "updated_at"
58
61
  end
59
62
 
60
- add_index "roles", ["name", "resource_type", 'resource_id'], name: "index_roles_on_name_and_resource_type_and_resource_id"
61
- add_index "roles", ['name'], name: "index_roles_on_name"
62
-
63
- create_table 'users', force: :cascade do |t|
64
- t.string 'name'
65
- t.string "email", default: '', null: false
66
- t.string "encrypted_password", default: '', null: false
67
- t.string 'reset_password_token'
68
- t.datetime 'reset_password_sent_at'
69
- t.datetime 'remember_created_at'
70
- t.integer 'sign_in_count', default: 0, null: false
71
- t.datetime 'current_sign_in_at'
72
- t.datetime 'last_sign_in_at'
73
- t.string 'current_sign_in_ip'
74
- t.string 'last_sign_in_ip'
75
- t.string 'stripe_id'
76
- t.string 'coupon_code'
63
+ add_index "posts", ["active"], name: "index_posts_on_active"
64
+ add_index "posts", ["user_id"], name: "index_posts_on_user_id"
65
+
66
+ create_table "roles", force: :cascade do |t|
67
+ t.string "name"
68
+ t.integer "resource_id"
69
+ t.string "resource_type"
70
+ t.datetime "created_at"
71
+ t.datetime "updated_at"
72
+ end
73
+
74
+ add_index "roles", ["name", "resource_type", "resource_id"], name: "index_roles_on_name_and_resource_type_and_resource_id"
75
+ add_index "roles", ["name"], name: "index_roles_on_name"
76
+
77
+ create_table "users", force: :cascade do |t|
78
+ t.string "name"
79
+ t.string "email", default: "", null: false
80
+ t.string "encrypted_password", default: "", null: false
81
+ t.string "reset_password_token"
82
+ t.datetime "reset_password_sent_at"
83
+ t.datetime "remember_created_at"
84
+ t.integer "sign_in_count", default: 0, null: false
85
+ t.datetime "current_sign_in_at"
86
+ t.datetime "last_sign_in_at"
87
+ t.string "current_sign_in_ip"
88
+ t.string "last_sign_in_ip"
89
+ t.string "stripe_id"
90
+ t.string "coupon_code"
77
91
  end
78
92
 
79
- add_index "users", ["email"], name: 'index_users_on_email', unique: true
80
- add_index "users", ["reset_password_token"], name: 'index_users_on_reset_password_token', unique: true
93
+ add_index "users", ["email"], name: "index_users_on_email", unique: true
94
+ add_index "users", ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
81
95
 
82
- create_table 'users_roles', id: false, force: :cascade do |t|
83
- t.integer 'user_id'
84
- t.integer 'role_id'
96
+ create_table "users_roles", id: false, force: :cascade do |t|
97
+ t.integer "user_id"
98
+ t.integer "role_id"
85
99
  end
86
100
 
87
- add_index "users_roles", ["user_id", 'role_id'], name: "index_users_roles_on_user_id_and_role_id"
101
+ add_index "users_roles", ["user_id", "role_id"], name: "index_users_roles_on_user_id_and_role_id"
88
102
 
89
103
  end
@@ -99,12 +99,24 @@ Stripe::Customer.find_or_create_by_id(
99
99
  # PlanFeatureSettings #
100
100
  #######################
101
101
 
102
+ # Free
103
+ PaidUp::PlanFeatureSetting.create(
104
+ feature: 'posts',
105
+ plan: free_plan,
106
+ setting: 3
107
+ )
108
+
102
109
  # Ad Free
103
110
  PaidUp::PlanFeatureSetting.create(
104
111
  feature: 'ad_free',
105
112
  plan: no_ads_plan,
106
113
  setting: 1
107
114
  )
115
+ PaidUp::PlanFeatureSetting.create(
116
+ feature: 'posts',
117
+ plan: no_ads_plan,
118
+ setting: 5
119
+ )
108
120
 
109
121
  # Group Leader
110
122
  PaidUp::PlanFeatureSetting.create(
@@ -122,6 +134,11 @@ PaidUp::PlanFeatureSetting.create(
122
134
  plan: group_leader_plan,
123
135
  setting: 10
124
136
  )
137
+ PaidUp::PlanFeatureSetting.create(
138
+ feature: 'posts',
139
+ plan: group_leader_plan,
140
+ setting: 10
141
+ )
125
142
 
126
143
  # Professional
127
144
  PaidUp::PlanFeatureSetting.create(
@@ -139,12 +156,17 @@ PaidUp::PlanFeatureSetting.create(
139
156
  plan: professional_plan,
140
157
  setting: PaidUp::Unlimited.to_i(:db)
141
158
  )
159
+ PaidUp::PlanFeatureSetting.create(
160
+ feature: 'posts',
161
+ plan: professional_plan,
162
+ setting: 25
163
+ )
142
164
 
143
165
  ###############
144
166
  # Users #
145
167
  ###############
146
168
 
147
- FactoryGirl.create(
169
+ free_subscriber = FactoryGirl.create(
148
170
  :user,
149
171
  name: 'Free Subscriber',
150
172
  plan: free_plan
@@ -194,33 +216,84 @@ past_due_subscriber = FactoryGirl.create(
194
216
  FactoryGirl.create(
195
217
  :group,
196
218
  title: 'First Group',
197
- owner: group_leader_subscriber
219
+ owner: group_leader_subscriber,
220
+ active: true
221
+ )
222
+
223
+ FactoryGirl.create(
224
+ :group,
225
+ title: 'Inactive Group',
226
+ owner: group_leader_subscriber,
227
+ active: false
198
228
  )
199
229
 
200
230
  FactoryGirl.create(
201
231
  :group,
202
232
  title: 'Second Group',
203
- owner: professional_subscriber
233
+ owner: professional_subscriber,
234
+ active: true
204
235
  )
205
236
 
206
237
  FactoryGirl.create(
207
238
  :group,
208
239
  title: 'Third Group',
209
- owner: professional_subscriber
240
+ owner: professional_subscriber,
241
+ active: true
210
242
  )
211
243
 
212
244
  5.times do
213
- FactoryGirl.create(:group, owner: disabling_subscriber)
245
+ FactoryGirl.create(:group, owner: disabling_subscriber, active: true)
214
246
  end
215
247
 
216
248
  FactoryGirl.create(
217
249
  :group,
218
250
  title: 'Disabled Group',
219
- owner: disabling_subscriber
251
+ owner: disabling_subscriber,
252
+ active: true
220
253
  )
221
254
 
222
255
  FactoryGirl.create(
223
256
  :group,
224
257
  title: 'Past Due Group',
225
- owner: past_due_subscriber
258
+ owner: past_due_subscriber,
259
+ active: true
260
+ )
261
+
262
+ ###############
263
+ # Posts #
264
+ ###############
265
+
266
+ FactoryGirl.create(
267
+ :post,
268
+ title: 'First Post',
269
+ user: free_subscriber,
270
+ active: true
271
+ )
272
+
273
+ FactoryGirl.create(
274
+ :post,
275
+ title: 'Active Post',
276
+ user: free_subscriber,
277
+ active: true
278
+ )
279
+
280
+ FactoryGirl.create(
281
+ :post,
282
+ title: 'Inactive Post',
283
+ user: free_subscriber,
284
+ active: false
285
+ )
286
+
287
+ FactoryGirl.create(
288
+ :post,
289
+ title: 'Still Enabled Post',
290
+ user: free_subscriber,
291
+ active: true
292
+ )
293
+
294
+ FactoryGirl.create(
295
+ :post,
296
+ title: 'No Longer Enabled Post',
297
+ user: free_subscriber,
298
+ active: true
226
299
  )
Binary file
@@ -0,0 +1,7 @@
1
+ FactoryGirl.define do
2
+ factory :post do
3
+ title 'Test Title'
4
+ user { User.order('RANDOM()').first }
5
+ active true
6
+ end
7
+ end
@@ -31,7 +31,8 @@ describe PaidUp::Feature do
31
31
  eq(
32
32
  ad_free: ad_free_feature,
33
33
  groups: groups_feature,
34
- doodads: doodads_feature
34
+ doodads: doodads_feature,
35
+ posts: posts_feature
35
36
  )
36
37
  )
37
38
  end
@@ -39,7 +40,14 @@ describe PaidUp::Feature do
39
40
 
40
41
  context '.all' do
41
42
  subject { PaidUp::Feature.all }
42
- it { should eq [ad_free_feature, groups_feature, doodads_feature] }
43
+ it do
44
+ should eq [
45
+ ad_free_feature,
46
+ groups_feature,
47
+ doodads_feature,
48
+ posts_feature
49
+ ]
50
+ end
43
51
  end
44
52
 
45
53
  context '.find_all' do
@@ -0,0 +1,33 @@
1
+ require 'rails_helper'
2
+ require 'cancan/matchers'
3
+
4
+ describe 'Scopes' do
5
+ include_context 'loaded site'
6
+
7
+ describe 'paid_for#owners_records' do
8
+ subject { first_post.owners_records }
9
+ it { should include active_post }
10
+ it { should_not include inactive_post }
11
+ end
12
+
13
+ describe 'paid_for#enabled' do
14
+ describe 'when it is within the limit' do
15
+ subject { still_enabled_post.enabled }
16
+ it { should be true }
17
+ end
18
+ describe 'when it is NOT within the limit' do
19
+ subject { no_longer_enabled_post.enabled }
20
+ it { should be false }
21
+ end
22
+ end
23
+
24
+ describe 'user#table_rows' do
25
+ subject { free_subscriber.table_rows('posts') }
26
+ it { should eq 4 }
27
+ end
28
+
29
+ describe 'user#rolify_rows' do
30
+ subject { group_leader_subscriber.rolify_rows('groups') }
31
+ it { should eq 1 }
32
+ end
33
+ end
@@ -206,7 +206,8 @@ describe User do
206
206
  3.times do
207
207
  FactoryGirl.create(
208
208
  :group,
209
- owner: blank_subscriber
209
+ owner: blank_subscriber,
210
+ active: true
210
211
  )
211
212
  end
212
213
  end
@@ -1,5 +1,6 @@
1
1
  shared_context 'features' do
2
2
  let!(:ad_free_feature) { PaidUp::Feature.find_by_slug('ad_free') }
3
3
  let!(:groups_feature) { PaidUp::Feature.find_by_slug('groups') }
4
- let!(:doodads_feature) { PaidUp::Feature.find_by_slug('doodads') }\
4
+ let!(:doodads_feature) { PaidUp::Feature.find_by_slug('doodads') }
5
+ let!(:posts_feature) { PaidUp::Feature.find_by_slug('posts') }
5
6
  end
@@ -4,4 +4,5 @@ shared_context 'loaded site' do
4
4
  include_context 'stripe'
5
5
  include_context 'users'
6
6
  include_context 'groups'
7
+ include_context 'posts'
7
8
  end
@@ -0,0 +1,7 @@
1
+ shared_context 'posts' do
2
+ let(:first_post) { Post.find_by_title('First Post') }
3
+ let(:active_post) { Post.find_by_title('Active Post') }
4
+ let(:inactive_post) { Post.find_by_title('Inactive Post') }
5
+ let(:still_enabled_post) { Post.find_by_title('Still Enabled Post') }
6
+ let(:no_longer_enabled_post) { Post.find_by_title('No Longer Enabled Post') }
7
+ end
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.10.4
4
+ version: 0.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Karen Lundgren
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-04-06 00:00:00.000000000 Z
11
+ date: 2017-02-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -460,6 +460,7 @@ files:
460
460
  - spec/dummy/app/models/ability.rb
461
461
  - spec/dummy/app/models/doodad.rb
462
462
  - spec/dummy/app/models/group.rb
463
+ - spec/dummy/app/models/post.rb
463
464
  - spec/dummy/app/models/role.rb
464
465
  - spec/dummy/app/models/user.rb
465
466
  - spec/dummy/app/views/layouts/application.html.haml
@@ -505,6 +506,8 @@ files:
505
506
  - spec/dummy/db/migrate/20160207184113_add_stripe_id_column_to_users.paid_up.rb
506
507
  - spec/dummy/db/migrate/20160207184114_create_paid_up_plan_feature_settings_table.paid_up.rb
507
508
  - spec/dummy/db/migrate/20160210165341_add_coupon_code_column_to_users.paid_up.rb
509
+ - spec/dummy/db/migrate/20170219225950_create_posts_table.rb
510
+ - spec/dummy/db/migrate/20170220001913_add_active_column_to_groups.rb
508
511
  - spec/dummy/db/schema.rb
509
512
  - spec/dummy/db/seeds.rb
510
513
  - spec/dummy/db/test.sqlite3
@@ -526,11 +529,13 @@ files:
526
529
  - spec/factories/group.rb
527
530
  - spec/factories/plan.rb
528
531
  - spec/factories/plan_feature_setting.rb
532
+ - spec/factories/post.rb
529
533
  - spec/factories/user.rb
530
534
  - spec/models/group_spec.rb
531
535
  - spec/models/paid_up/feature_spec.rb
532
536
  - spec/models/paid_up/plan_feature_setting_spec.rb
533
537
  - spec/models/paid_up/plan_spec.rb
538
+ - spec/models/scope_spec.rb
534
539
  - spec/models/user_spec.rb
535
540
  - spec/paid_up_spec.rb
536
541
  - spec/rails_helper.rb
@@ -543,6 +548,7 @@ files:
543
548
  - spec/support/loaded_site/groups.rb
544
549
  - spec/support/loaded_site/loaded_site.rb
545
550
  - spec/support/loaded_site/plans.rb
551
+ - spec/support/loaded_site/posts.rb
546
552
  - spec/support/loaded_site/users.rb
547
553
  - spec/support/stripe.rb
548
554
  - spec/views/paid_up/plans_spec.rb