Marcelo

fixed merge conflict due to rubocop

# frozen_string_literal: true
source 'https://rubygems.org'
group :development do
......
# frozen_string_literal: true
# A sample Guardfile
# More info at https://github.com/guard/guard#readme
......
# frozen_string_literal: true
require 'rspec/core/rake_task'
require 'bundler/gem_tasks'
......
#!/usr/bin/env ruby
# frozen_string_literal: true
require 'bundler/setup'
require 'active_record'
......
# frozen_string_literal: true
module ActsAsChargeable
extend ActiveSupport::Concern
# Class Methods
......
# frozen_string_literal: true
module Var
class ConektaCardHandler < ConektaHandler
PAYMENT_METHOD_STRING = 'Card'.freeze
PAYMENT_METHOD_STRING = 'Card'
end
end
......
# frozen_string_literal: true
module Var
class ConektaHandler
PAYMENT_METHOD_STRING = 'Conekta_payment'.freeze
PAYMENT_METHOD_STRING = 'Conekta_payment'
class << self
def analyze(event)
......
# frozen_string_literal: true
module Var
class ConektaOxxoHandler < ConektaHandler
PAYMENT_METHOD_STRING = 'OXXO'.freeze
PAYMENT_METHOD_STRING = 'OXXO'
end
end
......
# frozen_string_literal: true
module Var
class ConektaPayoutHandler
class << self
......
# frozen_string_literal: true
module Var
class ConektaSpeiHandler < ConektaHandler
PAYMENT_METHOD_STRING = 'Bank Transfer'.freeze
PAYMENT_METHOD_STRING = 'Bank Transfer'
end
end
......
# frozen_string_literal: true
require 'rails/generators'
# Generator for models
class VarModelGenerator < Rails::Generators::NamedBase
......
# frozen_string_literal: true
require 'var/version'
require 'conekta'
require 'paypal-sdk-rest'
......
# frozen_string_literal: true
# Var Version
module Var
VERSION = '0.3.0'.freeze
VERSION = '0.3.0'
end
......
# frozen_string_literal: true
require 'spec_helper'
describe ActsAsChargeable do
......
# frozen_string_literal: true
require 'spec_helper'
describe Var::ConektaHandler do
......
# frozen_string_literal: true
class VarDatabaseMock
class << self
def setup_db
......
# frozen_string_literal: true
class Product < ActiveRecord::Base
acts_as_chargeable
end
......
module WebHookPostRequest
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":null, "failure_message":null, "monthly_installments":null,
"object":"charge", "amount":20000, "paid_at":null, "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}]}
end
# frozen_string_literal: true
require 'pry'
require 'active_record'
require 'active_support'
......
# frozen_string_literal: true
require 'spec_helper'
describe Var do
......@@ -45,7 +46,6 @@ describe Var do
end
context 'when receiving a webhook from conekta' do
let!(:chargable_product) do
Product.new # Weird hack to enable connection
instance_double('Product')
......@@ -62,58 +62,58 @@ describe Var do
it 'expects a {data: {object: ... }} as an input' do
expect do
Var.conekta_webhook({})
end.to raise_error "Malformed hash received"
end.to raise_error 'Malformed hash received'
end
it 'handles card charge creation' do
params = {"data":{"object":{"id":"5511d4ce2412294cf6000081","livemode":false,"created_at":1427231950,"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":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":1427231950,"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}]}
cardHandler = class_double("Var::ConektaCardHandler").
as_stubbed_const(transfer_nested_constants: true)
params = { "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 }] }
cardHandler = class_double('Var::ConektaCardHandler')
.as_stubbed_const(transfer_nested_constants: true)
expect(cardHandler).to receive(:analyze).with(params)
Var.conekta_webhook(params)
end
it 'handles oxxo charge creation' do
null = nil
params = {"data":{"object":{"id":"5514803f241229981e0022e6","livemode":false,"created_at":1427406911,"status":"pending_payment","currency":"MXN","description":"Stogies","reference_id":"9839-wolf_pack","failure_code":null,"failure_message":null,"monthly_installments":null,"object":"charge","amount":20000,"paid_at":null,"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}]}
oxxoHandler = class_double("Var::ConektaOxxoHandler").
as_stubbed_const(transfer_nested_constants: true)
params = { "data": { "object": { "id": '5514803f241229981e0022e6', "livemode": false, "created_at": 1_427_406_911, "status": 'pending_payment', "currency": 'MXN', "description": 'Stogies', "reference_id": '9839-wolf_pack', "failure_code": null, "failure_message": null, "monthly_installments": null, "object": 'charge', "amount": 20_000, "paid_at": null, "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": 1_430_006_400, "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": 1_427_406_911, "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 }] }
oxxoHandler = class_double('Var::ConektaOxxoHandler')
.as_stubbed_const(transfer_nested_constants: true)
expect(oxxoHandler).to receive(:analyze).with(params)
Var.conekta_webhook(params)
end
it 'handles SPEI charge creation' do
null = nil
params = {"data":{"object":{"id":"551499322412292eec002159","livemode":false,"created_at":1427413298,"status":"pending_payment","currency":"MXN","description":"Stogies","reference_id":"9839-wolf_pack","failure_code":null,"failure_message":null,"monthly_installments":null,"object":"charge","amount":20000,"paid_at":null,"fee":928,"customer_id":"","refunds":[],"payment_method":{"clabe":"646180111800012432","bank":"STP","issuing_account_holder":null,"issuing_account_tax_id":null,"issuing_account_bank":null,"issuing_account_number":null,"receiving_account_holder":null,"receiving_account_tax_id":null,"receiving_account_number":"646180111800012432","receiving_account_bank":"STP","reference_number":null,"description":null,"tracking_code":null,"executed_at":null,"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":{}},"livemode":false,"webhook_status":"pending","id":"551499322412292eec00215c","object":"event","type":"charge.created","created_at":1427413298,"webhook_logs":[{"id":"webhl_ENPXoFkKWyDqTAt","url":"http://requestb.in/151xj4r1","failed_attempts":0,"last_http_response_status":-1,"object":"webhook_log","last_attempted_at":1427413285}]}
speiHandler = class_double("Var::ConektaSpeiHandler").
as_stubbed_const(transfer_nested_constants: true)
params = { "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": null, "failure_message": null, "monthly_installments": null, "object": 'charge', "amount": 20_000, "paid_at": null, "fee": 928, "customer_id": '', "refunds": [], "payment_method": { "clabe": '646180111800012432', "bank": 'STP', "issuing_account_holder": null, "issuing_account_tax_id": null, "issuing_account_bank": null, "issuing_account_number": null, "receiving_account_holder": null, "receiving_account_tax_id": null, "receiving_account_number": '646180111800012432', "receiving_account_bank": 'STP', "reference_number": null, "description": null, "tracking_code": null, "executed_at": null, "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 }] }
speiHandler = class_double('Var::ConektaSpeiHandler')
.as_stubbed_const(transfer_nested_constants: true)
expect(speiHandler).to receive(:analyze).with(params)
Var.conekta_webhook(params)
end
it 'handles card payment' do
null = nil
params = {"data":{"object":{"id":"5511d4ce2412294cf6000081","livemode":false,"created_at":1427231950,"status":"paid","currency":"MXN","description":"Stogies","reference_id":"9839-wolf_pack","failure_code":null,"failure_message":null,"monthly_installments":null,"object":"charge","amount":20000,"paid_at":1427231952,"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":null,"phone":null,"email":null,"line_items":[]}},"previous_attributes":{"payment_method":{}}},"livemode":false,"webhook_status":"pending","id":"5511d4d02412294cf6000088","object":"event","type":"charge.paid","created_at":1427231952,"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}]}
cardHandler = class_double("Var::ConektaCardHandler").
as_stubbed_const(transfer_nested_constants: true)
params = { "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": null, "failure_message": null, "monthly_installments": null, "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": null, "phone": null, "email": null, "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 }] }
cardHandler = class_double('Var::ConektaCardHandler')
.as_stubbed_const(transfer_nested_constants: true)
expect(cardHandler).to receive(:analyze).with(params)
Var.conekta_webhook(params)
end
it 'handles oxxo payment' do
null = nil
params = {"data":{"object":{"id":"5514803f241229981e0022e6","livemode":false,"created_at":1427406911,"status":"paid","currency":"MXN","description":"Stogies","reference_id":"9839-wolf_pack","failure_code":null,"failure_message":null,"monthly_installments":null,"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}]}
oxxoHandler = class_double("Var::ConektaOxxoHandler").
as_stubbed_const(transfer_nested_constants: true)
params = { "data": { "object": { "id": '5514803f241229981e0022e6', "livemode": false, "created_at": 1_427_406_911, "status": 'paid', "currency": 'MXN', "description": 'Stogies', "reference_id": '9839-wolf_pack', "failure_code": null, "failure_message": null, "monthly_installments": null, "object": 'charge', "amount": 20_000, "paid_at": 1_427_406_913, "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": 1_430_006_400, "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": 1_427_406_914, "webhook_logs": [{ "id": 'webhl_yYes9gx41vAj6ag', "url": 'http://requestb.in/151xj4r1', "failed_attempts": 0, "last_http_response_status": -1, "object": 'webhook_log', "last_attempted_at": 1_427_406_984 }] }
oxxoHandler = class_double('Var::ConektaOxxoHandler')
.as_stubbed_const(transfer_nested_constants: true)
expect(oxxoHandler).to receive(:analyze).with(params)
Var.conekta_webhook(params)
end
it 'handles SPEI payment' do
null = nil
params = {"data":{"object":{"id":"551499322412292eec002159","livemode":false,"created_at":1427413298,"status":"pending_payment","currency":"MXN","description":"Stogies","reference_id":"9839-wolf_pack","failure_code":null,"failure_message":null,"monthly_installments":null,"object":"charge","amount":20000,"paid_at":null,"fee":928,"customer_id":"","refunds":[],"payment_method":{"clabe":"646180111800012432","bank":"STP","issuing_account_holder":null,"issuing_account_tax_id":null,"issuing_account_bank":null,"issuing_account_number":null,"receiving_account_holder":null,"receiving_account_tax_id":null,"receiving_account_number":"646180111800012432","receiving_account_bank":"STP","reference_number":null,"description":null,"tracking_code":null,"executed_at":null,"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":{}},"livemode":false,"webhook_status":"pending","id":"551499322412292eec00215c","object":"event","type":"charge.created","created_at":1427413298,"webhook_logs":[{"id":"webhl_ENPXoFkKWyDqTAt","url":"http://requestb.in/151xj4r1","failed_attempts":0,"last_http_response_status":-1,"object":"webhook_log","last_attempted_at":1427413285}]}
speiHandler = class_double("Var::ConektaSpeiHandler").
as_stubbed_const(transfer_nested_constants: true)
params = { "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": null, "failure_message": null, "monthly_installments": null, "object": 'charge', "amount": 20_000, "paid_at": null, "fee": 928, "customer_id": '', "refunds": [], "payment_method": { "clabe": '646180111800012432', "bank": 'STP', "issuing_account_holder": null, "issuing_account_tax_id": null, "issuing_account_bank": null, "issuing_account_number": null, "receiving_account_holder": null, "receiving_account_tax_id": null, "receiving_account_number": '646180111800012432', "receiving_account_bank": 'STP', "reference_number": null, "description": null, "tracking_code": null, "executed_at": null, "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 }] }
speiHandler = class_double('Var::ConektaSpeiHandler')
.as_stubbed_const(transfer_nested_constants: true)
expect(speiHandler).to receive(:analyze).with(params)
Var.conekta_webhook(params)
end
......@@ -137,7 +137,6 @@ describe Var do
end
it 'processes card charge' do
# allow(Var).to receive(:find_charge).and_return chargable_product
#
# allow(chargable_product).to receive(:update_columns).and_return true
......@@ -146,7 +145,6 @@ describe Var do
# expect(result.var_id).to eq('5511d4ce2412294cf6000081')
# TODO: Define what is actually being teted
end
xit 'handles Plan creado' do
......
# frozen_string_literal: true
lib = File.expand_path('../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require 'var/version'
......