saasy 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (146) hide show
  1. data/CHANGELOG.md +114 -0
  2. data/Gemfile +26 -0
  3. data/README.md +118 -0
  4. data/Rakefile +38 -0
  5. data/app/controllers/accounts_controller.rb +68 -0
  6. data/app/controllers/billings_controller.rb +25 -0
  7. data/app/controllers/invitations_controller.rb +65 -0
  8. data/app/controllers/memberships_controller.rb +45 -0
  9. data/app/controllers/plans_controller.rb +24 -0
  10. data/app/controllers/profiles_controller.rb +19 -0
  11. data/app/helpers/limits_helper.rb +13 -0
  12. data/app/mailers/billing_mailer.rb +53 -0
  13. data/app/mailers/invitation_mailer.rb +18 -0
  14. data/app/models/invitation.rb +113 -0
  15. data/app/models/limit.rb +49 -0
  16. data/app/models/membership.rb +26 -0
  17. data/app/models/permission.rb +19 -0
  18. data/app/models/signup.rb +163 -0
  19. data/app/views/accounts/_account.html.erb +9 -0
  20. data/app/views/accounts/_blank_slate.html.erb +6 -0
  21. data/app/views/accounts/_projects.html.erb +12 -0
  22. data/app/views/accounts/_subnav.html.erb +10 -0
  23. data/app/views/accounts/edit.html.erb +34 -0
  24. data/app/views/accounts/index.html.erb +9 -0
  25. data/app/views/accounts/new.html.erb +36 -0
  26. data/app/views/billing_mailer/completed_trial.text.erb +13 -0
  27. data/app/views/billing_mailer/expiring_trial.text.erb +15 -0
  28. data/app/views/billing_mailer/new_unactivated.text.erb +1 -0
  29. data/app/views/billing_mailer/problem.html.erb +13 -0
  30. data/app/views/billing_mailer/problem.text.erb +14 -0
  31. data/app/views/billing_mailer/receipt.html.erb +41 -0
  32. data/app/views/billing_mailer/receipt.text.erb +25 -0
  33. data/app/views/billings/_form.html.erb +8 -0
  34. data/app/views/billings/edit.html.erb +13 -0
  35. data/app/views/billings/show.html.erb +29 -0
  36. data/app/views/invitation_mailer/invitation.text.erb +6 -0
  37. data/app/views/invitations/new.html.erb +17 -0
  38. data/app/views/invitations/show.html.erb +22 -0
  39. data/app/views/layouts/saucy.html.erb +36 -0
  40. data/app/views/limits/_meter.html.erb +13 -0
  41. data/app/views/memberships/edit.html.erb +21 -0
  42. data/app/views/memberships/index.html.erb +17 -0
  43. data/app/views/plans/_plan.html.erb +32 -0
  44. data/app/views/plans/_terms.html.erb +15 -0
  45. data/app/views/plans/edit.html.erb +33 -0
  46. data/app/views/plans/index.html.erb +12 -0
  47. data/app/views/profiles/_inputs.html.erb +5 -0
  48. data/app/views/profiles/edit.html.erb +36 -0
  49. data/app/views/projects/_form.html.erb +36 -0
  50. data/app/views/projects/edit.html.erb +22 -0
  51. data/app/views/projects/index.html.erb +28 -0
  52. data/app/views/projects/new.html.erb +13 -0
  53. data/app/views/projects/show.html.erb +0 -0
  54. data/app/views/shared/_project_dropdown.html.erb +55 -0
  55. data/app/views/shared/_saucy_javascript.html.erb +33 -0
  56. data/config/locales/en.yml +37 -0
  57. data/config/routes.rb +19 -0
  58. data/features/run_features.feature +83 -0
  59. data/features/step_definitions/clearance_steps.rb +45 -0
  60. data/features/step_definitions/rails_steps.rb +73 -0
  61. data/features/step_definitions/saucy_steps.rb +8 -0
  62. data/features/support/env.rb +4 -0
  63. data/features/support/file.rb +11 -0
  64. data/lib/generators/saucy/base.rb +18 -0
  65. data/lib/generators/saucy/features/features_generator.rb +91 -0
  66. data/lib/generators/saucy/features/templates/README +3 -0
  67. data/lib/generators/saucy/features/templates/factories.rb +71 -0
  68. data/lib/generators/saucy/features/templates/features/edit_profile.feature +9 -0
  69. data/lib/generators/saucy/features/templates/features/edit_project_permissions.feature +37 -0
  70. data/lib/generators/saucy/features/templates/features/edit_user_permissions.feature +47 -0
  71. data/lib/generators/saucy/features/templates/features/manage_account.feature +35 -0
  72. data/lib/generators/saucy/features/templates/features/manage_billing.feature +93 -0
  73. data/lib/generators/saucy/features/templates/features/manage_plan.feature +143 -0
  74. data/lib/generators/saucy/features/templates/features/manage_projects.feature +139 -0
  75. data/lib/generators/saucy/features/templates/features/manage_users.feature +142 -0
  76. data/lib/generators/saucy/features/templates/features/new_account.feature +33 -0
  77. data/lib/generators/saucy/features/templates/features/project_dropdown.feature +77 -0
  78. data/lib/generators/saucy/features/templates/features/sign_up.feature +32 -0
  79. data/lib/generators/saucy/features/templates/features/sign_up_paid.feature +65 -0
  80. data/lib/generators/saucy/features/templates/features/trial_plans.feature +82 -0
  81. data/lib/generators/saucy/features/templates/step_definitions/account_steps.rb +30 -0
  82. data/lib/generators/saucy/features/templates/step_definitions/braintree_steps.rb +25 -0
  83. data/lib/generators/saucy/features/templates/step_definitions/cron_steps.rb +23 -0
  84. data/lib/generators/saucy/features/templates/step_definitions/email_steps.rb +40 -0
  85. data/lib/generators/saucy/features/templates/step_definitions/factory_girl_steps.rb +1 -0
  86. data/lib/generators/saucy/features/templates/step_definitions/html_steps.rb +51 -0
  87. data/lib/generators/saucy/features/templates/step_definitions/plan_steps.rb +16 -0
  88. data/lib/generators/saucy/features/templates/step_definitions/project_steps.rb +4 -0
  89. data/lib/generators/saucy/features/templates/step_definitions/session_steps.rb +37 -0
  90. data/lib/generators/saucy/features/templates/step_definitions/user_steps.rb +100 -0
  91. data/lib/generators/saucy/features/templates/support/braintree.rb +5 -0
  92. data/lib/generators/saucy/install/install_generator.rb +40 -0
  93. data/lib/generators/saucy/install/templates/controllers/projects_controller.rb +3 -0
  94. data/lib/generators/saucy/install/templates/create_saucy_tables.rb +115 -0
  95. data/lib/generators/saucy/install/templates/models/account.rb +3 -0
  96. data/lib/generators/saucy/install/templates/models/plan.rb +3 -0
  97. data/lib/generators/saucy/install/templates/models/project.rb +3 -0
  98. data/lib/generators/saucy/specs/specs_generator.rb +20 -0
  99. data/lib/generators/saucy/specs/templates/support/braintree.rb +5 -0
  100. data/lib/generators/saucy/views/views_generator.rb +23 -0
  101. data/lib/saucy.rb +10 -0
  102. data/lib/saucy/account.rb +132 -0
  103. data/lib/saucy/account_authorization.rb +67 -0
  104. data/lib/saucy/configuration.rb +29 -0
  105. data/lib/saucy/engine.rb +35 -0
  106. data/lib/saucy/fake_braintree.rb +134 -0
  107. data/lib/saucy/layouts.rb +36 -0
  108. data/lib/saucy/plan.rb +54 -0
  109. data/lib/saucy/project.rb +125 -0
  110. data/lib/saucy/projects_controller.rb +94 -0
  111. data/lib/saucy/railties/tasks.rake +28 -0
  112. data/lib/saucy/routing_extensions.rb +121 -0
  113. data/lib/saucy/subscription.rb +237 -0
  114. data/lib/saucy/user.rb +30 -0
  115. data/spec/controllers/accounts_controller_spec.rb +228 -0
  116. data/spec/controllers/application_controller_spec.rb +32 -0
  117. data/spec/controllers/invitations_controller_spec.rb +215 -0
  118. data/spec/controllers/memberships_controller_spec.rb +117 -0
  119. data/spec/controllers/plans_controller_spec.rb +13 -0
  120. data/spec/controllers/profiles_controller_spec.rb +48 -0
  121. data/spec/controllers/projects_controller_spec.rb +216 -0
  122. data/spec/environment.rb +95 -0
  123. data/spec/layouts_spec.rb +21 -0
  124. data/spec/mailers/billing_mailer_spec.rb +68 -0
  125. data/spec/mailers/invitiation_mailer_spec.rb +19 -0
  126. data/spec/models/account_spec.rb +218 -0
  127. data/spec/models/invitation_spec.rb +320 -0
  128. data/spec/models/limit_spec.rb +70 -0
  129. data/spec/models/membership_spec.rb +37 -0
  130. data/spec/models/permission_spec.rb +30 -0
  131. data/spec/models/plan_spec.rb +81 -0
  132. data/spec/models/project_spec.rb +223 -0
  133. data/spec/models/signup_spec.rb +177 -0
  134. data/spec/models/subscription_spec.rb +481 -0
  135. data/spec/models/user_spec.rb +72 -0
  136. data/spec/route_extensions_spec.rb +51 -0
  137. data/spec/saucy_spec.rb +62 -0
  138. data/spec/scaffold/config/routes.rb +5 -0
  139. data/spec/spec_helper.rb +39 -0
  140. data/spec/support/authentication_helpers.rb +81 -0
  141. data/spec/support/authorization_helpers.rb +56 -0
  142. data/spec/support/braintree.rb +7 -0
  143. data/spec/support/clearance_matchers.rb +55 -0
  144. data/spec/support/notifications.rb +57 -0
  145. data/spec/views/accounts/_account.html.erb_spec.rb +37 -0
  146. metadata +325 -0
@@ -0,0 +1,37 @@
1
+ require 'spec_helper'
2
+
3
+ describe "/accounts/_account.html.erb" do
4
+ let(:account) { Factory.stub(:account) }
5
+ let(:edit_link) { %{href="#{edit_account_path(account)}"} }
6
+ let(:user) { Factory.stub(:user) }
7
+
8
+ before { view.stubs(:current_user => user) }
9
+
10
+ def render_account
11
+ render :partial => "accounts/account",
12
+ :locals => { :account => account, :projects => projects }
13
+ end
14
+
15
+ context "with projects" do
16
+ let(:project) { Factory.stub(:project, :name => 'Test Project') }
17
+ let(:projects) { [project] }
18
+ before { render_account }
19
+
20
+ it "renders projects" do
21
+ rendered.should include(project.name)
22
+ end
23
+
24
+ it "doesn't render the blank slate" do
25
+ rendered.should_not include("blank_slate")
26
+ end
27
+ end
28
+
29
+ context "without projects" do
30
+ let(:projects) { [] }
31
+ before { render_account }
32
+
33
+ it "renders the blank slate" do
34
+ rendered.should include("blank_slate")
35
+ end
36
+ end
37
+ end
metadata ADDED
@@ -0,0 +1,325 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: saasy
3
+ version: !ruby/object:Gem::Version
4
+ hash: 29
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 1
10
+ version: 0.0.1
11
+ platform: ruby
12
+ authors:
13
+ - thoughtbot, inc.
14
+ - Joe Ferris
15
+ - Mike Burns
16
+ - Chad Pytel
17
+ - Matthew Burket
18
+ autorequire:
19
+ bindir: bin
20
+ cert_chain: []
21
+
22
+ date: 2011-06-10 00:00:00 -05:00
23
+ default_executable:
24
+ dependencies:
25
+ - !ruby/object:Gem::Dependency
26
+ name: aruba
27
+ prerelease: false
28
+ requirement: &id001 !ruby/object:Gem::Requirement
29
+ none: false
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ hash: 3
34
+ segments:
35
+ - 0
36
+ version: "0"
37
+ type: :development
38
+ version_requirements: *id001
39
+ - !ruby/object:Gem::Dependency
40
+ name: braintree
41
+ prerelease: false
42
+ requirement: &id002 !ruby/object:Gem::Requirement
43
+ none: false
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ hash: 19
48
+ segments:
49
+ - 2
50
+ - 6
51
+ - 2
52
+ version: 2.6.2
53
+ type: :runtime
54
+ version_requirements: *id002
55
+ - !ruby/object:Gem::Dependency
56
+ name: clearance
57
+ prerelease: false
58
+ requirement: &id003 !ruby/object:Gem::Requirement
59
+ none: false
60
+ requirements:
61
+ - - ~>
62
+ - !ruby/object:Gem::Version
63
+ hash: 51
64
+ segments:
65
+ - 0
66
+ - 11
67
+ - 0
68
+ version: 0.11.0
69
+ type: :runtime
70
+ version_requirements: *id003
71
+ - !ruby/object:Gem::Dependency
72
+ name: formtastic
73
+ prerelease: false
74
+ requirement: &id004 !ruby/object:Gem::Requirement
75
+ none: false
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ hash: 11
80
+ segments:
81
+ - 1
82
+ - 2
83
+ version: "1.2"
84
+ type: :runtime
85
+ version_requirements: *id004
86
+ - !ruby/object:Gem::Dependency
87
+ name: railties
88
+ prerelease: false
89
+ requirement: &id005 !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - "="
93
+ - !ruby/object:Gem::Version
94
+ hash: 1
95
+ segments:
96
+ - 3
97
+ - 0
98
+ - 3
99
+ version: 3.0.3
100
+ type: :runtime
101
+ version_requirements: *id005
102
+ - !ruby/object:Gem::Dependency
103
+ name: sham_rack
104
+ prerelease: false
105
+ requirement: &id006 !ruby/object:Gem::Requirement
106
+ none: false
107
+ requirements:
108
+ - - "="
109
+ - !ruby/object:Gem::Version
110
+ hash: 29
111
+ segments:
112
+ - 1
113
+ - 3
114
+ - 3
115
+ version: 1.3.3
116
+ type: :runtime
117
+ version_requirements: *id006
118
+ - !ruby/object:Gem::Dependency
119
+ name: sinatra
120
+ prerelease: false
121
+ requirement: &id007 !ruby/object:Gem::Requirement
122
+ none: false
123
+ requirements:
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ hash: 23
127
+ segments:
128
+ - 1
129
+ - 1
130
+ - 2
131
+ version: 1.1.2
132
+ type: :runtime
133
+ version_requirements: *id007
134
+ description: Clearance-based Rails engine for Software as a Service (Saas) that provides account and project management.
135
+ email: Matthew@AssignItApp.com
136
+ executables: []
137
+
138
+ extensions: []
139
+
140
+ extra_rdoc_files: []
141
+
142
+ files:
143
+ - app/controllers/invitations_controller.rb
144
+ - app/controllers/accounts_controller.rb
145
+ - app/controllers/billings_controller.rb
146
+ - app/controllers/memberships_controller.rb
147
+ - app/controllers/plans_controller.rb
148
+ - app/controllers/profiles_controller.rb
149
+ - app/mailers/billing_mailer.rb
150
+ - app/mailers/invitation_mailer.rb
151
+ - app/views/layouts/saucy.html.erb
152
+ - app/views/billing_mailer/receipt.text.erb
153
+ - app/views/billing_mailer/problem.html.erb
154
+ - app/views/billing_mailer/receipt.html.erb
155
+ - app/views/billing_mailer/completed_trial.text.erb
156
+ - app/views/billing_mailer/problem.text.erb
157
+ - app/views/billing_mailer/expiring_trial.text.erb
158
+ - app/views/billing_mailer/new_unactivated.text.erb
159
+ - app/views/plans/edit.html.erb
160
+ - app/views/plans/_terms.html.erb
161
+ - app/views/plans/_plan.html.erb
162
+ - app/views/plans/index.html.erb
163
+ - app/views/limits/_meter.html.erb
164
+ - app/views/accounts/new.html.erb
165
+ - app/views/accounts/edit.html.erb
166
+ - app/views/accounts/_subnav.html.erb
167
+ - app/views/accounts/_account.html.erb
168
+ - app/views/accounts/_blank_slate.html.erb
169
+ - app/views/accounts/_projects.html.erb
170
+ - app/views/accounts/index.html.erb
171
+ - app/views/billings/_form.html.erb
172
+ - app/views/billings/edit.html.erb
173
+ - app/views/billings/show.html.erb
174
+ - app/views/invitations/new.html.erb
175
+ - app/views/invitations/show.html.erb
176
+ - app/views/memberships/edit.html.erb
177
+ - app/views/memberships/index.html.erb
178
+ - app/views/invitation_mailer/invitation.text.erb
179
+ - app/views/profiles/edit.html.erb
180
+ - app/views/profiles/_inputs.html.erb
181
+ - app/views/shared/_saucy_javascript.html.erb
182
+ - app/views/shared/_project_dropdown.html.erb
183
+ - app/views/projects/_form.html.erb
184
+ - app/views/projects/new.html.erb
185
+ - app/views/projects/edit.html.erb
186
+ - app/views/projects/index.html.erb
187
+ - app/views/projects/show.html.erb
188
+ - app/models/invitation.rb
189
+ - app/models/signup.rb
190
+ - app/models/limit.rb
191
+ - app/models/membership.rb
192
+ - app/models/permission.rb
193
+ - app/helpers/limits_helper.rb
194
+ - config/locales/en.yml
195
+ - config/routes.rb
196
+ - features/run_features.feature
197
+ - features/support/env.rb
198
+ - features/support/file.rb
199
+ - features/step_definitions/clearance_steps.rb
200
+ - features/step_definitions/saucy_steps.rb
201
+ - features/step_definitions/rails_steps.rb
202
+ - lib/saucy.rb
203
+ - lib/generators/saucy/install/templates/controllers/projects_controller.rb
204
+ - lib/generators/saucy/install/templates/models/project.rb
205
+ - lib/generators/saucy/install/templates/models/account.rb
206
+ - lib/generators/saucy/install/templates/models/plan.rb
207
+ - lib/generators/saucy/install/templates/create_saucy_tables.rb
208
+ - lib/generators/saucy/install/install_generator.rb
209
+ - lib/generators/saucy/views/views_generator.rb
210
+ - lib/generators/saucy/base.rb
211
+ - lib/generators/saucy/features/features_generator.rb
212
+ - lib/generators/saucy/features/templates/factories.rb
213
+ - lib/generators/saucy/features/templates/support/braintree.rb
214
+ - lib/generators/saucy/features/templates/README
215
+ - lib/generators/saucy/features/templates/features/edit_profile.feature
216
+ - lib/generators/saucy/features/templates/features/manage_users.feature
217
+ - lib/generators/saucy/features/templates/features/sign_up_paid.feature
218
+ - lib/generators/saucy/features/templates/features/manage_plan.feature
219
+ - lib/generators/saucy/features/templates/features/edit_project_permissions.feature
220
+ - lib/generators/saucy/features/templates/features/edit_user_permissions.feature
221
+ - lib/generators/saucy/features/templates/features/manage_account.feature
222
+ - lib/generators/saucy/features/templates/features/trial_plans.feature
223
+ - lib/generators/saucy/features/templates/features/new_account.feature
224
+ - lib/generators/saucy/features/templates/features/project_dropdown.feature
225
+ - lib/generators/saucy/features/templates/features/sign_up.feature
226
+ - lib/generators/saucy/features/templates/features/manage_billing.feature
227
+ - lib/generators/saucy/features/templates/features/manage_projects.feature
228
+ - lib/generators/saucy/features/templates/step_definitions/cron_steps.rb
229
+ - lib/generators/saucy/features/templates/step_definitions/email_steps.rb
230
+ - lib/generators/saucy/features/templates/step_definitions/session_steps.rb
231
+ - lib/generators/saucy/features/templates/step_definitions/plan_steps.rb
232
+ - lib/generators/saucy/features/templates/step_definitions/account_steps.rb
233
+ - lib/generators/saucy/features/templates/step_definitions/factory_girl_steps.rb
234
+ - lib/generators/saucy/features/templates/step_definitions/project_steps.rb
235
+ - lib/generators/saucy/features/templates/step_definitions/braintree_steps.rb
236
+ - lib/generators/saucy/features/templates/step_definitions/html_steps.rb
237
+ - lib/generators/saucy/features/templates/step_definitions/user_steps.rb
238
+ - lib/generators/saucy/specs/templates/support/braintree.rb
239
+ - lib/generators/saucy/specs/specs_generator.rb
240
+ - lib/saucy/project.rb
241
+ - lib/saucy/projects_controller.rb
242
+ - lib/saucy/user.rb
243
+ - lib/saucy/engine.rb
244
+ - lib/saucy/account_authorization.rb
245
+ - lib/saucy/layouts.rb
246
+ - lib/saucy/account.rb
247
+ - lib/saucy/plan.rb
248
+ - lib/saucy/fake_braintree.rb
249
+ - lib/saucy/routing_extensions.rb
250
+ - lib/saucy/configuration.rb
251
+ - lib/saucy/railties/tasks.rake
252
+ - lib/saucy/subscription.rb
253
+ - spec/controllers/projects_controller_spec.rb
254
+ - spec/controllers/application_controller_spec.rb
255
+ - spec/controllers/plans_controller_spec.rb
256
+ - spec/controllers/profiles_controller_spec.rb
257
+ - spec/controllers/memberships_controller_spec.rb
258
+ - spec/controllers/accounts_controller_spec.rb
259
+ - spec/controllers/invitations_controller_spec.rb
260
+ - spec/saucy_spec.rb
261
+ - spec/mailers/invitiation_mailer_spec.rb
262
+ - spec/mailers/billing_mailer_spec.rb
263
+ - spec/support/braintree.rb
264
+ - spec/support/notifications.rb
265
+ - spec/support/clearance_matchers.rb
266
+ - spec/support/authorization_helpers.rb
267
+ - spec/support/authentication_helpers.rb
268
+ - spec/spec_helper.rb
269
+ - spec/views/accounts/_account.html.erb_spec.rb
270
+ - spec/models/invitation_spec.rb
271
+ - spec/models/permission_spec.rb
272
+ - spec/models/membership_spec.rb
273
+ - spec/models/subscription_spec.rb
274
+ - spec/models/account_spec.rb
275
+ - spec/models/plan_spec.rb
276
+ - spec/models/project_spec.rb
277
+ - spec/models/signup_spec.rb
278
+ - spec/models/user_spec.rb
279
+ - spec/models/limit_spec.rb
280
+ - spec/environment.rb
281
+ - spec/scaffold/config/routes.rb
282
+ - spec/layouts_spec.rb
283
+ - spec/route_extensions_spec.rb
284
+ - README.md
285
+ - Gemfile
286
+ - Rakefile
287
+ - CHANGELOG.md
288
+ has_rdoc: true
289
+ homepage: http://github.com/mab879/saasy
290
+ licenses: []
291
+
292
+ post_install_message:
293
+ rdoc_options: []
294
+
295
+ require_paths:
296
+ - lib
297
+ required_ruby_version: !ruby/object:Gem::Requirement
298
+ none: false
299
+ requirements:
300
+ - - ">="
301
+ - !ruby/object:Gem::Version
302
+ hash: 3
303
+ segments:
304
+ - 0
305
+ version: "0"
306
+ required_rubygems_version: !ruby/object:Gem::Requirement
307
+ none: false
308
+ requirements:
309
+ - - ">="
310
+ - !ruby/object:Gem::Version
311
+ hash: 19
312
+ segments:
313
+ - 1
314
+ - 3
315
+ - 4
316
+ version: 1.3.4
317
+ requirements: []
318
+
319
+ rubyforge_project: saasy
320
+ rubygems_version: 1.6.1
321
+ signing_key:
322
+ specification_version: 3
323
+ summary: Saas Rails engine.
324
+ test_files: []
325
+