conekta_oxxo_handler_spec.rb 1.88 KB
# frozen_string_literal: true
require 'spec_helper'

describe Var::ConektaHandler do
  before(:each) do
    Product.delete_all
  end
  # TODO: Probar errores en Var.create_charge
  it 'processes oxxo charge' do
    product = Product.create
    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)
  	
    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')
  end

  it 'processes oxxo payment' do
    product = Product.create
    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)
    
    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
  end
end