Marcelo
Builds for 1 pipeline failed in 0 seconds

Finished OXXO charges and payments specs

1 +# frozen_string_literal: true
2 +require 'spec_helper'
3 +
4 +describe Var::ConektaHandler do
5 + let!(:product) {
6 + # product = instance_double('Product')
7 + # allow(product).to receive(:charge_with).and_return(:success)
8 + # product
9 + Product.create
10 + }
11 +
12 + let!(:var_mock) {
13 + var = class_double('Var')
14 + allow(var).to receive(:find_charge).and_return(product)
15 + var
16 + }
17 +
18 + # TODO: Probar errores en Var.create_charge
19 + it 'processes oxxo charge' do
20 + conekta_object_mock = JSON.parse(
21 + ConektaChargeCreateObject::OXXO_CREATE_CHARGE_OBJECT,
22 + object_class: OpenStruct)
23 + allow_any_instance_of(Product).to receive(:conekta_charge)
24 + .and_return(conekta_object_mock)
25 +
26 + Var.create_charge(:conekta, product, {"conekta_type": "oxxo"})
27 +
28 + expect(product.var_id).to eq conekta_object_mock.id
29 + expect(product.var_service).to eq 'conekta'
30 + expect(product.var_status).to eq('pending_payment')
31 +
32 + Var::ConektaOxxoHandler.analyze(WebHookPostRequest::OXXO_CHARGE_CREATED)
33 + expect(product.var_id).to eq conekta_object_mock.id
34 + expect(product.var_service).to eq 'conekta'
35 + expect(product.var_status).to eq('pending_payment')
36 + end
37 +
38 + it 'processes oxxo payment' do
39 + conekta_object_mock = JSON.parse(
40 + ConektaChargeCreateObject::OXXO_CREATE_CHARGE_OBJECT,
41 + object_class: OpenStruct)
42 + allow_any_instance_of(Product).to receive(:conekta_charge)
43 + .and_return(conekta_object_mock)
44 +
45 + Var.create_charge(:conekta, product, {"conekta_type": "oxxo"})
46 +
47 + expect(product.var_id).to eq conekta_object_mock.id
48 + expect(product.var_service).to eq 'conekta'
49 + expect(product.var_status).to eq('pending_payment')
50 +
51 + Var::ConektaOxxoHandler.analyze(WebHookPostRequest::OXXO_CHARGE_PAID)
52 + product.reload
53 +
54 + expect(product.var_id).to eq conekta_object_mock.id
55 + expect(product.var_service).to eq 'conekta'
56 + expect(product.var_status).to eq('paid')
57 + expect(product.var_paid_amount).to_not be_nil
58 + expect(product.var_fee).to_not be_nil
59 + expect(product.var_payment_method).to eq('OXXO')
60 + expect(product.var_payment_at).to_not be_nil
61 + end
62 +end