saucy 0.14.3 → 0.14.5
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.
- data/CHANGELOG.md +5 -0
- data/Gemfile +2 -1
- data/Gemfile.lock +60 -58
- data/app/controllers/accounts_controller.rb +0 -1
- data/app/controllers/admin/trial_extensions_controller.rb +13 -0
- data/app/views/admin/accounts/show.html.erb +13 -0
- data/config/routes.rb +1 -0
- data/features/run_features.feature +3 -2
- data/lib/generators/saucy/features/templates/features/manage_billing.feature +12 -7
- data/lib/generators/saucy/features/templates/features/manage_plan.feature +12 -6
- data/lib/generators/saucy/features/templates/features/new_account.feature +4 -9
- data/lib/generators/saucy/features/templates/features/sign_up.feature +1 -1
- data/lib/generators/saucy/features/templates/features/sign_up_coupon.feature +1 -2
- data/lib/generators/saucy/features/templates/features/sign_up_paid.feature +1 -1
- data/lib/generators/saucy/features/templates/features/trial_plans.feature +1 -1
- data/lib/saucy/account.rb +8 -0
- data/lib/saucy/projects_controller.rb +2 -5
- data/lib/saucy/subscription.rb +5 -1
- data/lib/saucy/version.rb +1 -1
- data/saucy.gemspec +2 -2
- data/spec/controllers/accounts_controller_spec.rb +9 -9
- data/spec/controllers/admin/trial_extensions_controller_spec.rb +67 -0
- data/spec/controllers/invitations_controller_spec.rb +13 -7
- data/spec/controllers/memberships_controller_spec.rb +10 -7
- data/spec/controllers/profiles_controller_spec.rb +8 -2
- data/spec/controllers/projects_controller_spec.rb +20 -16
- data/spec/environment.rb +3 -3
- data/spec/models/account_spec.rb +29 -0
- data/spec/models/subscription_spec.rb +33 -11
- data/spec/support/clearance.rb +1 -0
- data/spec/views/accounts/show.html.erb_spec.rb +41 -0
- metadata +59 -14
- data/spec/support/clearance_matchers.rb +0 -55
@@ -0,0 +1 @@
|
|
1
|
+
require 'clearance/testing'
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "admin/accounts/show.html.erb" do
|
4
|
+
let(:trial_plan) { Factory.stub(:plan, :trial => true) }
|
5
|
+
let(:account) { Factory(:account) }
|
6
|
+
let(:user) { Factory.stub(:user) }
|
7
|
+
let(:form_destination) { admin_account_trial_extensions_path(account.keyword) }
|
8
|
+
|
9
|
+
before { view.stubs(:current_user => user) }
|
10
|
+
|
11
|
+
def render_account
|
12
|
+
@account = account
|
13
|
+
render
|
14
|
+
end
|
15
|
+
|
16
|
+
context "with a trial account" do
|
17
|
+
before do
|
18
|
+
account.plan = trial_plan
|
19
|
+
render_account
|
20
|
+
end
|
21
|
+
|
22
|
+
it "renders trial status" do
|
23
|
+
rendered.should include("This is a trial account")
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'renders a form to extend the trial' do
|
27
|
+
rendered.should include(%{action="#{form_destination}"})
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
context "without a trial account" do
|
32
|
+
before do
|
33
|
+
render_account
|
34
|
+
end
|
35
|
+
|
36
|
+
it "does not render trial status" do
|
37
|
+
rendered.should_not include("This is a trial account")
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: saucy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 45
|
5
|
+
prerelease:
|
5
6
|
segments:
|
6
7
|
- 0
|
7
8
|
- 14
|
8
|
-
-
|
9
|
-
version: 0.14.
|
9
|
+
- 5
|
10
|
+
version: 0.14.5
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- thoughtbot, inc.
|
@@ -19,43 +20,49 @@ autorequire:
|
|
19
20
|
bindir: bin
|
20
21
|
cert_chain: []
|
21
22
|
|
22
|
-
date:
|
23
|
-
default_executable:
|
23
|
+
date: 2012-01-13 00:00:00 Z
|
24
24
|
dependencies:
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: clearance
|
27
27
|
prerelease: false
|
28
28
|
requirement: &id001 !ruby/object:Gem::Requirement
|
29
|
+
none: false
|
29
30
|
requirements:
|
30
31
|
- - ~>
|
31
32
|
- !ruby/object:Gem::Version
|
33
|
+
hash: 39
|
32
34
|
segments:
|
33
35
|
- 0
|
34
|
-
-
|
35
|
-
-
|
36
|
-
version: 0.
|
36
|
+
- 14
|
37
|
+
- 0
|
38
|
+
version: 0.14.0
|
37
39
|
type: :runtime
|
38
40
|
version_requirements: *id001
|
39
41
|
- !ruby/object:Gem::Dependency
|
40
42
|
name: formtastic
|
41
43
|
prerelease: false
|
42
44
|
requirement: &id002 !ruby/object:Gem::Requirement
|
45
|
+
none: false
|
43
46
|
requirements:
|
44
|
-
- -
|
47
|
+
- - ~>
|
45
48
|
- !ruby/object:Gem::Version
|
49
|
+
hash: 23
|
46
50
|
segments:
|
47
51
|
- 1
|
48
52
|
- 2
|
49
|
-
|
53
|
+
- 4
|
54
|
+
version: 1.2.4
|
50
55
|
type: :runtime
|
51
56
|
version_requirements: *id002
|
52
57
|
- !ruby/object:Gem::Dependency
|
53
58
|
name: railties
|
54
59
|
prerelease: false
|
55
60
|
requirement: &id003 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
56
62
|
requirements:
|
57
63
|
- - ">="
|
58
64
|
- !ruby/object:Gem::Version
|
65
|
+
hash: 1
|
59
66
|
segments:
|
60
67
|
- 3
|
61
68
|
- 0
|
@@ -67,9 +74,11 @@ dependencies:
|
|
67
74
|
name: braintree
|
68
75
|
prerelease: false
|
69
76
|
requirement: &id004 !ruby/object:Gem::Requirement
|
77
|
+
none: false
|
70
78
|
requirements:
|
71
79
|
- - ">="
|
72
80
|
- !ruby/object:Gem::Version
|
81
|
+
hash: 19
|
73
82
|
segments:
|
74
83
|
- 2
|
75
84
|
- 6
|
@@ -81,9 +90,11 @@ dependencies:
|
|
81
90
|
name: sham_rack
|
82
91
|
prerelease: false
|
83
92
|
requirement: &id005 !ruby/object:Gem::Requirement
|
93
|
+
none: false
|
84
94
|
requirements:
|
85
95
|
- - "="
|
86
96
|
- !ruby/object:Gem::Version
|
97
|
+
hash: 29
|
87
98
|
segments:
|
88
99
|
- 1
|
89
100
|
- 3
|
@@ -95,9 +106,11 @@ dependencies:
|
|
95
106
|
name: sinatra
|
96
107
|
prerelease: false
|
97
108
|
requirement: &id006 !ruby/object:Gem::Requirement
|
109
|
+
none: false
|
98
110
|
requirements:
|
99
111
|
- - ">="
|
100
112
|
- !ruby/object:Gem::Version
|
113
|
+
hash: 23
|
101
114
|
segments:
|
102
115
|
- 1
|
103
116
|
- 1
|
@@ -109,9 +122,11 @@ dependencies:
|
|
109
122
|
name: airbrake
|
110
123
|
prerelease: false
|
111
124
|
requirement: &id007 !ruby/object:Gem::Requirement
|
125
|
+
none: false
|
112
126
|
requirements:
|
113
127
|
- - ~>
|
114
128
|
- !ruby/object:Gem::Version
|
129
|
+
hash: 15
|
115
130
|
segments:
|
116
131
|
- 3
|
117
132
|
- 0
|
@@ -123,9 +138,11 @@ dependencies:
|
|
123
138
|
name: aruba
|
124
139
|
prerelease: false
|
125
140
|
requirement: &id008 !ruby/object:Gem::Requirement
|
141
|
+
none: false
|
126
142
|
requirements:
|
127
143
|
- - ~>
|
128
144
|
- !ruby/object:Gem::Version
|
145
|
+
hash: 3
|
129
146
|
segments:
|
130
147
|
- 0
|
131
148
|
- 4
|
@@ -136,9 +153,11 @@ dependencies:
|
|
136
153
|
name: shoulda-matchers
|
137
154
|
prerelease: false
|
138
155
|
requirement: &id009 !ruby/object:Gem::Requirement
|
156
|
+
none: false
|
139
157
|
requirements:
|
140
158
|
- - ~>
|
141
159
|
- !ruby/object:Gem::Version
|
160
|
+
hash: 23
|
142
161
|
segments:
|
143
162
|
- 1
|
144
163
|
- 0
|
@@ -150,9 +169,11 @@ dependencies:
|
|
150
169
|
name: bourne
|
151
170
|
prerelease: false
|
152
171
|
requirement: &id010 !ruby/object:Gem::Requirement
|
172
|
+
none: false
|
153
173
|
requirements:
|
154
174
|
- - ">="
|
155
175
|
- !ruby/object:Gem::Version
|
176
|
+
hash: 3
|
156
177
|
segments:
|
157
178
|
- 0
|
158
179
|
version: "0"
|
@@ -162,9 +183,11 @@ dependencies:
|
|
162
183
|
name: sqlite3
|
163
184
|
prerelease: false
|
164
185
|
requirement: &id011 !ruby/object:Gem::Requirement
|
186
|
+
none: false
|
165
187
|
requirements:
|
166
188
|
- - ">="
|
167
189
|
- !ruby/object:Gem::Version
|
190
|
+
hash: 3
|
168
191
|
segments:
|
169
192
|
- 0
|
170
193
|
version: "0"
|
@@ -174,9 +197,11 @@ dependencies:
|
|
174
197
|
name: factory_girl
|
175
198
|
prerelease: false
|
176
199
|
requirement: &id012 !ruby/object:Gem::Requirement
|
200
|
+
none: false
|
177
201
|
requirements:
|
178
202
|
- - ">="
|
179
203
|
- !ruby/object:Gem::Version
|
204
|
+
hash: 3
|
180
205
|
segments:
|
181
206
|
- 0
|
182
207
|
version: "0"
|
@@ -186,9 +211,11 @@ dependencies:
|
|
186
211
|
name: timecop
|
187
212
|
prerelease: false
|
188
213
|
requirement: &id013 !ruby/object:Gem::Requirement
|
214
|
+
none: false
|
189
215
|
requirements:
|
190
216
|
- - ">="
|
191
217
|
- !ruby/object:Gem::Version
|
218
|
+
hash: 3
|
192
219
|
segments:
|
193
220
|
- 0
|
194
221
|
version: "0"
|
@@ -198,9 +225,11 @@ dependencies:
|
|
198
225
|
name: rake
|
199
226
|
prerelease: false
|
200
227
|
requirement: &id014 !ruby/object:Gem::Requirement
|
228
|
+
none: false
|
201
229
|
requirements:
|
202
230
|
- - ">="
|
203
231
|
- !ruby/object:Gem::Version
|
232
|
+
hash: 3
|
204
233
|
segments:
|
205
234
|
- 0
|
206
235
|
version: "0"
|
@@ -210,9 +239,11 @@ dependencies:
|
|
210
239
|
name: cucumber
|
211
240
|
prerelease: false
|
212
241
|
requirement: &id015 !ruby/object:Gem::Requirement
|
242
|
+
none: false
|
213
243
|
requirements:
|
214
244
|
- - ~>
|
215
245
|
- !ruby/object:Gem::Version
|
246
|
+
hash: 27
|
216
247
|
segments:
|
217
248
|
- 1
|
218
249
|
- 0
|
@@ -224,9 +255,11 @@ dependencies:
|
|
224
255
|
name: rspec-rails
|
225
256
|
prerelease: false
|
226
257
|
requirement: &id016 !ruby/object:Gem::Requirement
|
258
|
+
none: false
|
227
259
|
requirements:
|
228
260
|
- - ">="
|
229
261
|
- !ruby/object:Gem::Version
|
262
|
+
hash: 3
|
230
263
|
segments:
|
231
264
|
- 0
|
232
265
|
version: "0"
|
@@ -236,9 +269,11 @@ dependencies:
|
|
236
269
|
name: rails
|
237
270
|
prerelease: false
|
238
271
|
requirement: &id017 !ruby/object:Gem::Requirement
|
272
|
+
none: false
|
239
273
|
requirements:
|
240
274
|
- - ">="
|
241
275
|
- !ruby/object:Gem::Version
|
276
|
+
hash: 1
|
242
277
|
segments:
|
243
278
|
- 3
|
244
279
|
- 0
|
@@ -250,9 +285,11 @@ dependencies:
|
|
250
285
|
name: thin
|
251
286
|
prerelease: false
|
252
287
|
requirement: &id018 !ruby/object:Gem::Requirement
|
288
|
+
none: false
|
253
289
|
requirements:
|
254
290
|
- - ">="
|
255
291
|
- !ruby/object:Gem::Version
|
292
|
+
hash: 3
|
256
293
|
segments:
|
257
294
|
- 0
|
258
295
|
version: "0"
|
@@ -278,6 +315,7 @@ files:
|
|
278
315
|
- app/controllers/accounts_controller.rb
|
279
316
|
- app/controllers/admin/accounts_controller.rb
|
280
317
|
- app/controllers/admin/base_controller.rb
|
318
|
+
- app/controllers/admin/trial_extensions_controller.rb
|
281
319
|
- app/controllers/admin/users_controller.rb
|
282
320
|
- app/controllers/billings_controller.rb
|
283
321
|
- app/controllers/invitations_controller.rb
|
@@ -413,6 +451,7 @@ files:
|
|
413
451
|
- spec/controllers/accounts_controller_spec.rb
|
414
452
|
- spec/controllers/admin/accounts_controller_spec.rb
|
415
453
|
- spec/controllers/admin/base_controller_spec.rb
|
454
|
+
- spec/controllers/admin/trial_extensions_controller_spec.rb
|
416
455
|
- spec/controllers/admin/users_controller_spec.rb
|
417
456
|
- spec/controllers/application_controller_spec.rb
|
418
457
|
- spec/controllers/billings_controller_spec.rb
|
@@ -448,10 +487,10 @@ files:
|
|
448
487
|
- spec/support/authentication_helpers.rb
|
449
488
|
- spec/support/authorization_helpers.rb
|
450
489
|
- spec/support/braintree.rb
|
451
|
-
- spec/support/
|
490
|
+
- spec/support/clearance.rb
|
452
491
|
- spec/support/notifications.rb
|
453
492
|
- spec/views/accounts/_account.html.erb_spec.rb
|
454
|
-
|
493
|
+
- spec/views/accounts/show.html.erb_spec.rb
|
455
494
|
homepage: http://github.com/thoughtbot/saucy
|
456
495
|
licenses: []
|
457
496
|
|
@@ -461,23 +500,27 @@ rdoc_options: []
|
|
461
500
|
require_paths:
|
462
501
|
- lib
|
463
502
|
required_ruby_version: !ruby/object:Gem::Requirement
|
503
|
+
none: false
|
464
504
|
requirements:
|
465
505
|
- - ">="
|
466
506
|
- !ruby/object:Gem::Version
|
507
|
+
hash: 3
|
467
508
|
segments:
|
468
509
|
- 0
|
469
510
|
version: "0"
|
470
511
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
512
|
+
none: false
|
471
513
|
requirements:
|
472
514
|
- - ">="
|
473
515
|
- !ruby/object:Gem::Version
|
516
|
+
hash: 3
|
474
517
|
segments:
|
475
518
|
- 0
|
476
519
|
version: "0"
|
477
520
|
requirements: []
|
478
521
|
|
479
522
|
rubyforge_project:
|
480
|
-
rubygems_version: 1.
|
523
|
+
rubygems_version: 1.8.11
|
481
524
|
signing_key:
|
482
525
|
specification_version: 3
|
483
526
|
summary: Clearance-based Rails engine for SaaS
|
@@ -491,6 +534,7 @@ test_files:
|
|
491
534
|
- spec/controllers/accounts_controller_spec.rb
|
492
535
|
- spec/controllers/admin/accounts_controller_spec.rb
|
493
536
|
- spec/controllers/admin/base_controller_spec.rb
|
537
|
+
- spec/controllers/admin/trial_extensions_controller_spec.rb
|
494
538
|
- spec/controllers/admin/users_controller_spec.rb
|
495
539
|
- spec/controllers/application_controller_spec.rb
|
496
540
|
- spec/controllers/billings_controller_spec.rb
|
@@ -526,6 +570,7 @@ test_files:
|
|
526
570
|
- spec/support/authentication_helpers.rb
|
527
571
|
- spec/support/authorization_helpers.rb
|
528
572
|
- spec/support/braintree.rb
|
529
|
-
- spec/support/
|
573
|
+
- spec/support/clearance.rb
|
530
574
|
- spec/support/notifications.rb
|
531
575
|
- spec/views/accounts/_account.html.erb_spec.rb
|
576
|
+
- spec/views/accounts/show.html.erb_spec.rb
|
@@ -1,55 +0,0 @@
|
|
1
|
-
module ClearanceMatchers
|
2
|
-
class DenyAccessMatcher
|
3
|
-
include Shoulda::Matchers::ActionController
|
4
|
-
|
5
|
-
def initialize(context)
|
6
|
-
@context = context
|
7
|
-
end
|
8
|
-
|
9
|
-
def matches?(controller)
|
10
|
-
if @method
|
11
|
-
@context.__send__(@method, *@args)
|
12
|
-
end
|
13
|
-
|
14
|
-
begin
|
15
|
-
if @flash
|
16
|
-
controller.should set_the_flash.to(@flash)
|
17
|
-
else
|
18
|
-
controller.should_not set_the_flash
|
19
|
-
end
|
20
|
-
|
21
|
-
url = controller.__send__(:sign_in_url)
|
22
|
-
controller.should redirect_to(url).in_context(@context)
|
23
|
-
|
24
|
-
true
|
25
|
-
rescue RSpec::Expectations::ExpectationNotMetError => failure
|
26
|
-
@failure_message = failure.message
|
27
|
-
false
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
def flash(flash)
|
32
|
-
@flash = flash
|
33
|
-
self
|
34
|
-
end
|
35
|
-
|
36
|
-
def on(method, *args)
|
37
|
-
@method = method
|
38
|
-
@args = args
|
39
|
-
self
|
40
|
-
end
|
41
|
-
|
42
|
-
def failure_message_for_should
|
43
|
-
@failure_message
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
def deny_access
|
48
|
-
DenyAccessMatcher.new(self)
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
|
53
|
-
RSpec.configure do |config|
|
54
|
-
config.include ClearanceMatchers
|
55
|
-
end
|