conekta_card_handler_spec.rb 2.05 KB
# 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')

  	Var::ConektaHandler.analyze(WebHookPostRequest::CARD_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('paid')
  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 eq 0.00
  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' })