conekta_card_handler_spec.rb
2.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# frozen_string_literal: true
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
}
it 'processes card charge' do
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')
# 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')
end
it 'processes card payment' do
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')
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
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' })