conekta-tiempometa 2.4.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (89) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +24 -0
  3. data/.rspec +1 -0
  4. data/CHANGELOG.md +124 -0
  5. data/Dockerfile +44 -0
  6. data/Gemfile +13 -0
  7. data/LICENSE.txt +22 -0
  8. data/README.md +182 -0
  9. data/Rakefile +1 -0
  10. data/conekta.gemspec +29 -0
  11. data/lib/conekta/address.rb +5 -0
  12. data/lib/conekta/card.rb +21 -0
  13. data/lib/conekta/charge.rb +25 -0
  14. data/lib/conekta/conekta_object.rb +109 -0
  15. data/lib/conekta/customer.rb +82 -0
  16. data/lib/conekta/customer_info.rb +5 -0
  17. data/lib/conekta/destination.rb +17 -0
  18. data/lib/conekta/details.rb +5 -0
  19. data/lib/conekta/discount_line.rb +19 -0
  20. data/lib/conekta/error.rb +99 -0
  21. data/lib/conekta/error_details.rb +14 -0
  22. data/lib/conekta/event.rb +9 -0
  23. data/lib/conekta/line_item.rb +21 -0
  24. data/lib/conekta/list.rb +59 -0
  25. data/lib/conekta/log.rb +10 -0
  26. data/lib/conekta/method.rb +4 -0
  27. data/lib/conekta/operations/create.rb +19 -0
  28. data/lib/conekta/operations/create_member.rb +40 -0
  29. data/lib/conekta/operations/custom_action.rb +13 -0
  30. data/lib/conekta/operations/delete.rb +45 -0
  31. data/lib/conekta/operations/find.rb +21 -0
  32. data/lib/conekta/operations/update.rb +11 -0
  33. data/lib/conekta/operations/where.rb +30 -0
  34. data/lib/conekta/order.rb +87 -0
  35. data/lib/conekta/payee.rb +66 -0
  36. data/lib/conekta/payment_method.rb +4 -0
  37. data/lib/conekta/payment_source.rb +17 -0
  38. data/lib/conekta/payout.rb +7 -0
  39. data/lib/conekta/payout_method.rb +17 -0
  40. data/lib/conekta/plan.rb +16 -0
  41. data/lib/conekta/refund.rb +6 -0
  42. data/lib/conekta/requestor.rb +80 -0
  43. data/lib/conekta/resource.rb +54 -0
  44. data/lib/conekta/return.rb +12 -0
  45. data/lib/conekta/shipping_contact.rb +19 -0
  46. data/lib/conekta/shipping_line.rb +20 -0
  47. data/lib/conekta/subscription.rb +25 -0
  48. data/lib/conekta/tax_line.rb +19 -0
  49. data/lib/conekta/token.rb +8 -0
  50. data/lib/conekta/transfer.rb +7 -0
  51. data/lib/conekta/util.rb +136 -0
  52. data/lib/conekta/version.rb +3 -0
  53. data/lib/conekta/webhook.rb +12 -0
  54. data/lib/conekta/webhook_log.rb +4 -0
  55. data/lib/conekta.rb +101 -0
  56. data/lib/ssl_data/ca_bundle.crt +3955 -0
  57. data/locales/en.yml +9 -0
  58. data/locales/es.yml +10 -0
  59. data/readme_files/banner.png +0 -0
  60. data/readme_files/conekta-badge.png +0 -0
  61. data/readme_files/ruby-badge.png +0 -0
  62. data/spec/conekta/1.0.0/.DS_Store +0 -0
  63. data/spec/conekta/1.0.0/card_spec.rb +40 -0
  64. data/spec/conekta/1.0.0/charge_spec.rb +152 -0
  65. data/spec/conekta/1.0.0/customer_spec.rb +147 -0
  66. data/spec/conekta/1.0.0/error_spec.rb +69 -0
  67. data/spec/conekta/1.0.0/event_spec.rb +26 -0
  68. data/spec/conekta/1.0.0/log_spec.rb +20 -0
  69. data/spec/conekta/1.0.0/payout_spec.rb +60 -0
  70. data/spec/conekta/1.0.0/plan_spec.rb +53 -0
  71. data/spec/conekta/1.0.0/token_spec.rb +5 -0
  72. data/spec/conekta/1.0.0/webhook_spec.rb +36 -0
  73. data/spec/conekta/2.0.0/customer_spec.rb +77 -0
  74. data/spec/conekta/2.0.0/discount_line_spec.rb +49 -0
  75. data/spec/conekta/2.0.0/error_spec.rb +61 -0
  76. data/spec/conekta/2.0.0/line_item_spec.rb +53 -0
  77. data/spec/conekta/2.0.0/list_spec.rb +29 -0
  78. data/spec/conekta/2.0.0/order_spec.rb +291 -0
  79. data/spec/conekta/2.0.0/payee_spec.rb +55 -0
  80. data/spec/conekta/2.0.0/shipping_contact_spec.rb +60 -0
  81. data/spec/conekta/2.0.0/shipping_line_spec.rb +53 -0
  82. data/spec/conekta/2.0.0/source_spec.rb +31 -0
  83. data/spec/conekta/2.0.0/tax_line_spec.rb +44 -0
  84. data/spec/conekta/2.0.0/transfer_spec.rb +59 -0
  85. data/spec/conekta_spec.rb +29 -0
  86. data/spec/spec_helper.rb +14 -0
  87. data/spec/support/fixtures/orders.json +1127 -0
  88. data/spec/support/shared_context.rb +49 -0
  89. metadata +229 -0
@@ -0,0 +1,77 @@
1
+ require 'spec_helper'
2
+
3
+ describe Conekta::Customer do
4
+ include_context "API 2.0.0"
5
+ context "updating customers" do
6
+ context "creating submodels" do
7
+ include_context "customer"
8
+
9
+ let(:customer) { Conekta::Customer.create(customer_data) }
10
+
11
+ let(:customer_oxxo) {
12
+ {
13
+ payment_sources: [{
14
+ type: 'oxxo_recurrent',
15
+ expires_at: 157_559_040_0
16
+ }],
17
+ email: 'test@gmail.com',
18
+ name: 'Mario'
19
+ }
20
+ }
21
+
22
+ let(:oxxo_source_params) do
23
+ {
24
+ type: 'oxxo_recurrent',
25
+ expires_at: 157_559_040_0
26
+ }
27
+ end
28
+
29
+ let(:source_params) do
30
+ {
31
+ type: "card",
32
+ token_id: "tok_test_visa_4242"
33
+ }
34
+ end
35
+
36
+ let(:shipping_contact_params) do
37
+ {
38
+ email: "rogue@xmen.org",
39
+ phone: "+5213353319758",
40
+ receiver: "Test Conekta",
41
+ address: {
42
+ street1: "250 Alexis St",
43
+ city: "Red Deer",
44
+ state: "Alberta",
45
+ country: "CA",
46
+ postal_code: "T4N 0B8",
47
+ }
48
+ }
49
+ end
50
+
51
+ it "successfully creates source for customer" do
52
+ customer = Conekta::Customer.create(customer_oxxo)
53
+ source = customer.payment_sources.first
54
+
55
+ expect(source.class.to_s).to eq('Conekta::PaymentSource')
56
+ expect(customer.payment_sources.class.to_s).to eq('Conekta::List')
57
+ expect(source.reference.size).to eq(14)
58
+ end
59
+
60
+ it 'successfully creates oxxo recurrent reference for customer' do
61
+ source = customer.create_offline_recurrent_reference(oxxo_source_params)
62
+
63
+ expect(source.class.to_s).to eq("Conekta::PaymentSource")
64
+ expect(customer.payment_sources.class.to_s).to eq("Conekta::List")
65
+ expect(source.reference.size).to eq(14)
66
+ end
67
+
68
+ it "successfully creates shipping contact for customer" do
69
+ shipping_contact =
70
+ customer.create_shipping_contact(shipping_contact_params)
71
+
72
+ expect(shipping_contact.class.to_s).to eq("Conekta::ShippingContact")
73
+ expect(customer.shipping_contacts.class.to_s).to eq("Conekta::List")
74
+ end
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,49 @@
1
+ require 'spec_helper'
2
+
3
+ describe Conekta::DiscountLine do
4
+ include_context "API 2.0.0"
5
+ include_context "order"
6
+
7
+ let(:discount_lines) do
8
+ [
9
+ {
10
+ code: "Cupon de descuento",
11
+ type: "loyalty",
12
+ amount: 10
13
+ },
14
+ {
15
+ code: "Cupon de descuento",
16
+ type: "loyalty",
17
+ amount: 5
18
+ }
19
+ ]
20
+ end
21
+
22
+ let(:order) do
23
+ Conekta::Order.create(order_data.merge(discount_lines: discount_lines))
24
+ end
25
+
26
+ let(:discount_line) { order.discount_lines.first }
27
+
28
+ context "deleting discount lines" do
29
+ it "successful discount line delete" do
30
+ discount_line.delete
31
+
32
+ expect(discount_line.deleted).to eq(true)
33
+ end
34
+ end
35
+
36
+ context "updating discount lines" do
37
+ it "successful discount line update" do
38
+ discount_line.update(amount: 11)
39
+
40
+ expect(discount_line.amount).to eq(11)
41
+ end
42
+
43
+ it "unsuccessful discount line update" do
44
+ expect {
45
+ discount_line.update(amount: -1)
46
+ }.to raise_error(Conekta::ParameterValidationError)
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,61 @@
1
+ require 'spec_helper'
2
+
3
+ describe Conekta::Error do
4
+ include_context "API 2.0.0"
5
+
6
+ let(:card) { { cards: ["tok_test_visa_4242"] } }
7
+
8
+ it "test no id error" do
9
+ expect{
10
+ Conekta::Customer.find(nil)
11
+ }.to raise_error(Conekta::Error)
12
+ end
13
+
14
+ it "test no connection error" do
15
+ api_url = Conekta::api_base
16
+ Conekta::api_base = 'http://localhost:3001'
17
+
18
+ expect{
19
+ Conekta::Customer.create(card)
20
+ }.to raise_error(Conekta::NoConnectionError)
21
+
22
+ # cleanup
23
+ Conekta::api_base = api_url
24
+ end
25
+
26
+ it "test api error" do
27
+ expect{
28
+ Conekta::Customer.create({
29
+ cards: {
30
+ 0 => "tok_test_visa_4242"
31
+ }
32
+ })
33
+ }.to raise_error(Conekta::ParameterValidationError)
34
+ end
35
+
36
+ it "test parameter validation error" do
37
+ expect{
38
+ Conekta::Order.create({})
39
+ }.to raise_error(Conekta::ParameterValidationError)
40
+ end
41
+
42
+ it "test resource not found error" do
43
+ expect{
44
+ Conekta::Order.find(1)
45
+ }.to raise_error(Conekta::ResourceNotFoundError)
46
+ end
47
+
48
+ it "test authentication error" do
49
+ api_key = Conekta::api_key
50
+ Conekta::api_key = ""
51
+
52
+ expect{
53
+ Conekta::Customer.create({
54
+ cards: ["tok_test_visa_4242"]
55
+ })
56
+ }.to raise_error(Conekta::AuthenticationError)
57
+
58
+ # cleanup
59
+ Conekta::api_key = api_key
60
+ end
61
+ end
@@ -0,0 +1,53 @@
1
+ require 'spec_helper'
2
+
3
+ describe Conekta::LineItem do
4
+ include_context "API 2.0.0"
5
+
6
+ let(:line_items) do
7
+ [{
8
+ name: "Box of Cohiba S1s",
9
+ description: "Imported From Mex.",
10
+ unit_price: 35000,
11
+ quantity: 1,
12
+ tags: ["food", "mexican food"]
13
+ },
14
+ {
15
+ name: "Other item",
16
+ description: "other description",
17
+ unit_price: 35000,
18
+ quantity: 1,
19
+ tags: ["food"]
20
+ }]
21
+ end
22
+ let(:order_data) do
23
+ {
24
+ currency: 'mxn',
25
+ line_items: line_items
26
+ }
27
+ end
28
+ let(:order) { Conekta::Order.create(order_data) }
29
+ let(:line_item) { order.line_items.first }
30
+
31
+ context "deleting line items" do
32
+ it "successful line item delete" do
33
+ line_item.delete
34
+
35
+ expect(line_item.deleted).to eq(true)
36
+ end
37
+ end
38
+
39
+ context "updating line items" do
40
+ it "successful line item update" do
41
+ line_item.update(unit_price: 1000)
42
+
43
+ expect(line_item.unit_price).to eq(1000)
44
+ end
45
+
46
+ it "unsuccessful line item update" do
47
+ expect {
48
+ line_item.update(description: nil)
49
+ }.to raise_error(Conekta::ParameterValidationError)
50
+ end
51
+ end
52
+
53
+ end
@@ -0,0 +1,29 @@
1
+ require 'spec_helper'
2
+
3
+ describe Conekta::List do
4
+
5
+ include_context "API 2.0.0"
6
+
7
+ let(:list) do
8
+ response = JSON.parse(File.read("spec/support/fixtures/orders.json"))
9
+ order_list = Conekta::List.new("Order",response)
10
+ order_list.load_from(response)
11
+ order_list
12
+ end
13
+
14
+ context "moving cursor" do
15
+ it "moves cursor forward" do
16
+ window = Conekta::Order.where({"limit" => 5, "next" => list[9].id})
17
+ expect(window.first.id).to eq(list[10].id)
18
+ window.next(limit: 1)
19
+ expect(window.first.id).to eq(list[15].id)
20
+ end
21
+
22
+ it "moves cursor backwards" do
23
+ window = Conekta::Order.where({"limit" => 5, "next" => list[14].id})
24
+ expect(window.first.id).to eq(list[15].id)
25
+ window.previous(limit: 1)
26
+ expect(window.first.id).to eq(list[14].id)
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,291 @@
1
+ require 'spec_helper'
2
+
3
+ describe Conekta::Order do
4
+ include_context "API 2.0.0"
5
+
6
+ let(:customer_info) do
7
+ {
8
+ name: "John Constantine",
9
+ phone: "+5213353319758",
10
+ email: "hola@hola.com"
11
+ }
12
+ end
13
+
14
+ let(:customer_data) do
15
+ {
16
+ email: "hola@hola.com",
17
+ name: "John Constantine",
18
+ cards: ["tok_test_visa_4242"]
19
+ }
20
+ end
21
+
22
+ let(:charges) do
23
+ [{
24
+ payment_method: {
25
+ type: "oxxo_cash",
26
+ expires_at: (Time.now + 3600).to_i
27
+ },
28
+ amount: 35000
29
+ }]
30
+ end
31
+
32
+ let(:card_charges) do
33
+ [{
34
+ payment_method: {
35
+ type: "card",
36
+ token_id: "tok_test_visa_4242",
37
+ },
38
+ amount: 35000
39
+ }]
40
+ end
41
+
42
+ let(:line_items) do
43
+ [{
44
+ name: "Box of Cohiba S1s",
45
+ description: "Imported From Mex.",
46
+ unit_price: 35000,
47
+ quantity: 1,
48
+ tags: ["food", "mexican food"]
49
+ }]
50
+ end
51
+
52
+ let(:order_data) do
53
+ {
54
+ currency: 'mxn',
55
+ line_items: line_items,
56
+ metadata: {
57
+ test: true
58
+ }
59
+ }
60
+ end
61
+
62
+ let(:order_data_with_charges) do
63
+ order_data.merge(charges: charges)
64
+ end
65
+
66
+ let(:order_data_with_card_charges) do
67
+ order_data.merge(charges: card_charges)
68
+ end
69
+
70
+ context "creating orders" do
71
+ it "successful order create" do
72
+ order = Conekta::Order.create(order_data)
73
+
74
+ expect(order).to be_a(Conekta::Order)
75
+ expect(order.metadata["test"]).to eq(true)
76
+ end
77
+
78
+ it "unsuccessful order create" do
79
+ expect{
80
+ Conekta::Order.create({})
81
+ }.to raise_error(Conekta::ParameterValidationError)
82
+ end
83
+
84
+ context "with charges" do
85
+ it "successful order create" do
86
+ order = Conekta::Order.create(order_data_with_charges.
87
+ merge(customer_info: customer_info))
88
+
89
+ expect(order).to be_a(Conekta::Order)
90
+ end
91
+
92
+ context "unsuccessful order create" do
93
+ it "with missing customer_info and customer_id" do
94
+ expect{
95
+ Conekta::Order.create(order_data_with_charges)
96
+ }.to raise_error(Conekta::ParameterValidationError)
97
+ end
98
+ end
99
+ end
100
+ end
101
+
102
+ context "updating orders" do
103
+ let(:order) { Conekta::Order.create(order_data) }
104
+
105
+ it "successful order update" do
106
+ order.update(charges: charges, customer_info: customer_info)
107
+
108
+ expect(order.charges).not_to be_empty
109
+ end
110
+
111
+ it "unsuccessful order update" do
112
+ expect{
113
+ order.update(charges: charges)
114
+ }.to raise_error(Conekta::ParameterValidationError)
115
+ end
116
+ end
117
+
118
+ context "creating submodels" do
119
+ let(:line_item_params) do
120
+ {
121
+ name: "Box of Cohiba S1s",
122
+ description: "Imported From Mex.",
123
+ unit_price: 35000,
124
+ quantity: 1,
125
+ tags: ["food", "mexican food"]
126
+ }
127
+ end
128
+
129
+ let(:tax_line_params) do
130
+ {
131
+ description: "IVA",
132
+ amount: 600
133
+ }
134
+ end
135
+
136
+ let(:shipping_line_params) do
137
+ {
138
+ description: "Otro Shipping",
139
+ amount: 40,
140
+ tracking_number: "TRACK124",
141
+ carrier: "USPS",
142
+ method: "Train",
143
+ }
144
+ end
145
+
146
+ let(:discount_line_params) do
147
+ {
148
+ code: "Cupon de descuento",
149
+ type: "loyalty",
150
+ amount: 10
151
+ }
152
+ end
153
+
154
+ let(:charge_params) do
155
+ {
156
+ payment_method: {
157
+ type: "oxxo_cash",
158
+ expires_at: (Time.now + 3600).to_i
159
+ },
160
+ amount: 35000
161
+ }
162
+ end
163
+
164
+ let(:shipping_contact_params) do
165
+ {
166
+ id: "1jap4jmcjnwh34",
167
+ email: "thomas.logan@xmen.org",
168
+ phone: "+5213353319758",
169
+ receiver: "Marvin Fuller",
170
+ between_streets: "Ackerman Crescent",
171
+ address: {
172
+ street1: "250 Alexis St",
173
+ city: "Red Deer",
174
+ state: "Alberta",
175
+ country: "MX",
176
+ postal_code: "78219",
177
+ residential: true
178
+ }
179
+ }
180
+ end
181
+
182
+ let(:order) { Conekta::Order.create(order_data) }
183
+
184
+ it "successfully creates charge for order" do
185
+ other_params = {
186
+ currency: 'mxn',
187
+ customer_info: {
188
+ name: 'John Constantine',
189
+ phone: '+5213353319758',
190
+ email: 'hola@hola.com'
191
+ }
192
+ }
193
+
194
+ order = Conekta::Order.create(order_data.merge(other_params))
195
+ charge = order.create_charge(charge_params)
196
+
197
+ expect(charge.class.to_s).to eq("Conekta::Charge")
198
+ expect(order.charges.class.to_s).to eq("Conekta::List")
199
+ end
200
+
201
+ it "successfully creates line item for order" do
202
+ line_item = order.create_line_item(line_item_params)
203
+
204
+ expect(line_item.class.to_s).to eq("Conekta::LineItem")
205
+ expect(order.line_items.class.to_s).to eq("Conekta::List")
206
+ end
207
+
208
+ it "successfully creates tax line for order" do
209
+ tax_line = order.create_tax_line(tax_line_params)
210
+ new_tax_line = order.create_tax_line(description: "ISR", amount: 2)
211
+
212
+ expect(tax_line.class.to_s).to eq("Conekta::TaxLine")
213
+ expect(order.tax_lines.class.to_s).to eq("Conekta::List")
214
+ expect(order.tax_lines.total).to eq(2)
215
+ end
216
+
217
+ it "successfully creates shipping line for order" do
218
+ shipping_line = order.create_shipping_line(shipping_line_params)
219
+
220
+ expect(shipping_line.class.to_s).to eq("Conekta::ShippingLine")
221
+ expect(order.shipping_lines.class.to_s).to eq("Conekta::List")
222
+ end
223
+
224
+ it "successfully creates discount line for order" do
225
+ discount_line = order.create_discount_line(discount_line_params)
226
+
227
+ discount_line.update({amount: 1000})
228
+
229
+ expect(discount_line.class.to_s).to eq("Conekta::DiscountLine")
230
+ expect(order.discount_lines.class.to_s).to eq("Conekta::List")
231
+ end
232
+
233
+ it "successfully create shipping contact for order" do
234
+ shipping_contact = order.create_shipping_contact(shipping_contact_params)
235
+
236
+ expect(shipping_contact.class.to_s).to eq("Conekta::ShippingContact")
237
+ end
238
+ end
239
+
240
+ context "get" do
241
+ it "successfully gets order" do
242
+ id = Conekta::Order.create(order_data).id
243
+
244
+ order = Conekta::Order.find(id)
245
+
246
+ expect(order).to be_a(Conekta::Order)
247
+ end
248
+
249
+ it "test successful where" do
250
+ orders = Conekta::Order.where
251
+
252
+ expect(orders).to be_a(Conekta::List)
253
+ expect(orders.elements_type).to eq("Order")
254
+ expect(orders.first).to be_a(Conekta::Order)
255
+ end
256
+ end
257
+
258
+ it "successfully captures an order" do
259
+ order = Conekta::Order.create(order_data_with_card_charges.
260
+ merge(customer_info: customer_info, pre_authorize: true))
261
+ expect(order.payment_status).to eq("pre_authorized")
262
+
263
+ order.authorize_capture
264
+
265
+ expect(order.payment_status).to eq("paid")
266
+ end
267
+
268
+ context "refund" do
269
+ let(:order_refund) do
270
+ {
271
+ amount: 35000,
272
+ reason: "requested_by_client"
273
+ }
274
+ end
275
+
276
+ it "test successful refund" do
277
+ order = Conekta::Order.create(order_data_with_card_charges.
278
+ merge(customer_info: customer_info).
279
+ merge(line_items: line_items))
280
+ begin
281
+ order.refund(order_refund)
282
+ rescue Exception => e
283
+ puts e.details.map{|d| d.message}
284
+ end
285
+
286
+ refunded_order = Conekta::Order.find(order.id)
287
+
288
+ expect(refunded_order.payment_status).to eq("refunded")
289
+ end
290
+ end
291
+ end
@@ -0,0 +1,55 @@
1
+ require 'spec_helper'
2
+ # require 'conekta'
3
+
4
+ describe Conekta::Payee do
5
+ include_context "API 2.0.0"
6
+
7
+ describe 'an instance' do
8
+ let(:payee_attributes) do
9
+ {
10
+ name: "John Doe", email: "j_d@radcorp2.com", phone: "555555555",
11
+ billing_address:{
12
+ company_name: 'Rad Corp',
13
+ tax_id: 'tax121212abc',
14
+ street1: 'Guadalupe 73',
15
+ street2: 'Despacho 32',
16
+ street3: 'Condesa',
17
+ city: 'Cuauhtemoc',
18
+ state: 'DF',
19
+ country: 'MX',
20
+ postal_code: '06100'
21
+ }
22
+ }
23
+ end
24
+
25
+ it 'creates successfully' do
26
+ payee = Conekta::Payee.create(payee_attributes)
27
+ expect(payee).to be_a(Conekta::Payee)
28
+ end
29
+
30
+ describe ':payout_methods' do
31
+ let!(:payee) { Conekta::Payee.create(payee_attributes) }
32
+ let(:bank_attributes) do
33
+ {
34
+ type: "bank_account",
35
+ account_number: '072225008217746674',
36
+ account_holder_name: 'J D - Radcorp'
37
+ }
38
+ end
39
+
40
+ it 'can create payout methods' do
41
+ payout_method = payee.create_destination(bank_attributes)
42
+ expect(payout_method).to be_a(Conekta::Destination)
43
+ # I'm sure this should be a Conekta::PayoutMethod,
44
+ # just not sure why it's reporting back as a Conekta::Method
45
+ end
46
+
47
+ it 'assigns default_payout_method_id to first payout method created' do
48
+ payout_method = payee.create_destination(bank_attributes)
49
+ # refetch the payee object
50
+ payee = Conekta::Payee.find(payout_method.payee_id)
51
+ expect(payee.default_destination_id).to eq(payout_method.id)
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,60 @@
1
+ require 'spec_helper'
2
+
3
+ describe Conekta::ShippingContact do
4
+ include_context "API 2.0.0"
5
+ include_context "customer"
6
+
7
+ let(:shipping_contacts) do
8
+ [{
9
+ receiver: "John Williams",
10
+ phone: "+5213353319758",
11
+ address: {
12
+ street1: "250 Alexis St",
13
+ city: "Red Deer",
14
+ state: "Alberta",
15
+ country: "CA",
16
+ postal_code: "T4N 0B8",
17
+ }
18
+ },
19
+ {
20
+ receiver: "John Williams",
21
+ phone: "+5213353319758",
22
+ address: {
23
+ street1: "250 Alexis St",
24
+ city: "Red Deer",
25
+ state: "Alberta",
26
+ country: "CA",
27
+ postal_code: "T4N 0B8",
28
+ }
29
+ }]
30
+ end
31
+
32
+ let(:customer) do
33
+ Conekta::Customer.create(customer_data.
34
+ merge(shipping_contacts: shipping_contacts))
35
+ end
36
+
37
+ let(:shipping_contact) { customer.shipping_contacts.first }
38
+
39
+ context "deleting shipping contacts" do
40
+ it "successful shipping contact delete" do
41
+ shipping_contact.delete
42
+
43
+ expect(shipping_contact.deleted).to eq(true)
44
+ end
45
+ end
46
+
47
+ context "updating shipping contacts" do
48
+ it "successful shipping contact update" do
49
+ shipping_contact.update(receiver: "Mario Moreno")
50
+
51
+ expect(shipping_contact.receiver).to eq("Mario Moreno")
52
+ end
53
+
54
+ it "unsuccessful shipping contact update" do
55
+ expect {
56
+ shipping_contact.update(receiver: 123)
57
+ }.to raise_error(Conekta::Error)
58
+ end
59
+ end
60
+ end