Builds for
1 pipeline
failed
in
0 seconds
Updates on var specs and gem modifications
Showing
7 changed files
with
58 additions
and
34 deletions
1 | #!/usr/bin/env ruby | 1 | #!/usr/bin/env ruby |
2 | # frozen_string_literal: true | 2 | # frozen_string_literal: true |
3 | - | 3 | +require 'pry' |
4 | require 'bundler/setup' | 4 | require 'bundler/setup' |
5 | require 'active_record' | 5 | require 'active_record' |
6 | require 'active_support' | 6 | require 'active_support' |
... | @@ -9,9 +9,10 @@ require 'var' | ... | @@ -9,9 +9,10 @@ require 'var' |
9 | require_relative '../spec/mocks/var_database_mock.rb' | 9 | require_relative '../spec/mocks/var_database_mock.rb' |
10 | require_relative '../spec/mocks/var_models_mock.rb' | 10 | require_relative '../spec/mocks/var_models_mock.rb' |
11 | 11 | ||
12 | +Time.zone = 'America/Monterrey' | ||
12 | ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: ':memory:') | 13 | ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: ':memory:') |
13 | ActiveRecord::Schema.verbose = false | 14 | ActiveRecord::Schema.verbose = false |
14 | VarDatabaseMock.setup_db | 15 | VarDatabaseMock.setup_db |
15 | 16 | ||
16 | -require 'pry' | 17 | + |
17 | Pry.start | 18 | Pry.start | ... | ... |
... | @@ -26,11 +26,8 @@ module ActsAsChargeable | ... | @@ -26,11 +26,8 @@ module ActsAsChargeable |
26 | def charge_with_conekta(options) | 26 | def charge_with_conekta(options) |
27 | charge = conekta_charge(options) | 27 | charge = conekta_charge(options) |
28 | amount = charge.amount / 100.0 | 28 | amount = charge.amount / 100.0 |
29 | - fee = charge.fee / 100.0 | ||
30 | update_columns(var_status: charge.status, var_id: charge.id, | 29 | update_columns(var_status: charge.status, var_id: charge.id, |
31 | - var_service: 'conekta', var_fee: fee, | 30 | + var_service: 'conekta') |
32 | - var_paid_amount: amount, | ||
33 | - var_payment_method: charge.payment_method.object) | ||
34 | update_conekta_barcode(charge) if options[:conekta_type] == 'oxxo' | 31 | update_conekta_barcode(charge) if options[:conekta_type] == 'oxxo' |
35 | if var_payed? | 32 | if var_payed? |
36 | time = Time.zone.now | 33 | time = Time.zone.now |
... | @@ -63,7 +60,7 @@ module ActsAsChargeable | ... | @@ -63,7 +60,7 @@ module ActsAsChargeable |
63 | { card: options[:card_token] } | 60 | { card: options[:card_token] } |
64 | elsif options[:conekta_type] == 'oxxo' | 61 | elsif options[:conekta_type] == 'oxxo' |
65 | { cash: { type: 'oxxo', | 62 | { cash: { type: 'oxxo', |
66 | - expires_at: (Time.zone.today + 3.days).strftime('%Y-%m-%d') } } | 63 | + expires_at: (Time.zone.now + 3.days).strftime('%Y-%m-%d') } } |
67 | end | 64 | end |
68 | end | 65 | end |
69 | 66 | ... | ... |
... | @@ -15,6 +15,29 @@ describe Var::ConektaHandler do | ... | @@ -15,6 +15,29 @@ describe Var::ConektaHandler do |
15 | var | 15 | var |
16 | } | 16 | } |
17 | 17 | ||
18 | + # TODO: Probar errores en Var.create_charge | ||
19 | + it 'processes oxxo charge' do | ||
20 | + allow_any_instance_of(Product).to receive(:conekta_charge).and_return( | ||
21 | + JSON.parse(ConektaChargeCreateObject::OXXO_CREATE_CHARGE_OBJECT, object_class: OpenStruct)) | ||
22 | + charge = Var.create_charge(:conekta, product, {"conekta_type": "oxxo"}) | ||
23 | + Var::ConektaHandler.analyze(WebHookPostRequest::OXXO_CHARGE_CREATED) | ||
24 | + expect(product.var_status).to eq('pending_payment') | ||
25 | + end | ||
26 | + | ||
27 | + it 'processes card charge' do | ||
28 | + allow_any_instance_of(Product).to receive(:conekta_charge).and_return( | ||
29 | + JSON.parse(ConektaChargeCreateObject::CARD_CREATE_CHARGE_OBJECT, object_class: OpenStruct)) | ||
30 | + charge = Var.create_charge(:conekta, product, {"conekta_type": "card"}) | ||
31 | + Var::ConektaHandler.analyze(WebHookPostRequest::CARD_CHARGE_CREATED) | ||
32 | + expect(product.var_status).to eq('pending_payment') | ||
33 | + end | ||
34 | + | ||
35 | + xit 'processes spei charge' do | ||
36 | + end | ||
37 | + | ||
38 | + it 'processes payout' do | ||
39 | + end | ||
40 | + | ||
18 | it 'processes oxxo payment' do | 41 | it 'processes oxxo payment' do |
19 | Var::ConektaHandler.analyze(WebHookPostRequest::OXXO_CHARGE_CREATED) | 42 | Var::ConektaHandler.analyze(WebHookPostRequest::OXXO_CHARGE_CREATED) |
20 | expect(product.var_status).to eq('paid') | 43 | expect(product.var_status).to eq('paid') |
... | @@ -27,6 +50,9 @@ describe Var::ConektaHandler do | ... | @@ -27,6 +50,9 @@ describe Var::ConektaHandler do |
27 | it 'processes oxxo payment' do | 50 | it 'processes oxxo payment' do |
28 | end | 51 | end |
29 | 52 | ||
53 | + xit 'processes spei payment' do | ||
54 | + end | ||
55 | + | ||
30 | it 'processes payout' do | 56 | it 'processes payout' do |
31 | end | 57 | end |
32 | end | 58 | end | ... | ... |
... | @@ -5,7 +5,7 @@ class VarDatabaseMock | ... | @@ -5,7 +5,7 @@ class VarDatabaseMock |
5 | ActiveRecord::Schema.define(version: 1) do | 5 | ActiveRecord::Schema.define(version: 1) do |
6 | create_table :products do |t| | 6 | create_table :products do |t| |
7 | t.string :code | 7 | t.string :code |
8 | - | 8 | + t.string :name |
9 | t.string :var_status, default: 'pending' | 9 | t.string :var_status, default: 'pending' |
10 | t.string :var_barcode_url | 10 | t.string :var_barcode_url |
11 | t.string :var_barcode | 11 | t.string :var_barcode | ... | ... |
1 | # frozen_string_literal: true | 1 | # frozen_string_literal: true |
2 | class Product < ActiveRecord::Base | 2 | class Product < ActiveRecord::Base |
3 | - acts_as_chargeable | 3 | + acts_as_chargeable conekta: { description: :description, |
4 | + amount: :amount, email: :buyer_mail, | ||
5 | + reference_id: :id } | ||
6 | + def description | ||
7 | + "Producto cool" | ||
8 | + end | ||
9 | + | ||
10 | + def amount | ||
11 | + 134.00 | ||
12 | + end | ||
13 | + | ||
14 | + def buyer_mail | ||
15 | + "compradordelproducto@mimail.com" | ||
16 | + end | ||
17 | + | ||
18 | + def name | ||
19 | + "Nombre del producto" | ||
20 | + end | ||
4 | end | 21 | end | ... | ... |
... | @@ -2,32 +2,13 @@ | ... | @@ -2,32 +2,13 @@ |
2 | module WebHookPostRequest | 2 | module WebHookPostRequest |
3 | CARD_CHARGE_CREATED = { "data": { "object": { "id": '5511d4ce2412294cf6000081', "livemode": false, "created_at": 1_427_231_950, "status": 'pending_payment', "currency": 'MXN', "description": 'Stogies', "reference_id": '9839-wolf_pack', "failure_code": nil, "failure_message": nil, "monthly_installments": nil, "object": 'charge', "amount": 20_000, "paid_at": nil, "fee": 963, "customer_id": '', "refunds": [], "payment_method": { "name": 'Jorge Lopez', "exp_month": '12', "exp_year": '19', "auth_code": nil, "object": 'card_payment', "last4": '4242', "brand": 'visa' }, "details": { "name": nil, "phone": nil, "email": nil, "line_items": [] } }, "previous_attributes": {} }, "livemode": false, "webhook_status": 'pending', "id": '5511d4ce2412294cf6000084', "object": 'event', "type": 'charge.created', "created_at": 1_427_231_950, "webhook_logs": [{ "id": 'webhl_nPzGMBeQmMUu7aQ', "url": 'http://requestb.in/1em0jsx1', "failed_attempts": 0, "last_http_response_status": -1, "object": 'webhook_log', "last_attempted_at": 0 }] }.freeze | 3 | CARD_CHARGE_CREATED = { "data": { "object": { "id": '5511d4ce2412294cf6000081', "livemode": false, "created_at": 1_427_231_950, "status": 'pending_payment', "currency": 'MXN', "description": 'Stogies', "reference_id": '9839-wolf_pack', "failure_code": nil, "failure_message": nil, "monthly_installments": nil, "object": 'charge', "amount": 20_000, "paid_at": nil, "fee": 963, "customer_id": '', "refunds": [], "payment_method": { "name": 'Jorge Lopez', "exp_month": '12', "exp_year": '19', "auth_code": nil, "object": 'card_payment', "last4": '4242', "brand": 'visa' }, "details": { "name": nil, "phone": nil, "email": nil, "line_items": [] } }, "previous_attributes": {} }, "livemode": false, "webhook_status": 'pending', "id": '5511d4ce2412294cf6000084', "object": 'event', "type": 'charge.created', "created_at": 1_427_231_950, "webhook_logs": [{ "id": 'webhl_nPzGMBeQmMUu7aQ', "url": 'http://requestb.in/1em0jsx1', "failed_attempts": 0, "last_http_response_status": -1, "object": 'webhook_log', "last_attempted_at": 0 }] }.freeze |
4 | 4 | ||
5 | - OXXO_CHARGE_CREATED = { | 5 | + OXXO_CHARGE_CREATED = {"data":{"object":{"id":"5514803f241229981e0022e6","livemode":false,"created_at":1427406911,"status":"pending_payment","currency":"MXN","description":"Stogies","reference_id":"9839-wolf_pack","failure_code":nil,"failure_message":nil,"monthly_installments":nil,"object":"charge","amount":20000,"paid_at":nil,"fee":812,"customer_id":"","refunds":[],"payment_method":{"barcode":"38100000000042290121213001160013","barcode_url":"http://s3.amazonaws.com/cash_payment_barcodes/38100000000042290121213001160013.png","object":"cash_payment","type":"oxxo","expires_at":1430006400,"store_name":"OXXO"},"details":{"name":"Wolverine","phone":"403-342-0642","email":"logan@x-men.org","line_items":[]}},"previous_attributes":{}},"livemode":false,"webhook_status":"pending","id":"5514803f241229981e0022e9","object":"event","type":"charge.created","created_at":1427406911,"webhook_logs":[{"id":"webhl_PBmYvkfdNDYKezJ","url":"http://requestb.in/u3n4ywu3","failed_attempts":0,"last_http_response_status":-1,"object":"webhook_log","last_attempted_at":0}]}.freeze |
6 | - "data": { | ||
7 | - "object": { | ||
8 | - "id":"5514803f241229981e0022e6", "livemode":false, | ||
9 | - "created_at":1427406911, "status":"pending_payment", "currency":"MXN", | ||
10 | - "description":"Stogies", "reference_id":"9839-wolf_pack", | ||
11 | - "failure_code":nil, "failure_message":nil, "monthly_installments":nil, | ||
12 | - "object":"charge", "amount":20000, "paid_at":nil, "fee":812, | ||
13 | - "customer_id":"", "refunds":[], "payment_method": { | ||
14 | - "barcode":"38100000000042290121213001160013", | ||
15 | - "barcode_url":"http://s3.amazonaws.com/cash_payment_barcodes/" + | ||
16 | - "38100000000042290121213001160013.png", | ||
17 | - "object":"cash_payment", "type":"oxxo", "expires_at":1430006400, | ||
18 | - "store_name":"OXXO" | ||
19 | - }, "details": { | ||
20 | - "name":"Wolverine", "phone":"403-342-0642", "email":"logan@x-men.org", | ||
21 | - "line_items":[] | ||
22 | - } | ||
23 | - }, "previous_attributes":{}}, "livemode":false, "webhook_status":"pending", | ||
24 | - "id":"5514803f241229981e0022e9", "object":"event", "type":"charge.created", | ||
25 | - "created_at":1427406911, "webhook_logs":[ | ||
26 | - {"id":"webhl_PBmYvkfdNDYKezJ", "url":"http://requestb.in/u3n4ywu3", | ||
27 | - "failed_attempts":0, "last_http_response_status":-1, | ||
28 | - "object":"webhook_log", "last_attempted_at":0}]}.freeze | ||
29 | 6 | ||
30 | - SPEI_CHARGE_CREATED = { "data": { "object": { "id": '551499322412292eec002159', "livemode": false, "created_at": 1_427_413_298, "status": 'pending_payment', "currency": 'MXN', "description": 'Stogies', "reference_id": '9839-wolf_pack', "failure_code": nil, "failure_message": nil, "monthly_installments": nil, "object": 'charge', "amount": 20_000, "paid_at": nil, "fee": 928, "customer_id": '', "refunds": [], "payment_method": { "clabe": '646180111800012432', "bank": 'STP', "issuing_account_holder": nil, "issuing_account_tax_id": nil, "issuing_account_bank": nil, "issuing_account_number": nil, "receiving_account_holder": nil, "receiving_account_tax_id": nil, "receiving_account_number": '646180111800012432', "receiving_account_bank": 'STP', "reference_number": nil, "description": nil, "tracking_code": nil, "executed_at": nil, "object": 'bank_transfer_payment', "type": 'spei', "expires_at": 1_435_189_298 }, "details": { "name": 'Wolverine', "phone": '403-342-0642', "email": 'logan@x-men.org', "line_items": [] } }, "previous_attributes": {} }, "livemode": false, "webhook_status": 'pending', "id": '551499322412292eec00215c', "object": 'event', "type": 'charge.created', "created_at": 1_427_413_298, "webhook_logs": [{ "id": 'webhl_ENPXoFkKWyDqTAt', "url": 'http://requestb.in/151xj4r1', "failed_attempts": 0, "last_http_response_status": -1, "object": 'webhook_log', "last_attempted_at": 1_427_413_285 }] } | 7 | + SPEI_CHARGE_CREATED = { "data": { "object": { "id": '551499322412292eec002159', "livemode": false, "created_at": 1_427_413_298, "status": 'pending_payment', "currency": 'MXN', "description": 'Stogies', "reference_id": '9839-wolf_pack', "failure_code": nil, "failure_message": nil, "monthly_installments": nil, "object": 'charge', "amount": 20_000, "paid_at": nil, "fee": 928, "customer_id": '', "refunds": [], "payment_method": { "clabe": '646180111800012432', "bank": 'STP', "issuing_account_holder": nil, "issuing_account_tax_id": nil, "issuing_account_bank": nil, "issuing_account_number": nil, "receiving_account_holder": nil, "receiving_account_tax_id": nil, "receiving_account_number": '646180111800012432', "receiving_account_bank": 'STP', "reference_number": nil, "description": nil, "tracking_code": nil, "executed_at": nil, "object": 'bank_transfer_payment', "type": 'spei', "expires_at": 1_435_189_298 }, "details": { "name": 'Wolverine', "phone": '403-342-0642', "email": 'logan@x-men.org', "line_items": [] } }, "previous_attributes": {} }, "livemode": false, "webhook_status": 'pending', "id": '551499322412292eec00215c', "object": 'event', "type": 'charge.created', "created_at": 1_427_413_298, "webhook_logs": [{ "id": 'webhl_ENPXoFkKWyDqTAt', "url": 'http://requestb.in/151xj4r1', "failed_attempts": 0, "last_http_response_status": -1, "object": 'webhook_log', "last_attempted_at": 1_427_413_285 }] }.freeze |
31 | 8 | ||
32 | CARD_CHARGE_PAID = { "data": { "object": { "id": '5511d4ce2412294cf6000081', "livemode": false, "created_at": 1_427_231_950, "status": 'paid', "currency": 'MXN', "description": 'Stogies', "reference_id": '9839-wolf_pack', "failure_code": nil, "failure_message": nil, "monthly_installments": nil, "object": 'charge', "amount": 20_000, "paid_at": 1_427_231_952, "fee": 963, "customer_id": '', "refunds": [], "payment_method": { "name": 'Jorge Lopez', "exp_month": '12', "exp_year": '19', "auth_code": '000000', "object": 'card_payment', "last4": '4242', "brand": 'visa' }, "details": { "name": nil, "phone": nil, "email": nil, "line_items": [] } }, "previous_attributes": { "payment_method": {} } }, "livemode": false, "webhook_status": 'pending', "id": '5511d4d02412294cf6000088', "object": 'event', "type": 'charge.paid', "created_at": 1_427_231_952, "webhook_logs": [{ "id": 'webhl_m5kgkhmgETe6Y4s', "url": 'http://requestb.in/1em0jsx1', "failed_attempts": 0, "last_http_response_status": -1, "object": 'webhook_log', "last_attempted_at": 0 }] }.freeze | 9 | CARD_CHARGE_PAID = { "data": { "object": { "id": '5511d4ce2412294cf6000081', "livemode": false, "created_at": 1_427_231_950, "status": 'paid', "currency": 'MXN', "description": 'Stogies', "reference_id": '9839-wolf_pack', "failure_code": nil, "failure_message": nil, "monthly_installments": nil, "object": 'charge', "amount": 20_000, "paid_at": 1_427_231_952, "fee": 963, "customer_id": '', "refunds": [], "payment_method": { "name": 'Jorge Lopez', "exp_month": '12', "exp_year": '19', "auth_code": '000000', "object": 'card_payment', "last4": '4242', "brand": 'visa' }, "details": { "name": nil, "phone": nil, "email": nil, "line_items": [] } }, "previous_attributes": { "payment_method": {} } }, "livemode": false, "webhook_status": 'pending', "id": '5511d4d02412294cf6000088', "object": 'event', "type": 'charge.paid', "created_at": 1_427_231_952, "webhook_logs": [{ "id": 'webhl_m5kgkhmgETe6Y4s', "url": 'http://requestb.in/1em0jsx1', "failed_attempts": 0, "last_http_response_status": -1, "object": 'webhook_log', "last_attempted_at": 0 }] }.freeze |
10 | + | ||
11 | + OXXO_CHARGE_PAID = {"data":{"object":{"id":"5514803f241229981e0022e6","livemode":false,"created_at":1427406911,"status":"paid","currency":"MXN","description":"Stogies","reference_id":"9839-wolf_pack","failure_code":nil,"failure_message":nil,"monthly_installments":nil,"object":"charge","amount":20000,"paid_at":1427406913,"fee":812,"customer_id":"","refunds":[],"payment_method":{"barcode":"38100000000042290121213001160013","barcode_url":"http://s3.amazonaws.com/cash_payment_barcodes/38100000000042290121213001160013.png","object":"cash_payment","type":"oxxo","expires_at":1430006400,"store_name":"OXXO"},"details":{"name":"Wolverine","phone":"403-342-0642","email":"logan@x-men.org","line_items":[]}},"previous_attributes":{"status":"pending_payment"}},"livemode":false,"webhook_status":"pending","id":"55148042241229d4fb00b58a","object":"event","type":"charge.paid","created_at":1427406914,"webhook_logs":[{"id":"webhl_yYes9gx41vAj6ag","url":"http://requestb.in/151xj4r1","failed_attempts":0,"last_http_response_status":-1,"object":"webhook_log","last_attempted_at":1427406984}]}.freeze | ||
12 | + | ||
13 | + SPEI_CHARGE_PAID = {"data":{"object":{"id":"551499322412292eec002159","livemode":false,"created_at":1427413298,"status":"paid","currency":"MXN","description":"Stogies","reference_id":"9839-wolf_pack","failure_code":nil,"failure_message":nil,"monthly_installments":nil,"object":"charge","amount":20000,"paid_at":1427413301,"fee":928,"customer_id":"","refunds":[],"payment_method":{"clabe":"646180111800012432","bank":"STP","issuing_account_holder":nil,"issuing_account_tax_id":nil,"issuing_account_bank":nil,"issuing_account_number":nil,"receiving_account_holder":nil,"receiving_account_tax_id":nil,"receiving_account_number":"646180111800012432","receiving_account_bank":"STP","reference_number":nil,"description":nil,"tracking_code":nil,"executed_at":nil,"object":"bank_transfer_payment","type":"spei","expires_at":1435189298},"details":{"name":"Wolverine","phone":"403-342-0642","email":"logan@x-men.org","line_items":[]}},"previous_attributes":{"status":"pending_payment"}},"livemode":false,"webhook_status":"pending","id":"551499352412299fd600b5ce","object":"event","type":"charge.paid","created_at":1427413301,"webhook_logs":[{"id":"webhl_zNFL9UGDd4dY9Hb","url":"http://requestb.in/151xj4r1","failed_attempts":0,"last_http_response_status":-1,"object":"webhook_log","last_attempted_at":1427413289}]}.freeze | ||
33 | end | 14 | end | ... | ... |
... | @@ -7,7 +7,9 @@ require 'var' | ... | @@ -7,7 +7,9 @@ require 'var' |
7 | require 'mocks/var_database_mock' | 7 | require 'mocks/var_database_mock' |
8 | require 'mocks/var_models_mock' | 8 | require 'mocks/var_models_mock' |
9 | require 'mocks/webhooks_requests' | 9 | require 'mocks/webhooks_requests' |
10 | +require 'mocks/conekta_charge_create_objects' | ||
10 | 11 | ||
12 | +Time.zone = 'America/Monterrey' | ||
11 | ActiveRecord::Base.establish_connection(adapter: 'sqlite3', | 13 | ActiveRecord::Base.establish_connection(adapter: 'sqlite3', |
12 | database: ':memory:') | 14 | database: ':memory:') |
13 | ActiveRecord::Schema.verbose = false | 15 | ActiveRecord::Schema.verbose = false | ... | ... |
-
Please register or login to post a comment