susply 0.0.1 → 0.0.2

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 (37) hide show
  1. checksums.yaml +4 -4
  2. data/README.rdoc +1 -0
  3. data/app/controllers/susply/application_controller.rb +1 -1
  4. data/app/controllers/susply/change_plans_controller.rb +32 -0
  5. data/app/controllers/susply/renovations_controller.rb +37 -0
  6. data/app/models/susply/subscription.rb +8 -0
  7. data/app/services/susply/renews_subscription.rb +4 -4
  8. data/config/locales/susply.en.yml +8 -0
  9. data/config/routes.rb +4 -0
  10. data/lib/generators/susply/install_generator.rb +11 -0
  11. data/lib/generators/templates/config/initializers/susply.rb +1 -0
  12. data/lib/susply.rb +6 -0
  13. data/lib/susply/version.rb +1 -1
  14. data/spec/controllers/susply/change_plans_controller_spec.rb +95 -0
  15. data/spec/controllers/susply/renovations_controller_spec.rb +87 -0
  16. data/spec/dummy/app/assets/javascripts/companies.js +2 -0
  17. data/spec/dummy/app/assets/stylesheets/companies.css +4 -0
  18. data/spec/dummy/app/assets/stylesheets/scaffold.css +56 -0
  19. data/spec/dummy/app/controllers/companies_controller.rb +58 -0
  20. data/spec/dummy/app/helpers/companies_helper.rb +2 -0
  21. data/spec/dummy/app/models/company.rb +2 -0
  22. data/spec/dummy/app/views/companies/_form.html.erb +21 -0
  23. data/spec/dummy/app/views/companies/edit.html.erb +6 -0
  24. data/spec/dummy/app/views/companies/index.html.erb +27 -0
  25. data/spec/dummy/app/views/companies/new.html.erb +5 -0
  26. data/spec/dummy/app/views/companies/show.html.erb +9 -0
  27. data/spec/dummy/config/initializers/susply.rb +1 -0
  28. data/spec/dummy/config/locales/susply.en.yml +6 -0
  29. data/spec/dummy/config/routes.rb +2 -2
  30. data/spec/dummy/db/migrate/20150525181508_create_companies.rb +9 -0
  31. data/spec/dummy/log/development.log +300 -0
  32. data/spec/dummy/log/test.log +26916 -0
  33. data/spec/models/susply/subscription_spec.rb +39 -0
  34. data/spec/services/susply/renews_subscription_spec.rb +25 -16
  35. metadata +35 -6
  36. data/spec/dummy/spec/factories/organizations.rb +0 -8
  37. data/spec/dummy/spec/models/organization_spec.rb +0 -4
@@ -2,6 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  module Susply
4
4
  describe Subscription, type: :model do
5
+ let(:time) { Time.zone.now }
5
6
  describe "validations" do
6
7
  it "shoulda validate" do
7
8
  subscription = build(:susply_subscription)
@@ -98,5 +99,43 @@ module Susply
98
99
  expect(subscription.active?).to eq false
99
100
  end
100
101
  end
102
+
103
+ describe "#expired?" do
104
+ it "returns true when current_period_end is less than now" do
105
+ subscription = build(:susply_subscription,
106
+ current_period_end: time - 1.day)
107
+
108
+ expect(subscription).to be_expired
109
+ end
110
+
111
+ it "returns false when current_period_end is greater than now" do
112
+ subscription = build(:susply_subscription,
113
+ current_period_end: time + 1.day)
114
+
115
+ expect(subscription).not_to be_expired
116
+ end
117
+ end
118
+
119
+ describe "allowed_to_renew?" do
120
+ it "returns false when is not active" do
121
+ subscription = build(:susply_subscription, :inactive)
122
+
123
+ expect(subscription).not_to be_allowed_to_renew
124
+ end
125
+
126
+ it "returns false when is active and not expired" do
127
+ subscription = build(:susply_subscription, :active,
128
+ current_period_end: time + 1.day)
129
+
130
+ expect(subscription).not_to be_allowed_to_renew
131
+ end
132
+
133
+ it "returns true when is active and expired" do
134
+ subscription = build(:susply_subscription, :active,
135
+ current_period_end: time - 1.day)
136
+
137
+ expect(subscription).to be_allowed_to_renew
138
+ end
139
+ end
101
140
  end
102
141
  end
@@ -5,16 +5,25 @@ module Susply
5
5
  let(:owner_class) { Susply.subscription_owner_class.constantize }
6
6
  let(:time) {Time.zone.today}
7
7
 
8
- context "when owner does not has an active subscription" do
9
- it "returns nil" do
10
- owner = owner_class.create()
11
- plan = create(:susply_plan)
12
- subscription = create(:susply_subscription, :inactive, owner: owner)
8
+ it "returns nil when owner does not has an active subscription" do
9
+ owner = owner_class.create()
10
+ plan = create(:susply_plan)
11
+ subscription = create(:susply_subscription, :inactive, owner: owner)
13
12
 
14
- s = Susply::RenewsSubscription.call(owner)
13
+ s = Susply::RenewsSubscription.call(owner)
15
14
 
16
- expect(s).to be_nil
17
- end
15
+ expect(s).to be_nil
16
+ end
17
+
18
+ it "returns nil when active subscription is not expired" do
19
+ owner = owner_class.create()
20
+ plan = create(:susply_plan)
21
+ subscription = create(:susply_subscription, :active,
22
+ owner: owner, current_period_end: time + 2.days)
23
+
24
+ s = Susply::RenewsSubscription.call(owner)
25
+
26
+ expect(s).to be_nil
18
27
  end
19
28
 
20
29
  context "when owner has an active subscription" do
@@ -43,9 +52,9 @@ module Susply
43
52
  it "return a subscription with updated attributes" do
44
53
  owner = owner_class.create()
45
54
  subscription = create(:susply_subscription, :active, owner: owner,
46
- current_period_start: time - 5.days)
55
+ current_period_start: time - 5.days)
47
56
  s = Susply::RenewsSubscription.call(owner)
48
-
57
+
49
58
  expect(s.quantity).not_to eq subscription.quantity
50
59
  expect(s.current_period_start).
51
60
  not_to eq subscription.current_period_start
@@ -56,8 +65,8 @@ module Susply
56
65
  it "returns updates by one the subscriptions" do
57
66
  owner = owner_class.create()
58
67
  subscription = create(:susply_subscription, :active, owner: owner,
59
- current_period_start: time - 5.days,
60
- quantity: 5)
68
+ current_period_start: time - 5.days,
69
+ quantity: 5)
61
70
  s = Susply::RenewsSubscription.call(owner)
62
71
 
63
72
  expect(s.quantity).to eq 6
@@ -67,8 +76,8 @@ module Susply
67
76
  owner = owner_class.create()
68
77
  end_time = time + 6.hours
69
78
  subscription = create(:susply_subscription, :active, owner: owner,
70
- current_period_start: time - 5.days,
71
- current_period_end: end_time)
79
+ current_period_start: time - 5.days,
80
+ current_period_end: end_time)
72
81
  s = Susply::RenewsSubscription.call(owner)
73
82
 
74
83
  expect(s.current_period_start).to eq end_time
@@ -79,7 +88,7 @@ module Susply
79
88
  end_time = time + 6.hours
80
89
  plan = create(:susply_plan, interval: 'monthly')
81
90
  subscription = create(:susply_subscription, :active, owner: owner,
82
- plan: plan, current_period_end: end_time)
91
+ plan: plan, current_period_end: end_time)
83
92
  s = Susply::RenewsSubscription.call(owner)
84
93
  expect(s.current_period_end).to eq(end_time + 1.month)
85
94
  end
@@ -89,7 +98,7 @@ module Susply
89
98
  end_time = time + 2.hours
90
99
  plan = create(:susply_plan, interval: 'yearly')
91
100
  subscription = create(:susply_subscription, :active, owner: owner,
92
- plan: plan, current_period_end: end_time)
101
+ plan: plan, current_period_end: end_time)
93
102
  s = Susply::RenewsSubscription.call(owner)
94
103
  expect(s.current_period_end).to eq(end_time + 1.year)
95
104
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: susply
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Wenceslao Paez Chavez
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-24 00:00:00.000000000 Z
11
+ date: 2015-05-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -107,6 +107,8 @@ files:
107
107
  - app/assets/javascripts/susply/application.js
108
108
  - app/assets/stylesheets/susply/application.css
109
109
  - app/controllers/susply/application_controller.rb
110
+ - app/controllers/susply/change_plans_controller.rb
111
+ - app/controllers/susply/renovations_controller.rb
110
112
  - app/helpers/susply/application_helper.rb
111
113
  - app/models/susply/payment.rb
112
114
  - app/models/susply/plan.rb
@@ -122,6 +124,7 @@ files:
122
124
  - app/services/susply/renews_subscription.rb
123
125
  - app/views/layouts/susply/application.html.erb
124
126
  - config/initializers/susply.rb
127
+ - config/locales/susply.en.yml
125
128
  - config/routes.rb
126
129
  - db/migrate/20150513155547_create_susply_plans.rb
127
130
  - db/migrate/20150513161513_add_status_to_plans.rb
@@ -133,13 +136,26 @@ files:
133
136
  - lib/susply/engine.rb
134
137
  - lib/susply/version.rb
135
138
  - lib/tasks/susply_tasks.rake
139
+ - spec/controllers/susply/change_plans_controller_spec.rb
140
+ - spec/controllers/susply/renovations_controller_spec.rb
136
141
  - spec/dummy/README.rdoc
137
142
  - spec/dummy/Rakefile
138
143
  - spec/dummy/app/assets/javascripts/application.js
144
+ - spec/dummy/app/assets/javascripts/companies.js
139
145
  - spec/dummy/app/assets/stylesheets/application.css
146
+ - spec/dummy/app/assets/stylesheets/companies.css
147
+ - spec/dummy/app/assets/stylesheets/scaffold.css
140
148
  - spec/dummy/app/controllers/application_controller.rb
149
+ - spec/dummy/app/controllers/companies_controller.rb
141
150
  - spec/dummy/app/helpers/application_helper.rb
151
+ - spec/dummy/app/helpers/companies_helper.rb
152
+ - spec/dummy/app/models/company.rb
142
153
  - spec/dummy/app/models/organization.rb
154
+ - spec/dummy/app/views/companies/_form.html.erb
155
+ - spec/dummy/app/views/companies/edit.html.erb
156
+ - spec/dummy/app/views/companies/index.html.erb
157
+ - spec/dummy/app/views/companies/new.html.erb
158
+ - spec/dummy/app/views/companies/show.html.erb
143
159
  - spec/dummy/app/views/layouts/application.html.erb
144
160
  - spec/dummy/bin/bundle
145
161
  - spec/dummy/bin/rails
@@ -163,10 +179,12 @@ files:
163
179
  - spec/dummy/config/initializers/susply.rb
164
180
  - spec/dummy/config/initializers/wrap_parameters.rb
165
181
  - spec/dummy/config/locales/en.yml
182
+ - spec/dummy/config/locales/susply.en.yml
166
183
  - spec/dummy/config/routes.rb
167
184
  - spec/dummy/config/secrets.yml
168
185
  - spec/dummy/db/development.sqlite3
169
186
  - spec/dummy/db/migrate/20150513183555_create_organizations.rb
187
+ - spec/dummy/db/migrate/20150525181508_create_companies.rb
170
188
  - spec/dummy/db/production.sqlite3
171
189
  - spec/dummy/db/schema.rb
172
190
  - spec/dummy/db/test.sqlite3
@@ -176,8 +194,6 @@ files:
176
194
  - spec/dummy/public/422.html
177
195
  - spec/dummy/public/500.html
178
196
  - spec/dummy/public/favicon.ico
179
- - spec/dummy/spec/factories/organizations.rb
180
- - spec/dummy/spec/models/organization_spec.rb
181
197
  - spec/factories/susply_payments.rb
182
198
  - spec/factories/susply_plans.rb
183
199
  - spec/factories/susply_subscriptions.rb
@@ -233,13 +249,22 @@ test_files:
233
249
  - spec/factories/susply_payments.rb
234
250
  - spec/factories/susply_subscriptions.rb
235
251
  - spec/dummy/Rakefile
236
- - spec/dummy/spec/factories/organizations.rb
237
- - spec/dummy/spec/models/organization_spec.rb
238
252
  - spec/dummy/app/views/layouts/application.html.erb
253
+ - spec/dummy/app/views/companies/show.html.erb
254
+ - spec/dummy/app/views/companies/new.html.erb
255
+ - spec/dummy/app/views/companies/edit.html.erb
256
+ - spec/dummy/app/views/companies/index.html.erb
257
+ - spec/dummy/app/views/companies/_form.html.erb
239
258
  - spec/dummy/app/assets/javascripts/application.js
259
+ - spec/dummy/app/assets/javascripts/companies.js
260
+ - spec/dummy/app/assets/stylesheets/scaffold.css
261
+ - spec/dummy/app/assets/stylesheets/companies.css
240
262
  - spec/dummy/app/assets/stylesheets/application.css
241
263
  - spec/dummy/app/helpers/application_helper.rb
264
+ - spec/dummy/app/helpers/companies_helper.rb
265
+ - spec/dummy/app/models/company.rb
242
266
  - spec/dummy/app/models/organization.rb
267
+ - spec/dummy/app/controllers/companies_controller.rb
243
268
  - spec/dummy/app/controllers/application_controller.rb
244
269
  - spec/dummy/log/test.log
245
270
  - spec/dummy/log/development.log
@@ -262,12 +287,14 @@ test_files:
262
287
  - spec/dummy/config/application.rb
263
288
  - spec/dummy/config/boot.rb
264
289
  - spec/dummy/config/locales/en.yml
290
+ - spec/dummy/config/locales/susply.en.yml
265
291
  - spec/dummy/config/routes.rb
266
292
  - spec/dummy/bin/setup
267
293
  - spec/dummy/bin/rails
268
294
  - spec/dummy/bin/bundle
269
295
  - spec/dummy/bin/rake
270
296
  - spec/dummy/config.ru
297
+ - spec/dummy/db/migrate/20150525181508_create_companies.rb
271
298
  - spec/dummy/db/migrate/20150513183555_create_organizations.rb
272
299
  - spec/dummy/db/development.sqlite3
273
300
  - spec/dummy/db/schema.rb
@@ -280,3 +307,5 @@ test_files:
280
307
  - spec/models/susply/payment_spec.rb
281
308
  - spec/models/susply/subscription_spec.rb
282
309
  - spec/models/susply/plan_spec.rb
310
+ - spec/controllers/susply/renovations_controller_spec.rb
311
+ - spec/controllers/susply/change_plans_controller_spec.rb
@@ -1,8 +0,0 @@
1
- FactoryGirl.define do
2
- factory :organization do
3
- name "MyString"
4
- subdomain "MyString"
5
- owner_id 1
6
- end
7
-
8
- end
@@ -1,4 +0,0 @@
1
- require 'spec_helper'
2
-
3
- RSpec.describe Organization, type: :model do
4
- end