sproutbox-mousetrap 0.6.4
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/.document +5 -0
- data/.gitignore +10 -0
- data/Gemfile +9 -0
- data/Gemfile.lock +36 -0
- data/MIT-LICENSE +20 -0
- data/README.textile +26 -0
- data/Rakefile +51 -0
- data/VERSION +1 -0
- data/lib/mousetrap.rb +25 -0
- data/lib/mousetrap/customer.rb +214 -0
- data/lib/mousetrap/invoice.rb +41 -0
- data/lib/mousetrap/plan.rb +34 -0
- data/lib/mousetrap/resource.rb +147 -0
- data/lib/mousetrap/subscription.rb +166 -0
- data/mousetrap.gemspec +91 -0
- data/script/authenticate.rb +3 -0
- data/script/cheddar_getter.example.yml +3 -0
- data/script/console +15 -0
- data/spec/factories.rb +42 -0
- data/spec/integration/settings.example.yml +6 -0
- data/spec/integration/smoke_test.rb +358 -0
- data/spec/integration/spike.rb +108 -0
- data/spec/mousetrap/customer_spec.rb +491 -0
- data/spec/mousetrap/plan_spec.rb +41 -0
- data/spec/mousetrap/resource_spec.rb +188 -0
- data/spec/mousetrap/subscription_spec.rb +164 -0
- data/spec/mousetrap_spec.rb +17 -0
- data/spec/spec_helper.rb +28 -0
- data/spec/support/fixtures.rb +189 -0
- data/spec/support/random_data.rb +21 -0
- metadata +174 -0
data/script/console
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
$LOAD_PATH.unshift << File.join(File.dirname(__FILE__), "..", "lib")
|
4
|
+
|
5
|
+
require 'mousetrap'
|
6
|
+
require 'irb'
|
7
|
+
require 'yaml'
|
8
|
+
|
9
|
+
config_file = File.join(File.dirname(__FILE__), "..", "mousetrap_config.yml")
|
10
|
+
raise "#{config_file} must exist" unless File.exists?(config_file)
|
11
|
+
config = YAML.load_file(config_file)
|
12
|
+
Mousetrap.product_code = config['product_code']
|
13
|
+
Mousetrap.authenticate(config['username'], config['password'])
|
14
|
+
|
15
|
+
IRB.start
|
data/spec/factories.rb
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'factory_girl'
|
2
|
+
|
3
|
+
Factory.define :new_customer, :class => Mousetrap::Customer, :default_strategy => :stub do |f|
|
4
|
+
f.email { random_email_address }
|
5
|
+
f.first_name { random_string }
|
6
|
+
f.last_name { random_string }
|
7
|
+
f.company { random_string }
|
8
|
+
f.code { |me| me.email }
|
9
|
+
f.add_attribute :id, nil
|
10
|
+
f.subscription_attributes { Factory.attributes_for :subscription }
|
11
|
+
end
|
12
|
+
|
13
|
+
Factory.define :existing_customer, :parent => :new_customer, :default_strategy => :stub do |f|
|
14
|
+
f.add_attribute :id, '2d1244e8-e338-102c-a92d-40402145ee8b'
|
15
|
+
end
|
16
|
+
|
17
|
+
Factory.define :alt_new_customer, :parent => :new_customer, :default_strategy => :stub do |f|
|
18
|
+
# TODO: international?
|
19
|
+
end
|
20
|
+
|
21
|
+
Factory.define :subscription, :class => Mousetrap::Subscription, :default_strategy => :stub do |f|
|
22
|
+
f.plan_code 'TEST'
|
23
|
+
f.billing_first_name { random_string }
|
24
|
+
f.billing_last_name { random_string }
|
25
|
+
f.credit_card_number '4111111111111111'
|
26
|
+
f.credit_card_expiration_month '12'
|
27
|
+
f.credit_card_expiration_year '2012'
|
28
|
+
f.credit_card_code '123'
|
29
|
+
f.billing_address "400 W 7th St\n#200"
|
30
|
+
f.billing_city 'Bloomington'
|
31
|
+
f.billing_state 'IN'
|
32
|
+
f.billing_country 'US'
|
33
|
+
f.billing_zip_code '47404'
|
34
|
+
end
|
35
|
+
|
36
|
+
Factory.define :alternate_subscription, :parent => :subscription, :default_strategy => :stub do |f|
|
37
|
+
f.credit_card_number '5555555555554444'
|
38
|
+
f.credit_card_expiration_month '7'
|
39
|
+
f.credit_card_expiration_year '2013'
|
40
|
+
f.credit_card_code '456'
|
41
|
+
f.billing_zip_code '12345'
|
42
|
+
end
|
@@ -0,0 +1,358 @@
|
|
1
|
+
require File.expand_path('../../../lib/mousetrap', __FILE__)
|
2
|
+
|
3
|
+
require "bundler"
|
4
|
+
Bundler.setup
|
5
|
+
|
6
|
+
require 'factories'
|
7
|
+
|
8
|
+
require 'rspec'
|
9
|
+
require 'active_support'
|
10
|
+
require 'yaml'
|
11
|
+
|
12
|
+
Dir["#{File.dirname(__FILE__)}/../support/**/*.rb"].each {|f| require f}
|
13
|
+
|
14
|
+
settings = YAML.load_file(File.dirname(__FILE__) + '/settings.yml')
|
15
|
+
Mousetrap.authenticate(settings['user'], settings['password'])
|
16
|
+
Mousetrap.product_code = settings['product_code']
|
17
|
+
|
18
|
+
RSpec.configure do |config|
|
19
|
+
config.before :suite do
|
20
|
+
begin
|
21
|
+
Mousetrap::Customer.destroy_all
|
22
|
+
rescue
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
shared_examples_for "a Customer record from CheddarGetter" do
|
28
|
+
describe "And I get the customer" do
|
29
|
+
before :all do
|
30
|
+
@api_customer = Mousetrap::Customer[@customer.code]
|
31
|
+
end
|
32
|
+
|
33
|
+
it "Then I should see first name" do
|
34
|
+
@api_customer.first_name.should == @customer.first_name
|
35
|
+
end
|
36
|
+
|
37
|
+
it "And I should see last name" do
|
38
|
+
@api_customer.last_name.should == @customer.last_name
|
39
|
+
end
|
40
|
+
|
41
|
+
it "And I should see company" do
|
42
|
+
@api_customer.company.should == @customer.company
|
43
|
+
end
|
44
|
+
|
45
|
+
it "And I should see the code" do
|
46
|
+
@api_customer.code.should == @customer.code
|
47
|
+
end
|
48
|
+
|
49
|
+
it "And I should see the ID" do
|
50
|
+
@api_customer.id.should == @customer.id
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
shared_examples_for "an active Subscription record from CheddarGetter" do
|
56
|
+
describe "And I get the subscription" do
|
57
|
+
before :all do
|
58
|
+
@api_customer = Mousetrap::Customer[@customer.code]
|
59
|
+
@api_subscription = @api_customer.subscription
|
60
|
+
end
|
61
|
+
|
62
|
+
it "Then ID is set" do
|
63
|
+
@api_subscription.id.should be
|
64
|
+
end
|
65
|
+
|
66
|
+
it "Then canceled_at is not set" do
|
67
|
+
@api_subscription.canceled_at.should be_nil
|
68
|
+
end
|
69
|
+
|
70
|
+
it "Then created_at is set" do
|
71
|
+
@api_subscription.created_at.should be
|
72
|
+
end
|
73
|
+
|
74
|
+
it "Then I should see the credit card expiration" do
|
75
|
+
expiration_date_from_api = Date.parse(@api_subscription.credit_card_expiration_date)
|
76
|
+
expiration_date = Date.parse("#{@customer.subscription.credit_card_expiration_year}-#{@customer.subscription.credit_card_expiration_month}-31")
|
77
|
+
expiration_date_from_api.should == expiration_date
|
78
|
+
end
|
79
|
+
|
80
|
+
it "Then I should see the credit card last four digits" do
|
81
|
+
@api_subscription.credit_card_last_four_digits.should == @customer.subscription.credit_card_number[-4..-1]
|
82
|
+
end
|
83
|
+
|
84
|
+
it "Then I should see the credit card type" do
|
85
|
+
@api_subscription.credit_card_type.should == (@credit_card_type || 'visa')
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
describe "The Wrapper Gem" do
|
91
|
+
describe Mousetrap::Customer do
|
92
|
+
describe ".all" do
|
93
|
+
describe "Given a few customers on CheddarGetter" do
|
94
|
+
before :all do
|
95
|
+
3.times { Factory(:new_customer).save }
|
96
|
+
violated "Couldn't save customers" unless Mousetrap::Customer.all.size == 3
|
97
|
+
end
|
98
|
+
|
99
|
+
describe "When I call .all" do
|
100
|
+
before :all do
|
101
|
+
@all_customers = Mousetrap::Customer.all
|
102
|
+
end
|
103
|
+
|
104
|
+
it "Then I should get all the customers" do
|
105
|
+
@all_customers.size.should == 3
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
describe ".create" do
|
112
|
+
describe "When I create a customer" do
|
113
|
+
before :all do
|
114
|
+
attributes = Factory.attributes_for :new_customer
|
115
|
+
@customer = Mousetrap::Customer.create attributes
|
116
|
+
end
|
117
|
+
|
118
|
+
it_should_behave_like "a Customer record from CheddarGetter"
|
119
|
+
it_should_behave_like "an active Subscription record from CheddarGetter"
|
120
|
+
end
|
121
|
+
|
122
|
+
describe "When I create a customer with international card" do
|
123
|
+
before :all do
|
124
|
+
attributes = Factory.attributes_for :alt_new_customer
|
125
|
+
@customer = Mousetrap::Customer.create attributes
|
126
|
+
end
|
127
|
+
|
128
|
+
it_should_behave_like "a Customer record from CheddarGetter"
|
129
|
+
it_should_behave_like "an active Subscription record from CheddarGetter"
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
describe ".destroy_all" do
|
134
|
+
describe "Given a few customers on CheddarGetter" do
|
135
|
+
before :all do
|
136
|
+
Mousetrap::Customer.destroy_all
|
137
|
+
3.times { Factory(:new_customer).save }
|
138
|
+
violated "Couldn't save customers" unless Mousetrap::Customer.all.size == 3
|
139
|
+
end
|
140
|
+
|
141
|
+
describe "When I call .destroy_all" do
|
142
|
+
before :all do
|
143
|
+
Mousetrap::Customer.destroy_all
|
144
|
+
end
|
145
|
+
|
146
|
+
it "Then there should be no customers" do
|
147
|
+
Mousetrap::Customer.all.size.should == 0
|
148
|
+
end
|
149
|
+
end
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
describe ".update" do
|
154
|
+
describe "Given a customer" do
|
155
|
+
before :all do
|
156
|
+
@customer = Factory :new_customer
|
157
|
+
@api_customer = nil
|
158
|
+
|
159
|
+
# TODO: figure out why multiple records are being created even though
|
160
|
+
# we use "before :all". Until then, here's the kludge...
|
161
|
+
if Mousetrap::Customer.all.size == 1
|
162
|
+
@api_customer = Mousetrap::Customer.all.first
|
163
|
+
@customer = @api_customer
|
164
|
+
else
|
165
|
+
@customer.save
|
166
|
+
@api_customer = Mousetrap::Customer[@customer.code]
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
170
|
+
describe "When I update the customer, with only customer attributes" do
|
171
|
+
before :all do
|
172
|
+
@api_customer = Mousetrap::Customer[@customer.code]
|
173
|
+
|
174
|
+
updated_attributes = {
|
175
|
+
:first_name => 'new_first',
|
176
|
+
:last_name => 'new_last',
|
177
|
+
:email => 'new_email@example.com',
|
178
|
+
:company => 'new_company'
|
179
|
+
}
|
180
|
+
|
181
|
+
@customer = Mousetrap::Customer.new updated_attributes
|
182
|
+
@customer.code = @api_customer.code
|
183
|
+
@customer.id = @api_customer.id
|
184
|
+
|
185
|
+
Mousetrap::Customer.update(@api_customer.code, updated_attributes)
|
186
|
+
end
|
187
|
+
|
188
|
+
it_should_behave_like "a Customer record from CheddarGetter"
|
189
|
+
end
|
190
|
+
|
191
|
+
describe "When I update the customer, with customer and subscription attributes" do
|
192
|
+
before :all do
|
193
|
+
@api_customer = Mousetrap::Customer[@customer.code]
|
194
|
+
|
195
|
+
updated_attributes = {
|
196
|
+
:first_name => 'new_first',
|
197
|
+
:last_name => 'new_last',
|
198
|
+
:email => 'new_email@example.com',
|
199
|
+
:company => 'new_company',
|
200
|
+
:subscription_attributes => {
|
201
|
+
:plan_code => 'TEST',
|
202
|
+
:billing_first_name => 'new_billing_first',
|
203
|
+
:billing_last_name => 'new_billing_last',
|
204
|
+
:credit_card_number => '5555555555554444',
|
205
|
+
:credit_card_expiration_month => '01',
|
206
|
+
:credit_card_expiration_year => '2013',
|
207
|
+
:billing_zip_code => '12345'
|
208
|
+
}
|
209
|
+
}
|
210
|
+
|
211
|
+
@credit_card_type = 'mc'
|
212
|
+
|
213
|
+
@customer = Mousetrap::Customer.new updated_attributes
|
214
|
+
|
215
|
+
# set up our test comparison objects as if they came from API gets
|
216
|
+
@customer.code = @api_customer.code
|
217
|
+
@customer.id = @api_customer.id
|
218
|
+
@customer.subscription.send(:id=, @api_customer.subscription.id)
|
219
|
+
|
220
|
+
Mousetrap::Customer.update(@api_customer.code, updated_attributes)
|
221
|
+
end
|
222
|
+
|
223
|
+
it_should_behave_like "a Customer record from CheddarGetter"
|
224
|
+
it_should_behave_like "an active Subscription record from CheddarGetter"
|
225
|
+
end
|
226
|
+
end
|
227
|
+
end
|
228
|
+
|
229
|
+
describe "#cancel" do
|
230
|
+
describe "Given a customer" do
|
231
|
+
before :all do
|
232
|
+
@customer = Factory :new_customer
|
233
|
+
@api_customer = nil
|
234
|
+
|
235
|
+
if Mousetrap::Customer.all.size == 1
|
236
|
+
@api_customer = Mousetrap::Customer.all.first
|
237
|
+
@customer = @api_customer
|
238
|
+
else
|
239
|
+
@customer.save
|
240
|
+
@api_customer = Mousetrap::Customer[@customer.code]
|
241
|
+
end
|
242
|
+
end
|
243
|
+
|
244
|
+
describe "When I cancel" do
|
245
|
+
before :all do
|
246
|
+
@api_customer.cancel
|
247
|
+
end
|
248
|
+
|
249
|
+
describe "And I get the customer" do
|
250
|
+
before :all do
|
251
|
+
@api_customer = Mousetrap::Customer[@customer.code]
|
252
|
+
end
|
253
|
+
|
254
|
+
it "Then I should see a cancellation date on subscription" do
|
255
|
+
@api_customer.subscription.canceled_at.should be
|
256
|
+
end
|
257
|
+
|
258
|
+
describe "When I resubscribe them" do
|
259
|
+
before :all do
|
260
|
+
@customer = Factory :new_customer, :email => @api_customer.email, :code => @api_customer.email
|
261
|
+
@customer.save
|
262
|
+
end
|
263
|
+
|
264
|
+
it_should_behave_like "a Customer record from CheddarGetter"
|
265
|
+
it_should_behave_like "an active Subscription record from CheddarGetter"
|
266
|
+
end
|
267
|
+
end
|
268
|
+
end
|
269
|
+
end
|
270
|
+
end
|
271
|
+
|
272
|
+
describe "#save" do
|
273
|
+
describe "When I save a customer" do
|
274
|
+
before :all do
|
275
|
+
@customer = Factory :new_customer
|
276
|
+
@customer.save
|
277
|
+
end
|
278
|
+
|
279
|
+
it_should_behave_like "a Customer record from CheddarGetter"
|
280
|
+
|
281
|
+
describe "When I save it again, with different attributes" do
|
282
|
+
before :all do
|
283
|
+
attributes = Factory.attributes_for :new_customer
|
284
|
+
@customer.first_name = attributes[:first_name]
|
285
|
+
@customer.last_name = attributes[:last_name]
|
286
|
+
@customer.email = attributes[:email]
|
287
|
+
@customer.company = attributes[:company]
|
288
|
+
@customer.save
|
289
|
+
end
|
290
|
+
|
291
|
+
it_should_behave_like "a Customer record from CheddarGetter"
|
292
|
+
end
|
293
|
+
|
294
|
+
context "When I update subscription information" do
|
295
|
+
before :all do
|
296
|
+
@subscription = Mousetrap::Subscription.new(Factory.attributes_for(:alternate_subscription))
|
297
|
+
@credit_card_type = 'mc'
|
298
|
+
@customer.subscription = @subscription
|
299
|
+
@customer.save
|
300
|
+
end
|
301
|
+
|
302
|
+
it_should_behave_like "an active Subscription record from CheddarGetter"
|
303
|
+
end
|
304
|
+
end
|
305
|
+
end
|
306
|
+
|
307
|
+
describe '#switch_to_plan' do
|
308
|
+
describe "Given an existing CheddarGetter customer" do
|
309
|
+
before :all do
|
310
|
+
@customer = Factory :new_customer
|
311
|
+
@customer.save
|
312
|
+
end
|
313
|
+
|
314
|
+
describe 'When I switch plans' do
|
315
|
+
before :all do
|
316
|
+
@customer.switch_to_plan('TEST_2')
|
317
|
+
end
|
318
|
+
|
319
|
+
describe "And I get the customer" do
|
320
|
+
before :all do
|
321
|
+
@api_customer = Mousetrap::Customer[@customer.code]
|
322
|
+
end
|
323
|
+
|
324
|
+
it 'Then they should be on the new plan' do
|
325
|
+
@api_customer.subscription.plan.code.should == 'TEST_2'
|
326
|
+
end
|
327
|
+
end
|
328
|
+
end
|
329
|
+
end
|
330
|
+
end
|
331
|
+
end
|
332
|
+
|
333
|
+
describe Mousetrap::Subscription do
|
334
|
+
describe "Given a customer on CheddarGetter" do
|
335
|
+
before :all do
|
336
|
+
@customer = Factory :new_customer
|
337
|
+
violated "Use a visa for setup" unless @customer.subscription.credit_card_number == '4111111111111111'
|
338
|
+
@customer.save
|
339
|
+
end
|
340
|
+
|
341
|
+
describe "When I update a subscription field" do
|
342
|
+
before :all do
|
343
|
+
Mousetrap::Subscription.update @customer.code, :credit_card_number => '5555555555554444'
|
344
|
+
end
|
345
|
+
|
346
|
+
describe "And I get the customer" do
|
347
|
+
before :all do
|
348
|
+
@api_customer = Mousetrap::Customer[@customer.code]
|
349
|
+
end
|
350
|
+
|
351
|
+
it 'Then I should see the updated field' do
|
352
|
+
@api_customer.subscription.credit_card_last_four_digits.should == '4444'
|
353
|
+
end
|
354
|
+
end
|
355
|
+
end
|
356
|
+
end
|
357
|
+
end
|
358
|
+
end
|
@@ -0,0 +1,108 @@
|
|
1
|
+
# This script is for hacking and playing around.
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../lib/mousetrap'
|
4
|
+
require 'activesupport'
|
5
|
+
require 'factories'
|
6
|
+
require 'ruby-debug'
|
7
|
+
require 'yaml'
|
8
|
+
|
9
|
+
Dir["#{File.dirname(__FILE__)}/../support/**/*.rb"].each {|f| require f}
|
10
|
+
|
11
|
+
settings = YAML.load_file(File.dirname(__FILE__) + '/settings.yml')
|
12
|
+
Mousetrap.authenticate(settings['user'], settings['password'])
|
13
|
+
Mousetrap.product_code = settings['product_code']
|
14
|
+
|
15
|
+
|
16
|
+
def plans
|
17
|
+
all_plans = Mousetrap::Plan.all
|
18
|
+
puts all_plans.to_yaml
|
19
|
+
|
20
|
+
test_plan = Mousetrap::Plan['TEST']
|
21
|
+
puts test_plan.to_yaml
|
22
|
+
end
|
23
|
+
|
24
|
+
def all_customers
|
25
|
+
all_customers = Mousetrap::Customer.all
|
26
|
+
puts all_customers.to_yaml
|
27
|
+
end
|
28
|
+
|
29
|
+
def create_customer
|
30
|
+
customer = Factory :new_customer
|
31
|
+
customer.save
|
32
|
+
|
33
|
+
api_customer = Mousetrap::Customer[customer.code]
|
34
|
+
puts api_customer.to_yaml
|
35
|
+
end
|
36
|
+
|
37
|
+
def destroy_all_customers
|
38
|
+
Mousetrap::Customer.destroy_all
|
39
|
+
end
|
40
|
+
#create_customer
|
41
|
+
|
42
|
+
destroy_all_customers
|
43
|
+
customer = Factory :new_customer
|
44
|
+
customer.save
|
45
|
+
|
46
|
+
api_customer = Mousetrap::Customer[customer.code]
|
47
|
+
puts api_customer.to_yaml
|
48
|
+
puts '-' * 80
|
49
|
+
|
50
|
+
Mousetrap::Subscription.update customer.code, {
|
51
|
+
:billing_first_name => 'x',
|
52
|
+
:billing_last_name => 'y',
|
53
|
+
:credit_card_number => '5555555555554444',
|
54
|
+
:credit_card_expiration_month => '05',
|
55
|
+
:credit_card_expiration_year => '2013',
|
56
|
+
:billing_zip_code => '31415'
|
57
|
+
}
|
58
|
+
|
59
|
+
api_customer = Mousetrap::Customer[customer.code]
|
60
|
+
puts api_customer.to_yaml
|
61
|
+
puts '-' * 80
|
62
|
+
|
63
|
+
#customer_only_fields = Mousetrap::Customer.new \
|
64
|
+
#:first_name => 'first',
|
65
|
+
#:last_name => 'last',
|
66
|
+
#:company => 'company',
|
67
|
+
#:email => 'random@example.com',
|
68
|
+
#:code => customer.code
|
69
|
+
|
70
|
+
#customer_only_fields.save
|
71
|
+
|
72
|
+
#api_customer = Mousetrap::Customer[customer.code]
|
73
|
+
#puts api_customer.to_yaml
|
74
|
+
|
75
|
+
|
76
|
+
#code = "rvhljmvenp@example.com"
|
77
|
+
#api_customer = Mousetrap::Customer[code]
|
78
|
+
##puts api_customer.to_yaml
|
79
|
+
|
80
|
+
#customer = Factory :new_customer
|
81
|
+
#customer.save
|
82
|
+
#api_customer = Mousetrap::Customer[customer.code]
|
83
|
+
|
84
|
+
#puts '-' * 80
|
85
|
+
#p Mousetrap::Customer[customer.code]
|
86
|
+
|
87
|
+
#puts '-' * 80
|
88
|
+
#p Mousetrap::Customer.exists? customer.code
|
89
|
+
|
90
|
+
#puts '-' * 80
|
91
|
+
#p Mousetrap::Customer['cantfindme']
|
92
|
+
|
93
|
+
#puts '-' * 80
|
94
|
+
#p Mousetrap::Customer.exists? 'cantfindme'
|
95
|
+
|
96
|
+
# create_customer
|
97
|
+
|
98
|
+
#code = 'igcuvfehrc@example.com'
|
99
|
+
#api_customer = Mousetrap::Customer[code]
|
100
|
+
#puts api_customer.to_yaml
|
101
|
+
#puts '-' * 80
|
102
|
+
#puts 'cancel'
|
103
|
+
#puts api_customer.cancel
|
104
|
+
#puts '-' * 80
|
105
|
+
#api_customer = Mousetrap::Customer[code]
|
106
|
+
#puts api_customer.to_yaml
|
107
|
+
|
108
|
+
|