fake_chargify 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +10 -0
- data/README.md +20 -0
- data/Rakefile +150 -0
- data/fake_chargify.gemspec +68 -0
- data/lib/fake_chargify.rb +45 -0
- data/lib/fake_chargify/configuration.rb +5 -0
- data/lib/fake_chargify/credit_card.rb +26 -0
- data/lib/fake_chargify/customer.rb +40 -0
- data/lib/fake_chargify/customer_registry.rb +65 -0
- data/lib/fake_chargify/product.rb +21 -0
- data/lib/fake_chargify/product_family.rb +18 -0
- data/lib/fake_chargify/statement.rb +51 -0
- data/lib/fake_chargify/statement_registry.rb +32 -0
- data/lib/fake_chargify/string_patches.rb +5 -0
- data/lib/fake_chargify/subscription.rb +64 -0
- data/lib/fake_chargify/subscription_registry.rb +77 -0
- data/lib/fake_chargify/url_parser.rb +11 -0
- data/readme.md +20 -0
- data/spec/fake_chargify/configuration_spec.rb +14 -0
- data/spec/fake_chargify/credit_card_spec.rb +21 -0
- data/spec/fake_chargify/customer_spec.rb +99 -0
- data/spec/fake_chargify/product_family_spec.rb +21 -0
- data/spec/fake_chargify/product_spec.rb +34 -0
- data/spec/fake_chargify/statement_spec.rb +79 -0
- data/spec/fake_chargify/subscription_spec.rb +195 -0
- data/spec/fake_chargify_spec.rb +27 -0
- data/spec/spec_helper.rb +18 -0
- data/spec/string_patches_spec.rb +21 -0
- metadata +116 -0
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "FakeChargify::Product" do
|
4
|
+
describe ".to_xml" do
|
5
|
+
it "returns xml from object properties" do
|
6
|
+
product = FakeChargify::Product.new
|
7
|
+
product.accounting_code = '1234'
|
8
|
+
product.handle = 'Starter'
|
9
|
+
product.interval = 4
|
10
|
+
product.name = 'Subscription'
|
11
|
+
product.price_in_cents = 897
|
12
|
+
product.family = FakeChargify::ProductFamily.new
|
13
|
+
product.family.accounting_code = '1234'
|
14
|
+
product.family.handle = 'Starter'
|
15
|
+
product.family.name = 'Subscription'
|
16
|
+
product.to_xml.gsub(/\s/,'').should ==
|
17
|
+
"""
|
18
|
+
<?xml version=\"1.0\"?>
|
19
|
+
<product>
|
20
|
+
<accounting_code>1234</accounting_code>
|
21
|
+
<handle>Starter</handle>
|
22
|
+
<interval>4</interval>
|
23
|
+
<name>Subscription</name>
|
24
|
+
<price_in_cents>897</price_in_cents>
|
25
|
+
<product_family>
|
26
|
+
<accounting_code>1234</accounting_code>
|
27
|
+
<handle>Starter</handle>
|
28
|
+
<name>Subscription</name>
|
29
|
+
</product_family>
|
30
|
+
</product>
|
31
|
+
""".gsub(/\s/,'')
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "chargify_api_ares gem" do
|
4
|
+
before(:each) do
|
5
|
+
FakeChargify.activate!
|
6
|
+
end
|
7
|
+
|
8
|
+
describe "Chargify::Subscription.statements" do
|
9
|
+
it "finds all the statements for a given subscription" do
|
10
|
+
Chargify::Subscription.create(
|
11
|
+
:id => 1,
|
12
|
+
:customer_reference => 'jblow',
|
13
|
+
:product_handle => 'Starter',
|
14
|
+
:credit_card_attributes => {
|
15
|
+
:first_name => "Lester",
|
16
|
+
:last_name => "Tester",
|
17
|
+
:expiration_month => 1,
|
18
|
+
:expiration_year => 2020,
|
19
|
+
:full_number => "1"
|
20
|
+
}
|
21
|
+
)
|
22
|
+
subscription = FakeChargify.subscriptions.repository.select { |s| s.id == 1 }.first
|
23
|
+
statement = FakeChargify::Statement.new(
|
24
|
+
:id => 1,
|
25
|
+
:subscription_id => subscription.id
|
26
|
+
)
|
27
|
+
FakeChargify.statements.repository << statement
|
28
|
+
|
29
|
+
subscription = Chargify::Subscription.find 1
|
30
|
+
statements = subscription.statements
|
31
|
+
statements.count.should == 1
|
32
|
+
statements[0].id.should == '1'
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe "FakeChargify::Statement" do
|
38
|
+
describe ".to_xml" do
|
39
|
+
it "returns xml from object properties" do
|
40
|
+
statement = FakeChargify::Statement.new(
|
41
|
+
:id => 1,
|
42
|
+
:subscription_id => 1
|
43
|
+
)
|
44
|
+
statement.to_xml.gsub(/\s/,'').should ==
|
45
|
+
"""
|
46
|
+
<?xml version=\"1.0\"?>
|
47
|
+
<statement>
|
48
|
+
<id>1</id>
|
49
|
+
<subscription_id>1</subscription_id>
|
50
|
+
<opened_at></opened_at>
|
51
|
+
<closed_at></closed_at>
|
52
|
+
<settled_at></settled_at>
|
53
|
+
<text_view></text_view>
|
54
|
+
<basic_html_view></basic_html_view>
|
55
|
+
<html_view></html_view>
|
56
|
+
<starting_balance_in_cents></starting_balance_in_cents>
|
57
|
+
<ending_balance_in_cents></ending_balance_in_cents>
|
58
|
+
<customer_first_name></customer_first_name>
|
59
|
+
<customer_last_name></customer_last_name>
|
60
|
+
<customer_organization></customer_organization>
|
61
|
+
<customer_shipping_address></customer_shipping_address>
|
62
|
+
<customer_shipping_address_2></customer_shipping_address_2>
|
63
|
+
<customer_shipping_city></customer_shipping_city>
|
64
|
+
<customer_shipping_state></customer_shipping_state>
|
65
|
+
<customer_shipping_country></customer_shipping_country>
|
66
|
+
<customer_shipping_zip></customer_shipping_zip>
|
67
|
+
<customer_billing_address></customer_billing_address>
|
68
|
+
<customer_billing_address_2></customer_billing_address_2>
|
69
|
+
<customer_billing_city></customer_billing_city>
|
70
|
+
<customer_billing_state></customer_billing_state>
|
71
|
+
<customer_billing_country></customer_billing_country>
|
72
|
+
<customer_billing_zip></customer_billing_zip>
|
73
|
+
<created_at></created_at>
|
74
|
+
<updated_at></updated_at>
|
75
|
+
</statement>
|
76
|
+
""".gsub(/\s/,'')
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
@@ -0,0 +1,195 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "chargify_api_ares gem" do
|
4
|
+
before(:each) do
|
5
|
+
FakeChargify.activate!
|
6
|
+
end
|
7
|
+
|
8
|
+
describe "Chargify::Subscription.create" do
|
9
|
+
it "returns the correct values" do
|
10
|
+
subscription = Chargify::Subscription.create(
|
11
|
+
:customer_reference => 'jblow',
|
12
|
+
:product_handle => 'Starter',
|
13
|
+
:credit_card_attributes => {
|
14
|
+
:first_name => "Lester",
|
15
|
+
:last_name => "Tester",
|
16
|
+
:expiration_month => 1,
|
17
|
+
:expiration_year => 2020,
|
18
|
+
:full_number => "1"
|
19
|
+
}
|
20
|
+
)
|
21
|
+
subscription.customer_reference.should == 'jblow'
|
22
|
+
subscription.product_handle.should == 'Starter'
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe "Chargify::Subscription.find" do
|
27
|
+
it "returns the correct values" do
|
28
|
+
subscription = Chargify::Subscription.create(
|
29
|
+
:customer_reference => 'jblow',
|
30
|
+
:product_handle => 'Starter',
|
31
|
+
:credit_card_attributes => {
|
32
|
+
:first_name => "Lester",
|
33
|
+
:last_name => "Tester",
|
34
|
+
:expiration_month => 1,
|
35
|
+
:expiration_year => 2020,
|
36
|
+
:full_number => "1"
|
37
|
+
}
|
38
|
+
)
|
39
|
+
subscriptions = Chargify::Subscription.find(:all)
|
40
|
+
subscriptions.count.should == 1
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe "Chargify::Subscription.show" do
|
45
|
+
it "returns the correct values" do
|
46
|
+
Chargify::Subscription.create(
|
47
|
+
:id => 1,
|
48
|
+
:customer_reference => 'jblow',
|
49
|
+
:product_handle => 'Starter',
|
50
|
+
:credit_card_attributes => {
|
51
|
+
:first_name => "Lester",
|
52
|
+
:last_name => "Tester",
|
53
|
+
:expiration_month => 1,
|
54
|
+
:expiration_year => 2020,
|
55
|
+
:full_number => "1"
|
56
|
+
}
|
57
|
+
)
|
58
|
+
subscription = Chargify::Subscription.find 1
|
59
|
+
subscription.credit_card.expiration_month.should == '1'
|
60
|
+
subscription.credit_card.expiration_year.should == '2020'
|
61
|
+
subscription.credit_card.masked_card_number.should == 'XXXX-XXXX-XXXX-1'
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
describe "Chargify::Subscription.update" do
|
66
|
+
it "returns the correct values" do
|
67
|
+
subscription = Chargify::Subscription.create(
|
68
|
+
:id => 2,
|
69
|
+
:product_handle => 'Starter',
|
70
|
+
:credit_card_attributes => {
|
71
|
+
:first_name => "Lester",
|
72
|
+
:last_name => "Tester",
|
73
|
+
:expiration_month => 1,
|
74
|
+
:expiration_year => 2020,
|
75
|
+
:full_number => "1"
|
76
|
+
}
|
77
|
+
)
|
78
|
+
subscription.balance_in_cents = 1000
|
79
|
+
subscription.save
|
80
|
+
subscription = Chargify::Subscription.find 2
|
81
|
+
subscription.balance_in_cents.should == '1000'
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
describe "Chargify::Subscription.cancel" do
|
86
|
+
it "returns the correct values" do
|
87
|
+
subscription = Chargify::Subscription.create(
|
88
|
+
:id => 3,
|
89
|
+
:product_handle => 'Starter',
|
90
|
+
:credit_card_attributes => {
|
91
|
+
:first_name => "Lester",
|
92
|
+
:last_name => "Tester",
|
93
|
+
:expiration_month => 1,
|
94
|
+
:expiration_year => 2020,
|
95
|
+
:full_number => "1"
|
96
|
+
}
|
97
|
+
)
|
98
|
+
subscription.cancel
|
99
|
+
lambda { Chargify::Subscription.find(3) }.should raise_error
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
describe "FakeChargify::Subscription" do
|
105
|
+
describe ".to_xml" do
|
106
|
+
it "returns xml from object properties" do
|
107
|
+
subscription = FakeChargify::Subscription.new
|
108
|
+
subscription.id = 5
|
109
|
+
subscription.state = 'active'
|
110
|
+
subscription.balance_in_cents = 39
|
111
|
+
subscription.customer = FakeChargify::Customer.new
|
112
|
+
subscription.customer.id = 6
|
113
|
+
subscription.customer.first_name = 'Joe'
|
114
|
+
subscription.customer.last_name = 'Blow'
|
115
|
+
subscription.customer.email = 'joe@example.com'
|
116
|
+
subscription.product = FakeChargify::Product.new
|
117
|
+
subscription.product.accounting_code = '1234'
|
118
|
+
subscription.product.handle = 'Starter'
|
119
|
+
subscription.product.interval = 4
|
120
|
+
subscription.product.name = 'Subscription'
|
121
|
+
subscription.product.price_in_cents = 897
|
122
|
+
subscription.product.family = FakeChargify::ProductFamily.new
|
123
|
+
subscription.product.family.accounting_code = '1234'
|
124
|
+
subscription.product.family.handle = 'Starter'
|
125
|
+
subscription.product.family.name = 'Subscription'
|
126
|
+
subscription.to_xml.gsub(/\s/,'').should ==
|
127
|
+
"""
|
128
|
+
<?xml version=\"1.0\"?>
|
129
|
+
<subscription>
|
130
|
+
<id>5</id>
|
131
|
+
<state>active</state>
|
132
|
+
<balance_in_cents>39</balance_in_cents>
|
133
|
+
<current_period_started_at></current_period_started_at>
|
134
|
+
<current_period_ends_at></current_period_ends_at>
|
135
|
+
<trial_started_at></trial_started_at>
|
136
|
+
<trial_ended_at></trial_ended_at>
|
137
|
+
<activated_at></activated_at>
|
138
|
+
<expires_at></expires_at>
|
139
|
+
<created_at></created_at>
|
140
|
+
<updated_at></updated_at>
|
141
|
+
<customer>
|
142
|
+
<id>6</id>
|
143
|
+
<first_name>Joe</first_name>
|
144
|
+
<last_name>Blow</last_name>
|
145
|
+
<email>joe@example.com</email>
|
146
|
+
<organization />
|
147
|
+
<reference />
|
148
|
+
<created_at />
|
149
|
+
<updated_at />
|
150
|
+
</customer>
|
151
|
+
<product>
|
152
|
+
<accounting_code>1234</accounting_code>
|
153
|
+
<handle>Starter</handle>
|
154
|
+
<interval>4</interval>
|
155
|
+
<name>Subscription</name>
|
156
|
+
<price_in_cents>897</price_in_cents>
|
157
|
+
<product_family>
|
158
|
+
<accounting_code>1234</accounting_code>
|
159
|
+
<handle>Starter</handle>
|
160
|
+
<name>Subscription</name>
|
161
|
+
</product_family>
|
162
|
+
</product>
|
163
|
+
</subscription>
|
164
|
+
""".gsub(/\s/,'')
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
describe ".from_xml" do
|
169
|
+
it "parses valid xml and sets properties" do
|
170
|
+
subscription = FakeChargify::Subscription.from_xml """
|
171
|
+
<?xml version='1.0' encoding='UTF-8'?>
|
172
|
+
<subscription>
|
173
|
+
<product_handle>Starter</product_handle>
|
174
|
+
<customer_attributes>
|
175
|
+
<first_name>Joe</first_name>
|
176
|
+
<last_name>Blow</last_name>
|
177
|
+
<email>joe@example.com</email>
|
178
|
+
</customer_attributes>
|
179
|
+
<credit_card_attributes>
|
180
|
+
<full_number>1</full_number>
|
181
|
+
<expiration_month>10</expiration_month>
|
182
|
+
<expiration_year>2020</expiration_year>
|
183
|
+
</credit_card_attributes>
|
184
|
+
</subscription>
|
185
|
+
"""
|
186
|
+
subscription.product.handle.should == 'Starter'
|
187
|
+
subscription.customer.first_name.should == 'Joe'
|
188
|
+
subscription.customer.last_name.should == 'Blow'
|
189
|
+
subscription.customer.email.should == 'joe@example.com'
|
190
|
+
subscription.credit_card.masked_card_number.should == 'XXXX-XXXX-XXXX-1'
|
191
|
+
subscription.credit_card.expiration_month.should == 10
|
192
|
+
subscription.credit_card.expiration_year.should == 2020
|
193
|
+
end
|
194
|
+
end
|
195
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'net/http'
|
3
|
+
|
4
|
+
describe FakeChargify do
|
5
|
+
describe ".activate!" do
|
6
|
+
it "activates fake web requests" do
|
7
|
+
FakeChargify.activate!
|
8
|
+
lambda { Net::HTTP.get('example.com', '/index.html') }.should raise_error WebMock::NetConnectNotAllowedError
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
describe ".activate=" do
|
13
|
+
it "deactivates fake web requests" do
|
14
|
+
FakeChargify.activate = false
|
15
|
+
lambda { Net::HTTP.get('example.com', '/index.html') }.should_not raise_error WebMock::NetConnectNotAllowedError
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
describe ".clear!" do
|
20
|
+
it "clears the customers" do
|
21
|
+
FakeChargify.customers.repository << FakeChargify::Customer.new
|
22
|
+
FakeChargify.customers.repository.count.should == 1
|
23
|
+
FakeChargify.clear!
|
24
|
+
FakeChargify.customers.repository.count.should == 0
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'rspec'
|
2
|
+
require 'fake_chargify'
|
3
|
+
|
4
|
+
require 'chargify_api_ares'
|
5
|
+
|
6
|
+
Chargify.configure do |c|
|
7
|
+
c.subdomain = 'test'
|
8
|
+
c.api_key = 'api'
|
9
|
+
end
|
10
|
+
|
11
|
+
FakeChargify.configure do |c|
|
12
|
+
c.subdomain = Chargify.subdomain
|
13
|
+
c.api_key = Chargify.api_key
|
14
|
+
end
|
15
|
+
|
16
|
+
RSpec.configure do |config|
|
17
|
+
config.before { FakeChargify.clear! }
|
18
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "String" do
|
4
|
+
describe ".last" do
|
5
|
+
it "returns last characters for a string with enough characters" do
|
6
|
+
"123456".last(4).should == "3456"
|
7
|
+
end
|
8
|
+
|
9
|
+
it "returns last characters for a string with just enough characters" do
|
10
|
+
"12".last(2).should == "12"
|
11
|
+
end
|
12
|
+
|
13
|
+
it "returns last characters for a string with not enough characters" do
|
14
|
+
"123456".last(9).should == "123456"
|
15
|
+
end
|
16
|
+
|
17
|
+
it "returns empty string for an empty string" do
|
18
|
+
"".last(123).should == ""
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
metadata
ADDED
@@ -0,0 +1,116 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: fake_chargify
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 1
|
8
|
+
- 0
|
9
|
+
version: 0.1.0
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- Jamie Wright
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2011-11-29 00:00:00 -05:00
|
18
|
+
default_executable:
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: webmock
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - ~>
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
segments:
|
28
|
+
- 1
|
29
|
+
- 7
|
30
|
+
- 8
|
31
|
+
version: 1.7.8
|
32
|
+
type: :runtime
|
33
|
+
version_requirements: *id001
|
34
|
+
- !ruby/object:Gem::Dependency
|
35
|
+
name: nokogiri
|
36
|
+
prerelease: false
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ~>
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
segments:
|
42
|
+
- 1
|
43
|
+
- 5
|
44
|
+
- 0
|
45
|
+
version: 1.5.0
|
46
|
+
type: :runtime
|
47
|
+
version_requirements: *id002
|
48
|
+
description: A helper for faking web requests and responses to and from the Chargify API.
|
49
|
+
email: jamie@brilliantfantastic.com
|
50
|
+
executables: []
|
51
|
+
|
52
|
+
extensions: []
|
53
|
+
|
54
|
+
extra_rdoc_files:
|
55
|
+
- README.md
|
56
|
+
files:
|
57
|
+
- Gemfile
|
58
|
+
- Rakefile
|
59
|
+
- fake_chargify.gemspec
|
60
|
+
- lib/fake_chargify.rb
|
61
|
+
- lib/fake_chargify/configuration.rb
|
62
|
+
- lib/fake_chargify/credit_card.rb
|
63
|
+
- lib/fake_chargify/customer.rb
|
64
|
+
- lib/fake_chargify/customer_registry.rb
|
65
|
+
- lib/fake_chargify/product.rb
|
66
|
+
- lib/fake_chargify/product_family.rb
|
67
|
+
- lib/fake_chargify/statement.rb
|
68
|
+
- lib/fake_chargify/statement_registry.rb
|
69
|
+
- lib/fake_chargify/string_patches.rb
|
70
|
+
- lib/fake_chargify/subscription.rb
|
71
|
+
- lib/fake_chargify/subscription_registry.rb
|
72
|
+
- lib/fake_chargify/url_parser.rb
|
73
|
+
- readme.md
|
74
|
+
- spec/fake_chargify/configuration_spec.rb
|
75
|
+
- spec/fake_chargify/credit_card_spec.rb
|
76
|
+
- spec/fake_chargify/customer_spec.rb
|
77
|
+
- spec/fake_chargify/product_family_spec.rb
|
78
|
+
- spec/fake_chargify/product_spec.rb
|
79
|
+
- spec/fake_chargify/statement_spec.rb
|
80
|
+
- spec/fake_chargify/subscription_spec.rb
|
81
|
+
- spec/fake_chargify_spec.rb
|
82
|
+
- spec/spec_helper.rb
|
83
|
+
- spec/string_patches_spec.rb
|
84
|
+
- README.md
|
85
|
+
has_rdoc: true
|
86
|
+
homepage: http://github.com/brilliantfantastic/fake_chargify
|
87
|
+
licenses: []
|
88
|
+
|
89
|
+
post_install_message:
|
90
|
+
rdoc_options:
|
91
|
+
- --charset=UTF-8
|
92
|
+
require_paths:
|
93
|
+
- lib
|
94
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
95
|
+
requirements:
|
96
|
+
- - ">="
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
segments:
|
99
|
+
- 0
|
100
|
+
version: "0"
|
101
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
102
|
+
requirements:
|
103
|
+
- - ">="
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
segments:
|
106
|
+
- 0
|
107
|
+
version: "0"
|
108
|
+
requirements: []
|
109
|
+
|
110
|
+
rubyforge_project: fake_chargify
|
111
|
+
rubygems_version: 1.3.6
|
112
|
+
signing_key:
|
113
|
+
specification_version: 2
|
114
|
+
summary: A helper for faking web requests and responses to and from the Chargify API.
|
115
|
+
test_files: []
|
116
|
+
|