saucy 0.14.5 → 0.15.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.
- data/.gitignore +2 -0
- data/CHANGELOG.md +7 -0
- data/Gemfile.lock +4 -4
- data/app/models/signup.rb +22 -3
- data/lib/saucy/version.rb +1 -1
- data/spec/mailers/{invitiation_mailer_spec.rb → invitation_mailer_spec.rb} +0 -0
- data/spec/models/signup_spec.rb +42 -1
- metadata +79 -80
- data/.bundle/config +0 -2
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,8 +1,15 @@
|
|
1
|
+
0.15.0
|
2
|
+
|
3
|
+
* Signup accepts a "quick" flag that will cause existing users to sign in instead of creating a new account.
|
4
|
+
|
1
5
|
0.14.5
|
2
6
|
|
3
7
|
* Upgrade to clearance 0.14.0. (Motivated by getting rid of some redundant flashes)
|
4
8
|
* Remove Account and Project creation flashes
|
5
9
|
|
10
|
+
With this release you will also want to regenerate the saucy features (`rails g saucy:features`), or look at the commit diffs and
|
11
|
+
introduce the above two changes yourself as they have been changed to account for certain flash messages no longer being present.
|
12
|
+
|
6
13
|
0.14.3
|
7
14
|
|
8
15
|
* Redirect to upgrade page if beyond limit
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
saucy (0.
|
4
|
+
saucy (0.15.0)
|
5
5
|
airbrake (~> 3.0.4)
|
6
6
|
braintree (>= 2.6.2)
|
7
7
|
clearance (~> 0.14.0)
|
@@ -171,13 +171,13 @@ GEM
|
|
171
171
|
rack
|
172
172
|
shoulda-matchers (1.0.0)
|
173
173
|
sinatra (1.3.2)
|
174
|
-
rack (
|
174
|
+
rack (~> 1.3, >= 1.3.6)
|
175
175
|
rack-protection (~> 1.2)
|
176
|
-
tilt (
|
176
|
+
tilt (~> 1.3, >= 1.3.3)
|
177
177
|
sprockets (2.0.3)
|
178
178
|
hike (~> 1.2)
|
179
179
|
rack (~> 1.0)
|
180
|
-
tilt (
|
180
|
+
tilt (~> 1.1, != 1.3.0)
|
181
181
|
sqlite3 (1.3.4)
|
182
182
|
term-ansicolor (1.0.7)
|
183
183
|
thin (1.2.11)
|
data/app/models/signup.rb
CHANGED
@@ -29,7 +29,8 @@ class Signup
|
|
29
29
|
|
30
30
|
attr_accessor :billing_email, :password, :cardholder_name, :email,
|
31
31
|
:card_number, :expiration_month, :expiration_year, :plan, :verification_code, :coupon,
|
32
|
-
:street_address, :extended_address, :locality, :region, :postal_code, :country_name
|
32
|
+
:street_address, :extended_address, :locality, :region, :postal_code, :country_name,
|
33
|
+
:quick
|
33
34
|
|
34
35
|
def initialize(attributes = {})
|
35
36
|
if attributes
|
@@ -69,7 +70,7 @@ class Signup
|
|
69
70
|
end
|
70
71
|
|
71
72
|
def account
|
72
|
-
@account ||= Account.new
|
73
|
+
@account ||= existing_account_in_quick_mode || Account.new
|
73
74
|
end
|
74
75
|
|
75
76
|
def user
|
@@ -161,12 +162,30 @@ class Signup
|
|
161
162
|
end
|
162
163
|
end
|
163
164
|
|
165
|
+
def existing_account_in_quick_mode
|
166
|
+
if quick?
|
167
|
+
existing_account
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
def quick?
|
172
|
+
quick
|
173
|
+
end
|
174
|
+
|
175
|
+
def existing_account
|
176
|
+
if existing_user
|
177
|
+
existing_user.accounts.first
|
178
|
+
end
|
179
|
+
end
|
180
|
+
|
164
181
|
def save!
|
165
182
|
account.coupon = coupon
|
166
183
|
Account.transaction do
|
167
184
|
account.save!
|
168
185
|
user.save!
|
169
|
-
|
186
|
+
unless existing_account_in_quick_mode
|
187
|
+
membership.save!
|
188
|
+
end
|
170
189
|
end
|
171
190
|
end
|
172
191
|
end
|
data/lib/saucy/version.rb
CHANGED
File without changes
|
data/spec/models/signup_spec.rb
CHANGED
@@ -152,7 +152,11 @@ describe Signup, "valid with a signed in user" do
|
|
152
152
|
it_should_behave_like "valid signup"
|
153
153
|
let!(:user) { Factory(:user) }
|
154
154
|
subject { Factory.build(:signup, :user => user, :password => '') }
|
155
|
-
|
155
|
+
|
156
|
+
before do
|
157
|
+
Factory(:membership, :user => user)
|
158
|
+
@result = subject.save
|
159
|
+
end
|
156
160
|
|
157
161
|
it "doesn't create a user" do
|
158
162
|
User.count.should == 1
|
@@ -200,3 +204,40 @@ describe Signup, "with coupon" do
|
|
200
204
|
subject.account.reload.coupon.should == coupon
|
201
205
|
end
|
202
206
|
end
|
207
|
+
|
208
|
+
describe Signup, "in quick mode with existing email" do
|
209
|
+
it_should_behave_like "valid signup"
|
210
|
+
let(:email) { "user@example.com" }
|
211
|
+
let(:password) { "test" }
|
212
|
+
let!(:account) { Factory(:account) }
|
213
|
+
let!(:user) { Factory(:user, :email => email, :password => password) }
|
214
|
+
subject { Factory.build(:signup, :email => email, :password => password, :quick => true) }
|
215
|
+
|
216
|
+
before do
|
217
|
+
Factory(:membership, :user => user, :account => account)
|
218
|
+
@result = subject.save
|
219
|
+
end
|
220
|
+
|
221
|
+
it "doesn't create a user" do
|
222
|
+
User.count.should == 1
|
223
|
+
end
|
224
|
+
|
225
|
+
it "uses the user's existing account" do
|
226
|
+
user.reload.accounts.should == [account]
|
227
|
+
end
|
228
|
+
end
|
229
|
+
|
230
|
+
describe Signup, "in quick mode with unknown email" do
|
231
|
+
it_should_behave_like "valid signup"
|
232
|
+
let(:email) { "user@example.com" }
|
233
|
+
subject { Factory.build(:signup, :email => email, :quick => true) }
|
234
|
+
before { @result = subject.save }
|
235
|
+
|
236
|
+
it "saves the user" do
|
237
|
+
subject.user.should be_persisted
|
238
|
+
end
|
239
|
+
|
240
|
+
it "assigns the user to a new account" do
|
241
|
+
subject.user.reload.accounts.should include(subject.account)
|
242
|
+
end
|
243
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: saucy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 35
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 15
|
9
|
+
- 0
|
10
|
+
version: 0.15.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- thoughtbot, inc.
|
@@ -20,12 +20,10 @@ autorequire:
|
|
20
20
|
bindir: bin
|
21
21
|
cert_chain: []
|
22
22
|
|
23
|
-
date: 2012-01-
|
23
|
+
date: 2012-01-28 00:00:00 Z
|
24
24
|
dependencies:
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
|
-
|
27
|
-
prerelease: false
|
28
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
26
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
29
27
|
none: false
|
30
28
|
requirements:
|
31
29
|
- - ~>
|
@@ -36,12 +34,12 @@ dependencies:
|
|
36
34
|
- 14
|
37
35
|
- 0
|
38
36
|
version: 0.14.0
|
37
|
+
requirement: *id001
|
39
38
|
type: :runtime
|
40
|
-
version_requirements: *id001
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: formtastic
|
43
39
|
prerelease: false
|
44
|
-
|
40
|
+
name: clearance
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
45
43
|
none: false
|
46
44
|
requirements:
|
47
45
|
- - ~>
|
@@ -52,12 +50,12 @@ dependencies:
|
|
52
50
|
- 2
|
53
51
|
- 4
|
54
52
|
version: 1.2.4
|
53
|
+
requirement: *id002
|
55
54
|
type: :runtime
|
56
|
-
version_requirements: *id002
|
57
|
-
- !ruby/object:Gem::Dependency
|
58
|
-
name: railties
|
59
55
|
prerelease: false
|
60
|
-
|
56
|
+
name: formtastic
|
57
|
+
- !ruby/object:Gem::Dependency
|
58
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
61
59
|
none: false
|
62
60
|
requirements:
|
63
61
|
- - ">="
|
@@ -68,12 +66,12 @@ dependencies:
|
|
68
66
|
- 0
|
69
67
|
- 3
|
70
68
|
version: 3.0.3
|
69
|
+
requirement: *id003
|
71
70
|
type: :runtime
|
72
|
-
version_requirements: *id003
|
73
|
-
- !ruby/object:Gem::Dependency
|
74
|
-
name: braintree
|
75
71
|
prerelease: false
|
76
|
-
|
72
|
+
name: railties
|
73
|
+
- !ruby/object:Gem::Dependency
|
74
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
77
75
|
none: false
|
78
76
|
requirements:
|
79
77
|
- - ">="
|
@@ -84,12 +82,12 @@ dependencies:
|
|
84
82
|
- 6
|
85
83
|
- 2
|
86
84
|
version: 2.6.2
|
85
|
+
requirement: *id004
|
87
86
|
type: :runtime
|
88
|
-
version_requirements: *id004
|
89
|
-
- !ruby/object:Gem::Dependency
|
90
|
-
name: sham_rack
|
91
87
|
prerelease: false
|
92
|
-
|
88
|
+
name: braintree
|
89
|
+
- !ruby/object:Gem::Dependency
|
90
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
93
91
|
none: false
|
94
92
|
requirements:
|
95
93
|
- - "="
|
@@ -100,12 +98,12 @@ dependencies:
|
|
100
98
|
- 3
|
101
99
|
- 3
|
102
100
|
version: 1.3.3
|
101
|
+
requirement: *id005
|
103
102
|
type: :runtime
|
104
|
-
version_requirements: *id005
|
105
|
-
- !ruby/object:Gem::Dependency
|
106
|
-
name: sinatra
|
107
103
|
prerelease: false
|
108
|
-
|
104
|
+
name: sham_rack
|
105
|
+
- !ruby/object:Gem::Dependency
|
106
|
+
version_requirements: &id006 !ruby/object:Gem::Requirement
|
109
107
|
none: false
|
110
108
|
requirements:
|
111
109
|
- - ">="
|
@@ -116,12 +114,12 @@ dependencies:
|
|
116
114
|
- 1
|
117
115
|
- 2
|
118
116
|
version: 1.1.2
|
117
|
+
requirement: *id006
|
119
118
|
type: :runtime
|
120
|
-
version_requirements: *id006
|
121
|
-
- !ruby/object:Gem::Dependency
|
122
|
-
name: airbrake
|
123
119
|
prerelease: false
|
124
|
-
|
120
|
+
name: sinatra
|
121
|
+
- !ruby/object:Gem::Dependency
|
122
|
+
version_requirements: &id007 !ruby/object:Gem::Requirement
|
125
123
|
none: false
|
126
124
|
requirements:
|
127
125
|
- - ~>
|
@@ -132,12 +130,12 @@ dependencies:
|
|
132
130
|
- 0
|
133
131
|
- 4
|
134
132
|
version: 3.0.4
|
133
|
+
requirement: *id007
|
135
134
|
type: :runtime
|
136
|
-
version_requirements: *id007
|
137
|
-
- !ruby/object:Gem::Dependency
|
138
|
-
name: aruba
|
139
135
|
prerelease: false
|
140
|
-
|
136
|
+
name: airbrake
|
137
|
+
- !ruby/object:Gem::Dependency
|
138
|
+
version_requirements: &id008 !ruby/object:Gem::Requirement
|
141
139
|
none: false
|
142
140
|
requirements:
|
143
141
|
- - ~>
|
@@ -147,12 +145,12 @@ dependencies:
|
|
147
145
|
- 0
|
148
146
|
- 4
|
149
147
|
version: "0.4"
|
148
|
+
requirement: *id008
|
150
149
|
type: :development
|
151
|
-
version_requirements: *id008
|
152
|
-
- !ruby/object:Gem::Dependency
|
153
|
-
name: shoulda-matchers
|
154
150
|
prerelease: false
|
155
|
-
|
151
|
+
name: aruba
|
152
|
+
- !ruby/object:Gem::Dependency
|
153
|
+
version_requirements: &id009 !ruby/object:Gem::Requirement
|
156
154
|
none: false
|
157
155
|
requirements:
|
158
156
|
- - ~>
|
@@ -163,12 +161,12 @@ dependencies:
|
|
163
161
|
- 0
|
164
162
|
- 0
|
165
163
|
version: 1.0.0
|
164
|
+
requirement: *id009
|
166
165
|
type: :development
|
167
|
-
version_requirements: *id009
|
168
|
-
- !ruby/object:Gem::Dependency
|
169
|
-
name: bourne
|
170
166
|
prerelease: false
|
171
|
-
|
167
|
+
name: shoulda-matchers
|
168
|
+
- !ruby/object:Gem::Dependency
|
169
|
+
version_requirements: &id010 !ruby/object:Gem::Requirement
|
172
170
|
none: false
|
173
171
|
requirements:
|
174
172
|
- - ">="
|
@@ -177,12 +175,12 @@ dependencies:
|
|
177
175
|
segments:
|
178
176
|
- 0
|
179
177
|
version: "0"
|
178
|
+
requirement: *id010
|
180
179
|
type: :development
|
181
|
-
version_requirements: *id010
|
182
|
-
- !ruby/object:Gem::Dependency
|
183
|
-
name: sqlite3
|
184
180
|
prerelease: false
|
185
|
-
|
181
|
+
name: bourne
|
182
|
+
- !ruby/object:Gem::Dependency
|
183
|
+
version_requirements: &id011 !ruby/object:Gem::Requirement
|
186
184
|
none: false
|
187
185
|
requirements:
|
188
186
|
- - ">="
|
@@ -191,12 +189,12 @@ dependencies:
|
|
191
189
|
segments:
|
192
190
|
- 0
|
193
191
|
version: "0"
|
192
|
+
requirement: *id011
|
194
193
|
type: :development
|
195
|
-
version_requirements: *id011
|
196
|
-
- !ruby/object:Gem::Dependency
|
197
|
-
name: factory_girl
|
198
194
|
prerelease: false
|
199
|
-
|
195
|
+
name: sqlite3
|
196
|
+
- !ruby/object:Gem::Dependency
|
197
|
+
version_requirements: &id012 !ruby/object:Gem::Requirement
|
200
198
|
none: false
|
201
199
|
requirements:
|
202
200
|
- - ">="
|
@@ -205,12 +203,12 @@ dependencies:
|
|
205
203
|
segments:
|
206
204
|
- 0
|
207
205
|
version: "0"
|
206
|
+
requirement: *id012
|
208
207
|
type: :development
|
209
|
-
version_requirements: *id012
|
210
|
-
- !ruby/object:Gem::Dependency
|
211
|
-
name: timecop
|
212
208
|
prerelease: false
|
213
|
-
|
209
|
+
name: factory_girl
|
210
|
+
- !ruby/object:Gem::Dependency
|
211
|
+
version_requirements: &id013 !ruby/object:Gem::Requirement
|
214
212
|
none: false
|
215
213
|
requirements:
|
216
214
|
- - ">="
|
@@ -219,12 +217,12 @@ dependencies:
|
|
219
217
|
segments:
|
220
218
|
- 0
|
221
219
|
version: "0"
|
220
|
+
requirement: *id013
|
222
221
|
type: :development
|
223
|
-
version_requirements: *id013
|
224
|
-
- !ruby/object:Gem::Dependency
|
225
|
-
name: rake
|
226
222
|
prerelease: false
|
227
|
-
|
223
|
+
name: timecop
|
224
|
+
- !ruby/object:Gem::Dependency
|
225
|
+
version_requirements: &id014 !ruby/object:Gem::Requirement
|
228
226
|
none: false
|
229
227
|
requirements:
|
230
228
|
- - ">="
|
@@ -233,12 +231,12 @@ dependencies:
|
|
233
231
|
segments:
|
234
232
|
- 0
|
235
233
|
version: "0"
|
234
|
+
requirement: *id014
|
236
235
|
type: :development
|
237
|
-
version_requirements: *id014
|
238
|
-
- !ruby/object:Gem::Dependency
|
239
|
-
name: cucumber
|
240
236
|
prerelease: false
|
241
|
-
|
237
|
+
name: rake
|
238
|
+
- !ruby/object:Gem::Dependency
|
239
|
+
version_requirements: &id015 !ruby/object:Gem::Requirement
|
242
240
|
none: false
|
243
241
|
requirements:
|
244
242
|
- - ~>
|
@@ -249,12 +247,12 @@ dependencies:
|
|
249
247
|
- 0
|
250
248
|
- 6
|
251
249
|
version: 1.0.6
|
250
|
+
requirement: *id015
|
252
251
|
type: :development
|
253
|
-
version_requirements: *id015
|
254
|
-
- !ruby/object:Gem::Dependency
|
255
|
-
name: rspec-rails
|
256
252
|
prerelease: false
|
257
|
-
|
253
|
+
name: cucumber
|
254
|
+
- !ruby/object:Gem::Dependency
|
255
|
+
version_requirements: &id016 !ruby/object:Gem::Requirement
|
258
256
|
none: false
|
259
257
|
requirements:
|
260
258
|
- - ">="
|
@@ -263,12 +261,12 @@ dependencies:
|
|
263
261
|
segments:
|
264
262
|
- 0
|
265
263
|
version: "0"
|
264
|
+
requirement: *id016
|
266
265
|
type: :development
|
267
|
-
version_requirements: *id016
|
268
|
-
- !ruby/object:Gem::Dependency
|
269
|
-
name: rails
|
270
266
|
prerelease: false
|
271
|
-
|
267
|
+
name: rspec-rails
|
268
|
+
- !ruby/object:Gem::Dependency
|
269
|
+
version_requirements: &id017 !ruby/object:Gem::Requirement
|
272
270
|
none: false
|
273
271
|
requirements:
|
274
272
|
- - ">="
|
@@ -279,12 +277,12 @@ dependencies:
|
|
279
277
|
- 0
|
280
278
|
- 3
|
281
279
|
version: 3.0.3
|
280
|
+
requirement: *id017
|
282
281
|
type: :development
|
283
|
-
version_requirements: *id017
|
284
|
-
- !ruby/object:Gem::Dependency
|
285
|
-
name: thin
|
286
282
|
prerelease: false
|
287
|
-
|
283
|
+
name: rails
|
284
|
+
- !ruby/object:Gem::Dependency
|
285
|
+
version_requirements: &id018 !ruby/object:Gem::Requirement
|
288
286
|
none: false
|
289
287
|
requirements:
|
290
288
|
- - ">="
|
@@ -293,8 +291,10 @@ dependencies:
|
|
293
291
|
segments:
|
294
292
|
- 0
|
295
293
|
version: "0"
|
294
|
+
requirement: *id018
|
296
295
|
type: :development
|
297
|
-
|
296
|
+
prerelease: false
|
297
|
+
name: thin
|
298
298
|
description: Clearance-based Rails engine for Software as a Service (Saas) that provides account and project management
|
299
299
|
email: support@thoughtbot.com
|
300
300
|
executables: []
|
@@ -304,7 +304,6 @@ extensions: []
|
|
304
304
|
extra_rdoc_files: []
|
305
305
|
|
306
306
|
files:
|
307
|
-
- .bundle/config
|
308
307
|
- .gitignore
|
309
308
|
- .rspec
|
310
309
|
- CHANGELOG.md
|
@@ -463,7 +462,7 @@ files:
|
|
463
462
|
- spec/environment.rb
|
464
463
|
- spec/layouts_spec.rb
|
465
464
|
- spec/mailers/billing_mailer_spec.rb
|
466
|
-
- spec/mailers/
|
465
|
+
- spec/mailers/invitation_mailer_spec.rb
|
467
466
|
- spec/models/account_spec.rb
|
468
467
|
- spec/models/canceled_account_spec.rb
|
469
468
|
- spec/models/coupon_spec.rb
|
@@ -546,7 +545,7 @@ test_files:
|
|
546
545
|
- spec/environment.rb
|
547
546
|
- spec/layouts_spec.rb
|
548
547
|
- spec/mailers/billing_mailer_spec.rb
|
549
|
-
- spec/mailers/
|
548
|
+
- spec/mailers/invitation_mailer_spec.rb
|
550
549
|
- spec/models/account_spec.rb
|
551
550
|
- spec/models/canceled_account_spec.rb
|
552
551
|
- spec/models/coupon_spec.rb
|
data/.bundle/config
DELETED