Marcelo
Builds for 1 pipeline failed in 0 seconds

Specs ready to modify var

......@@ -25,7 +25,6 @@ module ActsAsChargeable
def charge_with_conekta(options)
charge = conekta_charge(options)
amount = charge.amount / 100.0
update_columns(var_status: charge.status, var_id: charge.id,
var_service: 'conekta')
update_conekta_barcode(charge) if options[:conekta_type] == 'oxxo'
......
......@@ -2,11 +2,56 @@
require 'spec_helper'
describe ActsAsChargeable do
before(:each) do
Product.delete_all
end
context 'as a module' do
it 'can be implemented in ActiveRecord' do
expect(Product).to respond_to(:acts_as_chargeable)
end
end
context 'processing charges' do
it ': oxxo' do
product = Product.create
conekta_object_mock = JSON.parse(
ConektaChargeCreateObject::OXXO_CREATE_CHARGE_OBJECT,
object_class: OpenStruct)
allow(product).to receive(:conekta_charge).and_return(conekta_object_mock)
Var.create_charge(:conekta, product, {"conekta_type": "oxxo"})
expect(product.var_id).to eq conekta_object_mock.id
expect(product.var_service).to eq 'conekta'
expect(product.var_status).to eq 'pending_payment'
expect(product.var_paid_amount).to eq conekta_object_mock.amount
expect(product.var_fee).to eq conekta_object_mock.fee
expect(product.var_payment_method).to eq 'OXXO'
expect(product.var_payment_at).to eq(Time.strptime conekta_object_mock.paid_at.to_s, '%s')
end
it ': card' do
product = Product.create
conekta_object_mock = JSON.parse(
ConektaChargeCreateObject::CARD_CREATE_CHARGE_OBJECT,
object_class: OpenStruct)
allow(product).to receive(:conekta_charge).and_return(conekta_object_mock)
Var.create_charge(:conekta, product, { conekta_type: 'card' })
expect(product.var_id).to eq conekta_object_mock.id
expect(product.var_service).to eq 'conekta'
expect(product.var_status).to eq 'paid'
expect(product.var_paid_amount).to eq conekta_object_mock.amount
expect(product.var_fee).to eq conekta_object_mock.fee
expect(product.var_payment_method).to eq 'Card'
expect(product.var_payment_at).to eq(Time.strptime conekta_object_mock.paid_at.to_s, '%s')
end
xit ': spei' do
end
end
end
# Tests for mock on Chargeable class
......
......@@ -2,66 +2,36 @@
require 'spec_helper'
describe Var::ConektaCardHandler do
let!(:product) {
# product = instance_double('Product')
# allow(product).to receive(:charge_with).and_return(:success)
# product
Product.create
}
let!(:var_mock) {
var = class_double('Var')
allow(var).to receive(:find_charge).and_return(product)
var
}
before(:each) do
Product.delete_all
end
it 'processes card charge' do
product = Product.create
conekta_object_mock = JSON.parse(
ConektaChargeCreateObject::CARD_CREATE_CHARGE_OBJECT,
object_class: OpenStruct)
allow(product).to receive(:conekta_charge).and_return(conekta_object_mock)
# No se checan updates por que esto ya está testeado
Var.create_charge(:conekta, product, { conekta_type: 'card' })
expect(product.var_id).to eq conekta_object_mock.id
expect(product.var_service).to eq 'conekta'
expect(product.var_status).to eq('paid')
# Se está testeando crear un cargo y recibir webook
# Analizar separación
Var::ConektaCardHandler.analyze(WebHookPostRequest::CARD_CHARGE_CREATED)
# TODO: Revisar que si entra un cargo, se debe actualizar status a pending_payment
# Pero falta desarrollo (Hacer un overwrite del método process_charge en el handler de card)
expect(product.var_id).to eq conekta_object_mock.id
expect(product.var_service).to eq 'conekta'
expect(product.var_status).to eq('pending_payment')
expect(product.var_status).to eq 'pending_payment'
end
it 'processes card payment' do
product = Product.create
conekta_object_mock = JSON.parse(
ConektaChargeCreateObject::CARD_CREATE_CHARGE_OBJECT,
object_class: OpenStruct)
allow(product).to receive(:conekta_charge).and_return(conekta_object_mock)
# No se checan updates por que esto ya está testeado
Var.create_charge(:conekta, product, { conekta_type: 'card' })
expect(product.var_id).to eq conekta_object_mock.id
expect(product.var_service).to eq 'conekta'
expect(product.var_status).to eq('paid')
Var::ConektaHandler.analyze(WebHookPostRequest::CARD_CHARGE_PAID)
expect(product.var_id).to eq conekta_object_mock.id
expect(product.var_service).to eq 'conekta'
expect(product.var_status).to eq('paid')
expect(product.var_paid_amount).to_not be_nil
expect(product.var_status).to eq 'paid'
end
end
# Conekta.config do |c|
# c.locale = :en
# # Llave de Sandbox
# c.api_key = 'key_mGmC5ry7s71JSLCv2WcxUg'
# c::PUBLIC_KEY = 'key_K6WVsv82RrEHGocJQcoEqPw'
# end
# Var.create_charge(:conekta, product, { conekta_type: 'card', card_token: 'tok_ZGFFi3sv18a3duJWR' })
end
\ No newline at end of file
......
# frozen_string_literal: true
require 'spec_helper'
describe Var::ConektaHandler do
let!(:product) {
# product = instance_double('Product')
# allow(product).to receive(:charge_with).and_return(:success)
# product
Product.create
}
let!(:var_mock) {
var = class_double('Var')
allow(var).to receive(:find_charge).and_return(product)
var
}
# TODO: Probar errores en Var.create_charge
it 'processes oxxo charge' do
allow_any_instance_of(Product).to receive(:conekta_charge).and_return(
JSON.parse(ConektaChargeCreateObject::OXXO_CREATE_CHARGE_OBJECT, object_class: OpenStruct))
charge = Var.create_charge(:conekta, product, {"conekta_type": "oxxo"})
Var::ConektaHandler.analyze(WebHookPostRequest::OXXO_CHARGE_CREATED)
expect(product.var_status).to eq('pending_payment')
end
it 'processes card charge' do
allow_any_instance_of(Product).to receive(:conekta_charge).and_return(
JSON.parse(ConektaChargeCreateObject::CARD_CREATE_CHARGE_OBJECT, object_class: OpenStruct))
charge = Var.create_charge(:conekta, product, {"conekta_type": "card"})
Var::ConektaHandler.analyze(WebHookPostRequest::CARD_CHARGE_CREATED)
expect(product.var_status).to eq('pending_payment')
end
xit 'processes spei charge' do
end
it 'processes payout' do
end
it 'processes oxxo payment' do
Var::ConektaHandler.analyze(WebHookPostRequest::OXXO_CHARGE_CREATED)
expect(product.var_status).to eq('paid')
end
it 'processes card payment' do
end
it 'processes oxxo payment' do
end
xit 'processes spei payment' do
end
it 'processes payout' do
end
end
# frozen_string_literal: true
require 'spec_helper'
describe Var::ConektaHandler do
describe Var::ConektaOxxoHandler do
before(:each) do
Product.delete_all
end
......@@ -11,19 +11,13 @@ describe Var::ConektaHandler do
conekta_object_mock = JSON.parse(
ConektaChargeCreateObject::OXXO_CREATE_CHARGE_OBJECT,
object_class: OpenStruct)
allow_any_instance_of(Product).to receive(:conekta_charge)
.and_return(conekta_object_mock)
allow(product).to receive(:conekta_charge).and_return(conekta_object_mock)
Var.create_charge(:conekta, product, {"conekta_type": "oxxo"})
expect(product.var_id).to eq conekta_object_mock.id
expect(product.var_service).to eq 'conekta'
expect(product.var_status).to eq('pending_payment')
Var::ConektaOxxoHandler.analyze(WebHookPostRequest::OXXO_CHARGE_CREATED)
expect(product.var_id).to eq conekta_object_mock.id
expect(product.var_service).to eq 'conekta'
expect(product.var_status).to eq('pending_payment')
expect(product.var_status).to eq 'pending_payment'
end
it 'processes oxxo payment' do
......@@ -31,24 +25,11 @@ describe Var::ConektaHandler do
conekta_object_mock = JSON.parse(
ConektaChargeCreateObject::OXXO_CREATE_CHARGE_OBJECT,
object_class: OpenStruct)
allow_any_instance_of(Product).to receive(:conekta_charge)
.and_return(conekta_object_mock)
allow(product).to receive(:conekta_charge).and_return(conekta_object_mock)
Var.create_charge(:conekta, product, {"conekta_type": "oxxo"})
expect(product.var_id).to eq conekta_object_mock.id
expect(product.var_service).to eq 'conekta'
expect(product.var_status).to eq('pending_payment')
Var::ConektaOxxoHandler.analyze(WebHookPostRequest::OXXO_CHARGE_PAID)
product.reload
expect(product.var_id).to eq conekta_object_mock.id
expect(product.var_service).to eq 'conekta'
expect(product.var_status).to eq('paid')
expect(product.var_paid_amount).to_not be_nil
expect(product.var_fee).to_not be_nil
expect(product.var_payment_method).to eq('OXXO')
expect(product.var_payment_at).to_not be_nil
expect(product.var_status).to eq 'paid'
end
end
......