Marcelo
Builds for 1 pipeline failed in 0 seconds

Updates on var specs and gem modifications

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
......