freemium 0.0.1

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 (90) hide show
  1. data/.gitignore +53 -0
  2. data/Gemfile +4 -0
  3. data/Gemfile.lock +121 -0
  4. data/MIT-LICENSE +20 -0
  5. data/README.rdoc +67 -0
  6. data/Rakefile +23 -0
  7. data/autotest/discover.rb +2 -0
  8. data/config/locales/en.yml +2 -0
  9. data/freemium.gemspec +28 -0
  10. data/lib/freemium/address.rb +18 -0
  11. data/lib/freemium/coupon.rb +38 -0
  12. data/lib/freemium/coupon_redemption.rb +48 -0
  13. data/lib/freemium/credit_card.rb +273 -0
  14. data/lib/freemium/feature_set.rb +45 -0
  15. data/lib/freemium/gateways/base.rb +65 -0
  16. data/lib/freemium/gateways/brain_tree.rb +175 -0
  17. data/lib/freemium/gateways/test.rb +34 -0
  18. data/lib/freemium/manual_billing.rb +73 -0
  19. data/lib/freemium/railtie.tb +7 -0
  20. data/lib/freemium/rates.rb +33 -0
  21. data/lib/freemium/recurring_billing.rb +59 -0
  22. data/lib/freemium/response.rb +24 -0
  23. data/lib/freemium/subscription.rb +350 -0
  24. data/lib/freemium/subscription_change.rb +20 -0
  25. data/lib/freemium/subscription_mailer/admin_report.rhtml +4 -0
  26. data/lib/freemium/subscription_mailer/expiration_notice.rhtml +1 -0
  27. data/lib/freemium/subscription_mailer/expiration_warning.rhtml +1 -0
  28. data/lib/freemium/subscription_mailer/invoice.text.plain.erb +5 -0
  29. data/lib/freemium/subscription_mailer.rb +36 -0
  30. data/lib/freemium/subscription_plan.rb +32 -0
  31. data/lib/freemium/transaction.rb +15 -0
  32. data/lib/freemium/version.rb +3 -0
  33. data/lib/freemium.rb +75 -0
  34. data/lib/generators/active_record/freemium_generator.rb +28 -0
  35. data/lib/generators/active_record/templates/migrations/account_transactions.rb +17 -0
  36. data/lib/generators/active_record/templates/migrations/coupon_redemptions.rb +18 -0
  37. data/lib/generators/active_record/templates/migrations/coupons.rb +28 -0
  38. data/lib/generators/active_record/templates/migrations/credit_cards.rb +14 -0
  39. data/lib/generators/active_record/templates/migrations/subscription_changes.rb +18 -0
  40. data/lib/generators/active_record/templates/migrations/subscription_plans.rb +14 -0
  41. data/lib/generators/active_record/templates/migrations/subscriptions.rb +30 -0
  42. data/lib/generators/active_record/templates/models/account_transaction.rb +3 -0
  43. data/lib/generators/active_record/templates/models/coupon.rb +3 -0
  44. data/lib/generators/active_record/templates/models/coupon_redemption.rb +3 -0
  45. data/lib/generators/active_record/templates/models/credit_card.rb +3 -0
  46. data/lib/generators/active_record/templates/models/subscription.rb +3 -0
  47. data/lib/generators/active_record/templates/models/subscription_change.rb +3 -0
  48. data/lib/generators/active_record/templates/models/subscription_plan.rb +3 -0
  49. data/lib/generators/freemium/freemium_generator.rb +15 -0
  50. data/lib/generators/freemium/install_generator.rb +28 -0
  51. data/lib/generators/freemium/orm_helpers.rb +27 -0
  52. data/lib/generators/templates/freemium.rb +43 -0
  53. data/lib/generators/templates/freemium_feature_sets.yml +5 -0
  54. data/spec/dummy/Rakefile +7 -0
  55. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  56. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  57. data/spec/dummy/app/models/models.rb +32 -0
  58. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  59. data/spec/dummy/config/application.rb +45 -0
  60. data/spec/dummy/config/boot.rb +10 -0
  61. data/spec/dummy/config/database.yml +22 -0
  62. data/spec/dummy/config/environment.rb +5 -0
  63. data/spec/dummy/config/environments/development.rb +26 -0
  64. data/spec/dummy/config/environments/production.rb +49 -0
  65. data/spec/dummy/config/environments/test.rb +35 -0
  66. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  67. data/spec/dummy/config/initializers/inflections.rb +10 -0
  68. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  69. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  70. data/spec/dummy/config/initializers/session_store.rb +8 -0
  71. data/spec/dummy/config/locales/en.yml +5 -0
  72. data/spec/dummy/config/routes.rb +58 -0
  73. data/spec/dummy/config.ru +4 -0
  74. data/spec/dummy/db/schema.rb +92 -0
  75. data/spec/dummy/script/rails +6 -0
  76. data/spec/fixtures/credit_cards.yml +11 -0
  77. data/spec/fixtures/subscription_plans.yml +18 -0
  78. data/spec/fixtures/subscriptions.yml +29 -0
  79. data/spec/fixtures/users.yml +16 -0
  80. data/spec/freemium_feature_sets.yml +9 -0
  81. data/spec/freemium_spec.rb +4 -0
  82. data/spec/models/coupon_redemption_spec.rb +235 -0
  83. data/spec/models/credit_card_spec.rb +114 -0
  84. data/spec/models/manual_billing_spec.rb +174 -0
  85. data/spec/models/recurring_billing_spec.rb +92 -0
  86. data/spec/models/subscription_plan_spec.rb +44 -0
  87. data/spec/models/subscription_spec.rb +386 -0
  88. data/spec/spec_helper.rb +38 -0
  89. data/spec/support/helpers.rb +21 -0
  90. metadata +298 -0
@@ -0,0 +1,38 @@
1
+ # Configure Rails Envinronment
2
+ ENV["RAILS_ENV"] = "test"
3
+ require File.expand_path("../dummy/config/environment.rb", __FILE__)
4
+ require "rails/test_help"
5
+ require "rspec/rails"
6
+
7
+ ActionMailer::Base.delivery_method = :test
8
+ ActionMailer::Base.perform_deliveries = true
9
+ ActionMailer::Base.default_url_options[:host] = "test.com"
10
+
11
+ Rails.backtrace_cleaner.remove_silencers!
12
+
13
+ # Configure capybara for integration testing
14
+ #require "capybara/rails"
15
+ #Capybara.default_driver = :rack_test
16
+ #Capybara.default_selector = :css
17
+
18
+ # Run any available migration
19
+ ActiveRecord::Migrator.migrate File.expand_path("../dummy/db/migrate/", __FILE__)
20
+
21
+ # Load support files
22
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
23
+
24
+ Rspec.configure do |config|
25
+ # Remove this line if you don't want Rspec's should and should_not
26
+ # methods or matchers
27
+ require 'rspec/expectations'
28
+ config.include Rspec::Matchers
29
+
30
+ config.fixture_path = File.join(File.dirname(__FILE__), "fixtures")
31
+ config.use_transactional_fixtures = true
32
+
33
+ # == Mock Framework
34
+ config.mock_with :rspec
35
+
36
+ end
37
+
38
+
@@ -0,0 +1,21 @@
1
+ # some test credit_card params
2
+ class CreditCard
3
+
4
+ def self.sample_params
5
+ {
6
+ :first_name => "Santa",
7
+ :last_name => "Claus",
8
+ :card_type => "visa",
9
+ :number => "4111111111111111",
10
+ :month => 10,
11
+ :year => (Time.now + 3.years).year,
12
+ :verification_value => 999
13
+ }
14
+ end
15
+
16
+ def self.sample
17
+ CreditCard.new(CreditCard.sample_params)
18
+ end
19
+ end
20
+
21
+ Freemium::FeatureSet.config_file = File.join(File.dirname(__FILE__), '../freemium_feature_sets.yml')
metadata ADDED
@@ -0,0 +1,298 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: freemium
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Anton Oryol
9
+ - xn
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2013-05-13 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rails
17
+ requirement: !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ~>
21
+ - !ruby/object:Gem::Version
22
+ version: 3.1.3
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ~>
29
+ - !ruby/object:Gem::Version
30
+ version: 3.1.3
31
+ - !ruby/object:Gem::Dependency
32
+ name: money
33
+ requirement: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ type: :runtime
40
+ prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ! '>='
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: rspec-rails
49
+ requirement: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ! '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ - !ruby/object:Gem::Dependency
64
+ name: bundler
65
+ requirement: !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ! '>='
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ type: :development
72
+ prerelease: false
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
79
+ - !ruby/object:Gem::Dependency
80
+ name: rspec-rails
81
+ requirement: !ruby/object:Gem::Requirement
82
+ none: false
83
+ requirements:
84
+ - - ! '>='
85
+ - !ruby/object:Gem::Version
86
+ version: '0'
87
+ type: :development
88
+ prerelease: false
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ - !ruby/object:Gem::Dependency
96
+ name: autotest
97
+ requirement: !ruby/object:Gem::Requirement
98
+ none: false
99
+ requirements:
100
+ - - ! '>='
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ none: false
107
+ requirements:
108
+ - - ! '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: sqlite3-ruby
113
+ requirement: !ruby/object:Gem::Requirement
114
+ none: false
115
+ requirements:
116
+ - - ! '>='
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ none: false
123
+ requirements:
124
+ - - ! '>='
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ - !ruby/object:Gem::Dependency
128
+ name: bundler
129
+ requirement: !ruby/object:Gem::Requirement
130
+ none: false
131
+ requirements:
132
+ - - ~>
133
+ - !ruby/object:Gem::Version
134
+ version: 1.1.rc.8
135
+ type: :development
136
+ prerelease: false
137
+ version_requirements: !ruby/object:Gem::Requirement
138
+ none: false
139
+ requirements:
140
+ - - ~>
141
+ - !ruby/object:Gem::Version
142
+ version: 1.1.rc.8
143
+ description: Subscription Saas, tests are green. Needs some refactoring.
144
+ email: eagle.anton@gmail.com
145
+ executables: []
146
+ extensions: []
147
+ extra_rdoc_files: []
148
+ files:
149
+ - .gitignore
150
+ - Gemfile
151
+ - Gemfile.lock
152
+ - MIT-LICENSE
153
+ - README.rdoc
154
+ - Rakefile
155
+ - autotest/discover.rb
156
+ - config/locales/en.yml
157
+ - freemium.gemspec
158
+ - lib/freemium.rb
159
+ - lib/freemium/address.rb
160
+ - lib/freemium/coupon.rb
161
+ - lib/freemium/coupon_redemption.rb
162
+ - lib/freemium/credit_card.rb
163
+ - lib/freemium/feature_set.rb
164
+ - lib/freemium/gateways/base.rb
165
+ - lib/freemium/gateways/brain_tree.rb
166
+ - lib/freemium/gateways/test.rb
167
+ - lib/freemium/manual_billing.rb
168
+ - lib/freemium/railtie.tb
169
+ - lib/freemium/rates.rb
170
+ - lib/freemium/recurring_billing.rb
171
+ - lib/freemium/response.rb
172
+ - lib/freemium/subscription.rb
173
+ - lib/freemium/subscription_change.rb
174
+ - lib/freemium/subscription_mailer.rb
175
+ - lib/freemium/subscription_mailer/admin_report.rhtml
176
+ - lib/freemium/subscription_mailer/expiration_notice.rhtml
177
+ - lib/freemium/subscription_mailer/expiration_warning.rhtml
178
+ - lib/freemium/subscription_mailer/invoice.text.plain.erb
179
+ - lib/freemium/subscription_plan.rb
180
+ - lib/freemium/transaction.rb
181
+ - lib/freemium/version.rb
182
+ - lib/generators/active_record/freemium_generator.rb
183
+ - lib/generators/active_record/templates/migrations/account_transactions.rb
184
+ - lib/generators/active_record/templates/migrations/coupon_redemptions.rb
185
+ - lib/generators/active_record/templates/migrations/coupons.rb
186
+ - lib/generators/active_record/templates/migrations/credit_cards.rb
187
+ - lib/generators/active_record/templates/migrations/subscription_changes.rb
188
+ - lib/generators/active_record/templates/migrations/subscription_plans.rb
189
+ - lib/generators/active_record/templates/migrations/subscriptions.rb
190
+ - lib/generators/active_record/templates/models/account_transaction.rb
191
+ - lib/generators/active_record/templates/models/coupon.rb
192
+ - lib/generators/active_record/templates/models/coupon_redemption.rb
193
+ - lib/generators/active_record/templates/models/credit_card.rb
194
+ - lib/generators/active_record/templates/models/subscription.rb
195
+ - lib/generators/active_record/templates/models/subscription_change.rb
196
+ - lib/generators/active_record/templates/models/subscription_plan.rb
197
+ - lib/generators/freemium/freemium_generator.rb
198
+ - lib/generators/freemium/install_generator.rb
199
+ - lib/generators/freemium/orm_helpers.rb
200
+ - lib/generators/templates/freemium.rb
201
+ - lib/generators/templates/freemium_feature_sets.yml
202
+ - spec/dummy/Rakefile
203
+ - spec/dummy/app/controllers/application_controller.rb
204
+ - spec/dummy/app/helpers/application_helper.rb
205
+ - spec/dummy/app/models/models.rb
206
+ - spec/dummy/app/views/layouts/application.html.erb
207
+ - spec/dummy/config.ru
208
+ - spec/dummy/config/application.rb
209
+ - spec/dummy/config/boot.rb
210
+ - spec/dummy/config/database.yml
211
+ - spec/dummy/config/environment.rb
212
+ - spec/dummy/config/environments/development.rb
213
+ - spec/dummy/config/environments/production.rb
214
+ - spec/dummy/config/environments/test.rb
215
+ - spec/dummy/config/initializers/backtrace_silencers.rb
216
+ - spec/dummy/config/initializers/inflections.rb
217
+ - spec/dummy/config/initializers/mime_types.rb
218
+ - spec/dummy/config/initializers/secret_token.rb
219
+ - spec/dummy/config/initializers/session_store.rb
220
+ - spec/dummy/config/locales/en.yml
221
+ - spec/dummy/config/routes.rb
222
+ - spec/dummy/db/schema.rb
223
+ - spec/dummy/script/rails
224
+ - spec/fixtures/credit_cards.yml
225
+ - spec/fixtures/subscription_plans.yml
226
+ - spec/fixtures/subscriptions.yml
227
+ - spec/fixtures/users.yml
228
+ - spec/freemium_feature_sets.yml
229
+ - spec/freemium_spec.rb
230
+ - spec/models/coupon_redemption_spec.rb
231
+ - spec/models/credit_card_spec.rb
232
+ - spec/models/manual_billing_spec.rb
233
+ - spec/models/recurring_billing_spec.rb
234
+ - spec/models/subscription_plan_spec.rb
235
+ - spec/models/subscription_spec.rb
236
+ - spec/spec_helper.rb
237
+ - spec/support/helpers.rb
238
+ homepage: http://github.com/xn/freemium
239
+ licenses: []
240
+ post_install_message:
241
+ rdoc_options: []
242
+ require_paths:
243
+ - lib
244
+ required_ruby_version: !ruby/object:Gem::Requirement
245
+ none: false
246
+ requirements:
247
+ - - ! '>='
248
+ - !ruby/object:Gem::Version
249
+ version: '0'
250
+ required_rubygems_version: !ruby/object:Gem::Requirement
251
+ none: false
252
+ requirements:
253
+ - - ! '>='
254
+ - !ruby/object:Gem::Version
255
+ version: '0'
256
+ requirements: []
257
+ rubyforge_project:
258
+ rubygems_version: 1.8.23
259
+ signing_key:
260
+ specification_version: 3
261
+ summary: Subscription Saas
262
+ test_files:
263
+ - spec/dummy/Rakefile
264
+ - spec/dummy/app/controllers/application_controller.rb
265
+ - spec/dummy/app/helpers/application_helper.rb
266
+ - spec/dummy/app/models/models.rb
267
+ - spec/dummy/app/views/layouts/application.html.erb
268
+ - spec/dummy/config.ru
269
+ - spec/dummy/config/application.rb
270
+ - spec/dummy/config/boot.rb
271
+ - spec/dummy/config/database.yml
272
+ - spec/dummy/config/environment.rb
273
+ - spec/dummy/config/environments/development.rb
274
+ - spec/dummy/config/environments/production.rb
275
+ - spec/dummy/config/environments/test.rb
276
+ - spec/dummy/config/initializers/backtrace_silencers.rb
277
+ - spec/dummy/config/initializers/inflections.rb
278
+ - spec/dummy/config/initializers/mime_types.rb
279
+ - spec/dummy/config/initializers/secret_token.rb
280
+ - spec/dummy/config/initializers/session_store.rb
281
+ - spec/dummy/config/locales/en.yml
282
+ - spec/dummy/config/routes.rb
283
+ - spec/dummy/db/schema.rb
284
+ - spec/dummy/script/rails
285
+ - spec/fixtures/credit_cards.yml
286
+ - spec/fixtures/subscription_plans.yml
287
+ - spec/fixtures/subscriptions.yml
288
+ - spec/fixtures/users.yml
289
+ - spec/freemium_feature_sets.yml
290
+ - spec/freemium_spec.rb
291
+ - spec/models/coupon_redemption_spec.rb
292
+ - spec/models/credit_card_spec.rb
293
+ - spec/models/manual_billing_spec.rb
294
+ - spec/models/recurring_billing_spec.rb
295
+ - spec/models/subscription_plan_spec.rb
296
+ - spec/models/subscription_spec.rb
297
+ - spec/spec_helper.rb
298
+ - spec/support/helpers.rb