Marcelo
Builds for 1 pipeline failed in 0 seconds

Updates on var specs and gem modifications

1 #!/usr/bin/env ruby 1 #!/usr/bin/env ruby
2 # frozen_string_literal: true 2 # frozen_string_literal: true
3 - 3 +require 'pry'
4 require 'bundler/setup' 4 require 'bundler/setup'
5 require 'active_record' 5 require 'active_record'
6 require 'active_support' 6 require 'active_support'
...@@ -9,9 +9,10 @@ require 'var' ...@@ -9,9 +9,10 @@ require 'var'
9 require_relative '../spec/mocks/var_database_mock.rb' 9 require_relative '../spec/mocks/var_database_mock.rb'
10 require_relative '../spec/mocks/var_models_mock.rb' 10 require_relative '../spec/mocks/var_models_mock.rb'
11 11
12 +Time.zone = 'America/Monterrey'
12 ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: ':memory:') 13 ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: ':memory:')
13 ActiveRecord::Schema.verbose = false 14 ActiveRecord::Schema.verbose = false
14 VarDatabaseMock.setup_db 15 VarDatabaseMock.setup_db
15 16
16 -require 'pry' 17 +
17 Pry.start 18 Pry.start
......
...@@ -26,11 +26,8 @@ module ActsAsChargeable ...@@ -26,11 +26,8 @@ module ActsAsChargeable
26 def charge_with_conekta(options) 26 def charge_with_conekta(options)
27 charge = conekta_charge(options) 27 charge = conekta_charge(options)
28 amount = charge.amount / 100.0 28 amount = charge.amount / 100.0
29 - fee = charge.fee / 100.0
30 update_columns(var_status: charge.status, var_id: charge.id, 29 update_columns(var_status: charge.status, var_id: charge.id,
31 - var_service: 'conekta', var_fee: fee, 30 + var_service: 'conekta')
32 - var_paid_amount: amount,
33 - var_payment_method: charge.payment_method.object)
34 update_conekta_barcode(charge) if options[:conekta_type] == 'oxxo' 31 update_conekta_barcode(charge) if options[:conekta_type] == 'oxxo'
35 if var_payed? 32 if var_payed?
36 time = Time.zone.now 33 time = Time.zone.now
...@@ -63,7 +60,7 @@ module ActsAsChargeable ...@@ -63,7 +60,7 @@ module ActsAsChargeable
63 { card: options[:card_token] } 60 { card: options[:card_token] }
64 elsif options[:conekta_type] == 'oxxo' 61 elsif options[:conekta_type] == 'oxxo'
65 { cash: { type: 'oxxo', 62 { cash: { type: 'oxxo',
66 - expires_at: (Time.zone.today + 3.days).strftime('%Y-%m-%d') } } 63 + expires_at: (Time.zone.now + 3.days).strftime('%Y-%m-%d') } }
67 end 64 end
68 end 65 end
69 66
......
...@@ -15,6 +15,29 @@ describe Var::ConektaHandler do ...@@ -15,6 +15,29 @@ describe Var::ConektaHandler do
15 var 15 var
16 } 16 }
17 17
18 + # TODO: Probar errores en Var.create_charge
19 + it 'processes oxxo charge' do
20 + allow_any_instance_of(Product).to receive(:conekta_charge).and_return(
21 + JSON.parse(ConektaChargeCreateObject::OXXO_CREATE_CHARGE_OBJECT, object_class: OpenStruct))
22 + charge = Var.create_charge(:conekta, product, {"conekta_type": "oxxo"})
23 + Var::ConektaHandler.analyze(WebHookPostRequest::OXXO_CHARGE_CREATED)
24 + expect(product.var_status).to eq('pending_payment')
25 + end
26 +
27 + it 'processes card charge' do
28 + allow_any_instance_of(Product).to receive(:conekta_charge).and_return(
29 + JSON.parse(ConektaChargeCreateObject::CARD_CREATE_CHARGE_OBJECT, object_class: OpenStruct))
30 + charge = Var.create_charge(:conekta, product, {"conekta_type": "card"})
31 + Var::ConektaHandler.analyze(WebHookPostRequest::CARD_CHARGE_CREATED)
32 + expect(product.var_status).to eq('pending_payment')
33 + end
34 +
35 + xit 'processes spei charge' do
36 + end
37 +
38 + it 'processes payout' do
39 + end
40 +
18 it 'processes oxxo payment' do 41 it 'processes oxxo payment' do
19 Var::ConektaHandler.analyze(WebHookPostRequest::OXXO_CHARGE_CREATED) 42 Var::ConektaHandler.analyze(WebHookPostRequest::OXXO_CHARGE_CREATED)
20 expect(product.var_status).to eq('paid') 43 expect(product.var_status).to eq('paid')
...@@ -27,6 +50,9 @@ describe Var::ConektaHandler do ...@@ -27,6 +50,9 @@ describe Var::ConektaHandler do
27 it 'processes oxxo payment' do 50 it 'processes oxxo payment' do
28 end 51 end
29 52
53 + xit 'processes spei payment' do
54 + end
55 +
30 it 'processes payout' do 56 it 'processes payout' do
31 end 57 end
32 end 58 end
......
...@@ -5,7 +5,7 @@ class VarDatabaseMock ...@@ -5,7 +5,7 @@ class VarDatabaseMock
5 ActiveRecord::Schema.define(version: 1) do 5 ActiveRecord::Schema.define(version: 1) do
6 create_table :products do |t| 6 create_table :products do |t|
7 t.string :code 7 t.string :code
8 - 8 + t.string :name
9 t.string :var_status, default: 'pending' 9 t.string :var_status, default: 'pending'
10 t.string :var_barcode_url 10 t.string :var_barcode_url
11 t.string :var_barcode 11 t.string :var_barcode
......
1 # frozen_string_literal: true 1 # frozen_string_literal: true
2 class Product < ActiveRecord::Base 2 class Product < ActiveRecord::Base
3 - acts_as_chargeable 3 + acts_as_chargeable conekta: { description: :description,
4 + amount: :amount, email: :buyer_mail,
5 + reference_id: :id }
6 + def description
7 + "Producto cool"
8 + end
9 +
10 + def amount
11 + 134.00
12 + end
13 +
14 + def buyer_mail
15 + "compradordelproducto@mimail.com"
16 + end
17 +
18 + def name
19 + "Nombre del producto"
20 + end
4 end 21 end
......
This diff is collapsed. Click to expand it.
...@@ -7,8 +7,10 @@ require 'var' ...@@ -7,8 +7,10 @@ require 'var'
7 require 'mocks/var_database_mock' 7 require 'mocks/var_database_mock'
8 require 'mocks/var_models_mock' 8 require 'mocks/var_models_mock'
9 require 'mocks/webhooks_requests' 9 require 'mocks/webhooks_requests'
10 +require 'mocks/conekta_charge_create_objects'
10 11
12 +Time.zone = 'America/Monterrey'
11 ActiveRecord::Base.establish_connection(adapter: 'sqlite3', 13 ActiveRecord::Base.establish_connection(adapter: 'sqlite3',
12 database: ':memory:') 14 database: ':memory:')
13 ActiveRecord::Schema.verbose = false 15 ActiveRecord::Schema.verbose = false
14 -VarDatabaseMock.setup_db 16 +VarDatabaseMock.setup_db
...\ No newline at end of file ...\ No newline at end of file
......