paypal-sdk-rest 0.9.1 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,227 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Subscription" do
4
+
5
+ PlanAttributes = {
6
+ "name" => "T-Shirt of the Month Club Plan",
7
+ "description" => "Template creation.",
8
+ "type" => "fixed",
9
+ "payment_definitions" => [
10
+ {
11
+ "name" => "Regular Payments",
12
+ "type" => "REGULAR",
13
+ "frequency" => "MONTH",
14
+ "frequency_interval" => "2",
15
+ "amount" => {
16
+ "value" => "100",
17
+ "currency" => "USD"
18
+ },
19
+ "cycles" => "12",
20
+ "charge_models" => [
21
+ {
22
+ "type" => "SHIPPING",
23
+ "amount" => {
24
+ "value" => "10",
25
+ "currency" => "USD"
26
+ }
27
+ },
28
+ {
29
+ "type" => "TAX",
30
+ "amount" => {
31
+ "value" => "12",
32
+ "currency" => "USD"
33
+ }
34
+ }
35
+ ]
36
+ }
37
+ ],
38
+ "merchant_preferences" => {
39
+ "setup_fee" => {
40
+ "value" => "1",
41
+ "currency" => "USD"
42
+ },
43
+ "return_url" => "http://www.return.com",
44
+ "cancel_url" => "http://www.cancel.com",
45
+ "auto_bill_amount" => "YES",
46
+ "initial_fail_amount_action" => "CONTINUE",
47
+ "max_fail_attempts" => "0"
48
+ }
49
+ }
50
+
51
+ AgreementAttributes = {
52
+ "name" => "T-Shirt of the Month Club Agreement",
53
+ "description" => "Agreement for T-Shirt of the Month Club Plan",
54
+ "start_date" => "2015-02-19T00:37:04Z",
55
+ "payer" => {
56
+ "payment_method" => "paypal"
57
+ },
58
+ "shipping_address" => {
59
+ "line1" => "111 First Street",
60
+ "city" => "Saratoga",
61
+ "state" => "CA",
62
+ "postal_code" => "95070",
63
+ "country_code" => "US"
64
+ }
65
+ }
66
+
67
+ describe "BillingPlan", :integration => true do
68
+ it "Create" do
69
+ # create access token and then create a plan
70
+ $api = API.new
71
+ plan = Plan.new(PlanAttributes.merge( :token => $api.token ))
72
+ Plan.api.should_not eql plan.api
73
+ plan.create
74
+
75
+ # make sure the transaction was successful
76
+ $plan_id = plan.id
77
+ plan.error.should be_nil
78
+ plan.id.should_not be_nil
79
+ end
80
+
81
+ it "Update" do
82
+ # create a new plan to update
83
+ plan = Plan.new(PlanAttributes)
84
+ expect(plan.create).to be_truthy
85
+
86
+ # set up a patch request
87
+ patch = Patch.new
88
+ patch.op = "replace"
89
+ patch.path = "/";
90
+ patch.value = { :state => "ACTIVE" }
91
+
92
+ # the patch request should be successful
93
+ expect(plan.update( patch )).to be_truthy
94
+ end
95
+
96
+ it "List" do
97
+ # list all billing plans
98
+ plan_list = Plan.all
99
+ plan_list.error.should be_nil
100
+ plan_list.plans.count.should > 1
101
+ end
102
+
103
+ it "Delete" do
104
+ # create a plan to delete
105
+ plan = Plan.new(PlanAttributes.merge( :token => $api.token ))
106
+ plan.create
107
+ plan_id = plan.id
108
+
109
+ # construct a patch object that will be used for deletion
110
+ patch = Patch.new
111
+ patch.op = "replace"
112
+ patch.path = "/"
113
+ patch.value = { "state" => "DELETED" }
114
+
115
+ # send delete request
116
+ plan.update(patch)
117
+
118
+ # make sure the plan has been deleted
119
+ plan = Plan.find(plan_id)
120
+ plan.id.should_not eq plan_id
121
+ end
122
+ end
123
+
124
+ describe "BillingAgreement", :integration => true do
125
+
126
+ it "Create" do
127
+ # first, create an active plan to be added to agreement
128
+ api = API.new
129
+ plan = Plan.new(PlanAttributes)
130
+ expect(plan.create).to be_truthy
131
+
132
+ # first, create an agreement
133
+ $agreement = Agreement.new(AgreementAttributes)
134
+ $agreement.plan = Plan.new( :id => "P-1K47639161110773GYDKTWIA" )
135
+ $agreement.shipping_address = nil
136
+
137
+ # verify newly created agreement
138
+ expect($agreement.create).to be_truthy
139
+ expect($agreement.id).to be_nil
140
+ expect($agreement.token).not_to be_nil
141
+ expect($agreement.name).to eq("T-Shirt of the Month Club Agreement")
142
+ end
143
+
144
+ #####################################
145
+ # The following tests are disabled due to them requiring an active billing agreement or buyer's approval.
146
+ # Most of them require an agreement ID, which is returned after executing agreement.
147
+ # And agreement execution requires buyer's approval.
148
+ #####################################
149
+
150
+ xit "Execute" do
151
+ # Use this call to execute an agreement after the buyer approves it.
152
+ expect($agreement.execute).to be_truthy
153
+ end
154
+
155
+ xit "Get" do
156
+ # this call needs an agreement ID of the agreement to be retrieved
157
+ agreement = Agreement.find($agreement.id)
158
+ expect(agreement.id).to eq($agreement.id)
159
+ expect(agreement.description).to eq("Agreement for T-Shirt of the Month Club Plan")
160
+ expect(agreement.start_date).to eq("2015-02-19T00:37:04Z")
161
+ expect(agreement.plan).not_to be_nil
162
+ end
163
+
164
+ xit "Update" do
165
+ # get the agreement to update
166
+ api = API.new
167
+ plan = Plan.new(PlanAttributes)
168
+ expect(plan.create).to be_truthy
169
+
170
+ # first, create an agreement
171
+ agreement = Agreement.new(AgreementAttributes)
172
+ agreement.plan = Plan.new( :id => "P-1K47639161110773GYDKTWIA" )
173
+ expect(agreement.create).to be_truthy
174
+
175
+
176
+ # create an update for the agreement
177
+ random_string = (0...8).map { (65 + rand(26)).chr }.join
178
+ patch = Patch.new
179
+ patch.op = "replace"
180
+ patch.path = "/"
181
+ patch.value = { "description" => random_string }
182
+
183
+ # send update request
184
+ response = agreement.update(patch)
185
+
186
+ # verify the agreement update was successful
187
+ expect(response).to be_truthy
188
+ updated_agreement = Agreement.get($agreement.id)
189
+ expect(updated_agreement.id).to eq($agreement.id)
190
+ expect(random_string).to eq(updated_agreement.description)
191
+ end
192
+
193
+ xit "Suspend" do
194
+ # set the id of an active agreement here
195
+ agreement_id = ""
196
+ agreement = Agreement.find(agreement_id)
197
+
198
+ state_descriptor = AgreementStateDescriptor.new( :note => "Suspending the agreement" )
199
+ expect( agreement.suspend(state_descriptor) ).to be_truthy
200
+ end
201
+
202
+ xit "Reactivate" do
203
+ # set the id of a suspended agreement here
204
+ agreement_id = ""
205
+ agreement = Agreement.find(agreement_id)
206
+
207
+ state_descriptor = AgreementStateDescriptor.new( :note => "Re-activating the agreement" )
208
+ expect( agreement.re_activate(state_descriptor) ).to be_truthy
209
+ end
210
+
211
+ xit "Search" do
212
+ transactions = Agreement.transactions($agreement.id, "2015-01-01", "2015-01-10")
213
+ expect(transactions).not_to be_nil
214
+ expect(transactions.agreement_transaction_list).not_to be_empty
215
+ end
216
+
217
+ xit "Cancel" do
218
+ # set the id of an agreement here
219
+ agreement_id = ""
220
+ agreement = Agreement.find(agreement_id)
221
+
222
+ state_descriptor = AgreementStateDescriptor.new( :note => "Cancelling the agreement" )
223
+ expect( agreement.cancel(state_descriptor) ).to be_truthy
224
+ end
225
+
226
+ end
227
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: paypal-sdk-rest
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.1
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - PayPal
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-19 00:00:00.000000000 Z
11
+ date: 2015-01-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: paypal-sdk-core
@@ -67,6 +67,7 @@ files:
67
67
  - spec/log/http.log
68
68
  - spec/payments_examples_spec.rb
69
69
  - spec/spec_helper.rb
70
+ - spec/subscription_examples_spec.rb
70
71
  - spec/web_profile_examples_spec.rb
71
72
  homepage: https://developer.paypal.com
72
73
  licenses:
@@ -101,4 +102,5 @@ test_files:
101
102
  - spec/log/http.log
102
103
  - spec/payments_examples_spec.rb
103
104
  - spec/spec_helper.rb
105
+ - spec/subscription_examples_spec.rb
104
106
  - spec/web_profile_examples_spec.rb