spreedly 1.1.0 → 1.2.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/History.txt +5 -0
- data/README.txt +3 -3
- data/lib/spreedly.rb +4 -0
- data/lib/spreedly/mock.rb +14 -1
- data/lib/spreedly/version.rb +1 -1
- data/test/spreedly_gem_test.rb +35 -0
- metadata +2 -2
data/History.txt
CHANGED
data/README.txt
CHANGED
@@ -19,14 +19,14 @@ the http://spreedly.com API. Created by Terralien[http://terralien.com].
|
|
19
19
|
|
20
20
|
# For real
|
21
21
|
require 'spreedly'
|
22
|
-
Spreedly.configure('site name', 'crazy hash token')
|
22
|
+
Spreedly.configure('site short name', 'crazy hash token')
|
23
23
|
url = Spreedly.subscribe_url(:id => 'customer id', :plan => 'plan id')
|
24
24
|
subscriber = Spreedly::Subscriber.find('customer id')
|
25
25
|
subscriber.active?
|
26
26
|
|
27
|
-
# For
|
27
|
+
# For fast tests
|
28
28
|
require 'spreedly/mock'
|
29
|
-
Spreedly.configure('site name', 'crazy hash token')
|
29
|
+
Spreedly.configure('site short name', 'crazy hash token')
|
30
30
|
url = Spreedly.subscribe_url(:id => 'customer id', :plan => 'plan id')
|
31
31
|
subscriber = Spreedly::Subscriber.find('customer id')
|
32
32
|
subscriber.active?
|
data/lib/spreedly.rb
CHANGED
data/lib/spreedly/mock.rb
CHANGED
@@ -50,6 +50,7 @@ module Spreedly
|
|
50
50
|
:store_credit => proc{BigDecimal("0.0")},
|
51
51
|
:active_until => proc{nil},
|
52
52
|
:feature_level => proc{""},
|
53
|
+
:on_trial => proc{false}
|
53
54
|
}
|
54
55
|
|
55
56
|
def self.wipe! # :nodoc: all
|
@@ -103,6 +104,14 @@ module Spreedly
|
|
103
104
|
@attributes[:feature_level] = feature_level if feature_level
|
104
105
|
@attributes[:active] = true
|
105
106
|
end
|
107
|
+
|
108
|
+
def activate_free_trial(plan_id)
|
109
|
+
raise "Could not activate free trial for subscriber: validation failed. missing subscription plan id" unless plan_id
|
110
|
+
raise "Could not active free trial for subscriber: subscriber or subscription plan no longer exists." unless self.class.find(id) && SubscriptionPlan.find(plan_id)
|
111
|
+
raise "Could not activate free trial for subscriber: subscription plan either 1) isn't a free trial, 2) the subscriber is not eligible for a free trial, or 3) the subscription plan is not enabled." if on_trial?
|
112
|
+
@attributes[:active] = true
|
113
|
+
@attributes[:on_trial] = true
|
114
|
+
end
|
106
115
|
end
|
107
116
|
|
108
117
|
class SubscriptionPlan < Resource
|
@@ -115,7 +124,11 @@ module Spreedly
|
|
115
124
|
end
|
116
125
|
|
117
126
|
def self.plans
|
118
|
-
@plans ||= {1 => new(:id => 1, :name => 'Default mock plan')}
|
127
|
+
@plans ||= {1 => new(:id => 1, :name => 'Default mock plan'), 2 => new(:id => 2, :name => 'Test Free Trial Plan', :plan_type => 'free_trial')}
|
128
|
+
end
|
129
|
+
|
130
|
+
def trial?
|
131
|
+
(plan_type == "free_trial")
|
119
132
|
end
|
120
133
|
end
|
121
134
|
end
|
data/lib/spreedly/version.rb
CHANGED
data/test/spreedly_gem_test.rb
CHANGED
@@ -155,6 +155,41 @@ class SpreedlyGemTest < Test::Unit::TestCase
|
|
155
155
|
assert_equal plan.name, Spreedly::SubscriptionPlan.find(plan.id).name
|
156
156
|
end
|
157
157
|
|
158
|
+
context "with a Free Trial plan" do
|
159
|
+
setup do
|
160
|
+
@trial = Spreedly::SubscriptionPlan.all.detect{|e| e.name == "Test Free Trial Plan" && e.trial?}
|
161
|
+
assert @trial, "For this test to pass in REAL mode you must have a trial plan in your Spreedly test site with the name \"Test Free Trial Plan\"."
|
162
|
+
end
|
163
|
+
|
164
|
+
should "be able to activate free trial" do
|
165
|
+
sub = create_subscriber
|
166
|
+
assert !sub.active?
|
167
|
+
assert !sub.on_trial?
|
168
|
+
|
169
|
+
sub.activate_free_trial(@trial.id)
|
170
|
+
sub = Spreedly::Subscriber.find(sub.id)
|
171
|
+
assert sub.active?
|
172
|
+
assert sub.on_trial?
|
173
|
+
end
|
174
|
+
|
175
|
+
should "throw an error if a second trial is activated" do
|
176
|
+
sub = create_subscriber
|
177
|
+
sub.activate_free_trial(@trial.id)
|
178
|
+
ex = assert_raise(RuntimeError){sub.activate_free_trial(@trial.id)}
|
179
|
+
assert_match %r{not eligible}, ex.message
|
180
|
+
end
|
181
|
+
|
182
|
+
should "throw errors on invalid free trial activation" do
|
183
|
+
sub = create_subscriber
|
184
|
+
|
185
|
+
ex = assert_raise(RuntimeError){sub.activate_free_trial(0)}
|
186
|
+
assert_match %r{no longer exists}, ex.message
|
187
|
+
|
188
|
+
ex = assert_raise(RuntimeError){sub.activate_free_trial(nil)}
|
189
|
+
assert_match %r{missing}, ex.message
|
190
|
+
end
|
191
|
+
end
|
192
|
+
|
158
193
|
only_real do
|
159
194
|
should "throw an error if comp is wrong type" do
|
160
195
|
sub = create_subscriber
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spreedly
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nathaniel Talbott
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-04-
|
12
|
+
date: 2009-04-30 00:00:00 -04:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|