punto_pagos_rails 0.2.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/models/punto_pagos_rails/transaction.rb +7 -8
- data/config/locales/en.yml +0 -3
- data/config/locales/es.yml +0 -3
- data/config/routes.rb +0 -5
- data/lib/generators/punto_pagos_rails/install/USAGE +2 -5
- data/lib/generators/punto_pagos_rails/install/install_generator.rb +5 -39
- data/lib/generators/punto_pagos_rails/install/templates/puntopagos.yml +9 -10
- data/lib/generators/punto_pagos_rails/install/templates/transactions_migration.rb +18 -0
- data/lib/generators/punto_pagos_rails/payment_flow/USAGE +5 -0
- data/lib/generators/punto_pagos_rails/payment_flow/payment_flow_generator.rb +80 -0
- data/lib/generators/punto_pagos_rails/payment_flow/templates/error.html.erb +5 -0
- data/lib/generators/punto_pagos_rails/payment_flow/templates/success.html.erb +5 -0
- data/lib/generators/punto_pagos_rails/payment_flow/templates/transactions_controller.rb.erb +40 -0
- data/lib/punto_pagos_rails.rb +1 -10
- data/lib/punto_pagos_rails/engine.rb +1 -1
- data/lib/punto_pagos_rails/payable.rb +23 -0
- data/lib/punto_pagos_rails/transaction_service.rb +53 -61
- data/lib/punto_pagos_rails/version.rb +1 -1
- data/spec/dummy/app/controllers/home_controller.rb +0 -1
- data/spec/dummy/app/controllers/transactions_controller.rb +40 -0
- data/spec/dummy/app/models/ticket.rb +1 -19
- data/spec/dummy/app/views/home/index.html.erb +3 -2
- data/spec/dummy/app/views/transactions/error.html.erb +6 -0
- data/spec/dummy/app/views/transactions/success.html.erb +6 -0
- data/spec/dummy/config/environments/test.rb +1 -1
- data/spec/dummy/config/puntopagos.yml +9 -9
- data/spec/dummy/config/routes.rb +4 -2
- data/spec/dummy/db/development.sqlite3 +0 -0
- data/spec/dummy/db/migrate/20141026172010_create_tickets.rb +1 -1
- data/spec/dummy/db/migrate/20160605212231_create_punto_pagos_rails_transactions.rb +18 -0
- data/spec/dummy/db/schema.rb +11 -8
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/log/development.log +809 -0
- data/spec/dummy/log/test.log +31272 -0
- data/spec/dummy/spec/controllers/transactions_controller_spec.rb +88 -0
- data/spec/dummy/spec/lib/punto_pagos_rails/transaction_service_spec.rb +6 -60
- data/spec/dummy/spec/models/punto_pagos_rails/transaction_spec.rb +3 -3
- data/spec/dummy/spec/models/ticket_spec.rb +2 -2
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/3Fw4ZqAHNcyjp32NvDuTNl_UqelVnkm1oFk6m8TeecE.cache +1 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/3_/3_b-g2v_V_5gxPdo0uhVAPJZLSsCkSSaJFpHHHnZ6F4.cache +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/5X/5XQR5pxibZfdEuTpakchl9HyBfhnPIGcUuB7zJON788.cache +1 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/5bSj5g83MbQ9DKsPwLU9twrU7yvLq6dYmmH-HEs29O8.cache +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/6X/6X_ukW43EGeNCQiNv8Ocr70mO25LldjeBozF4UiIz50.cache +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/7q/7qi1bAa7jI04pIaFgMGEMDgWNCI-Q7diVLAm3btoA84.cache +1 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/CduZWIah5G8fpSjD5QO6TFJXr_9TFOHxCbC1Gy8qZxA.cache +1 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/EN/EN1sgFDBtOLV_nTM5QCygjXFjJjrCwASL91R_jbxJqo.cache +1 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/Ee/EeKGFrz9PyEmN_5oeyYYGsl3_g2AHxfLBpYXIlZ9qEo.cache +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/Fv8tnOEJ_LEgSDbDEuTuiPLB-eEYIhxUwZsDBbio46w.cache +3 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/J5/J54BxjKsqhvXfShEaZNnH6dfnLMS0zoVH5mgbz0DK7Y.cache +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/J8/J88DZaT-14iePrHbjUeroRM6XiHxwmMw7k38S1nwR5g.cache +1 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/MdPfZAJEELkc6iJn6XlCxHSkYdgQ_wgGW950s4axvcs.cache +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/O8/O8akbUwAbmIKY-AhITimq-JDQ6IgsO3Hvq2v5etufFw.cache +2 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/Pkh2wBkC6wpkIuR8EXAg7elsBHnTjVINP97B71GAyhE.cache +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/Rm/Rmkvmvnp04uG1YyAWhY8BHBd--6SqqV8mNPXCkmCucs.cache +1 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/VgFPEFaNzkUqN75RTiy1JzWIXg87PGB93hDXsTqxyB8.cache +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/XfKoGAu1QFs7NV03JWa4QQtoTQSkqlJZx05IkDCP3PM.cache +2 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/XyFO2KxykoEaX_adyCFw667OfGArrYXTOYXJ9b0PgOo.cache +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/a_dtAAwExwuAXpiGsCZKz3W46CsW_KVxNTRFOdoaKzg.cache +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/esq8UjWY8tb8I8CizPRT_shPmdQKJYyr2DN19n2klo4.cache +1 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/hj/hj8Ir9wcVSy1KYrnWu9bpD24vDhCG3tvt-nKbNxb1Wg.cache +3 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/k7noXdZau3gX1CJSriYJIBcNHPwc3318AUHIWCHXKhg.cache +2 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/kn/knvCbDNyQEDreqWUaqRkfTor_EXoGTzPbMdMwdIBJlU.cache +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/oC/oCsZTGZyV4kH8Y4OeSDUdrwfkJFPzTODZjuBKZB8oGQ.cache +2 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/ogxRgAPyiZ-Nu3IjkBEw9ruI1Knjq_YU6HyWixUrg7g.cache +1 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/om/omKjrYUgD72M_fYBz1rlfZYic0JVNLXPKY8BGn43I5w.cache +1 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/r0gbTq2v9cKQuG206qQxGolfvjBYw3POwlACk7b41Rg.cache +1 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/rorzxYMlgwKrzjSt_2tNP0StT9Q3pelAqgmVf3YA9SY.cache +3 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/sM/sMuWOI50W0n-l80Pew5AJTy2B4tY5K8RuLjbeB7jQp0.cache +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/t78LfYaGJpEOdllJ9lsrnLCKTCSkoSJWU17iCNcvy94.cache +1 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/tP/tPF6H9NRpGO3whu2y5_e_R_1EACKdCwu5437D83qJT0.cache +3 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/-X/-XTIyQr6h6v7T797GfFzdxqCpKSZOqemHQqHEHYUItM.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/1j/1jUXrYbF7jVcJvYHZHNALKbMrXby0qIkxLwN8tMjdl4.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/35/35wQlbi0EDG73ZKIiHHpphoZJZUu58POM42B-3-_YX0.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/3_/3_b-g2v_V_5gxPdo0uhVAPJZLSsCkSSaJFpHHHnZ6F4.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5c/5cJuB5GT-GVCPeIQQKexe51JarYx5Zm4Kp5nky33tn8.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6O/6OwNk80Fc8hd4f__QxpOLC_qYWFA-uI_iRugkIWqvIQ.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6X/6X_ukW43EGeNCQiNv8Ocr70mO25LldjeBozF4UiIz50.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7b/7bjowlWzolEF985bac_6I5v3HWZiFJRoa-nqHtn-OXY.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7i/7io2gyVCCR83Rk6ocF1HUvam1FLz4-Q1MRk6A10JM0M.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7q/7qnRlg2H1sxfHtaPIpNmoVimW9VFj-yqT0iPzyTT_K4.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8Y/8Yb56gIA7T5L10wvHz-fWkKSn254pSN73L7VKYH1Rjg.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/96/962nogFuXwCsVtC50UP3FjcEJxWutj384ciKyDgI2cU.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/9X/9XlM_JtRmY5gbMkK5gueswD7s_ctcOLacU5VYno5ymw.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/AL/AL6PBU18v_L-23J6RrXIF6BAiPpCRKl0psIsbveU4lA.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/AP/AP0_3b5N2aJWVyyANhjLMP7qdpczG_C1lo6AtzELoyU.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/EN/EN1sgFDBtOLV_nTM5QCygjXFjJjrCwASL91R_jbxJqo.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/EN/eNStu73G536x1iNq9tePGM6hv5Xa6-5ZsXtfJuiDtfE.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Fi/FiuTIVrQEp_PZDI6AFR7KQkoUtnCXkFVKyr2aSzCINI.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/HG/HGWuC1XP4qTav8SMCTMvqubfgC1g-BXJH6zXci4WaI8.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/LK/LK5DwcQTCssBt2sSq8waYL_2OW6zUuLZoRK4vXkUbx0.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/LO/LOIw_QrLu6EqRv2po1AhlmvJ5T0AcIZuJV0rK15RRx0.cache +2 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/MT/MTvVhODKf8qABXyyCrbfCfpCTIA5KjS3WxBpMCXHKRU.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/NR/NRsBMlnlc4XT7crH9pvz4ygo-ZR4AgiGeRMZQPavCxM.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/O8/O8akbUwAbmIKY-AhITimq-JDQ6IgsO3Hvq2v5etufFw.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/PS/PSM535pl0G8ic1fKKJ0rkGdwrgW8b8OITOW47jl2t1g.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/R4/R4lZxKQXv7q9xqB-H6AKh5-KeSELCFkMP12qMQ6dMLI.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Rm/Rmkvmvnp04uG1YyAWhY8BHBd--6SqqV8mNPXCkmCucs.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ro/RofByYcbsjOYAjsoyMoH5z1COA5fQ80RZoqB_YRLa84.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Rv/Rv0mdxEdzMSxJjrULhpSoGWLCDhlnkqCy48ujNWsXcw.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/SX/SX0FzvVXLoVzYDZN95Hikfe-1VExx8LZgZh4bam53yE.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ui/Ui4eBSjoI421Dzo1z47yeUqcwD-oL_xNCuU_GZ2qh5Y.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/V6/V6ShJgOfSo2QDO2zt0zlU1dNhHNG52w6gJbrqt3xnls.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/VR/VRC0qpQ2CiJgNEMvtXOvEDluwkaoomyJeAm7Unfrcr0.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/VY/VYpuh0Ag6L55xqqNJ1mGLQVvGlNNH50DN6HApLtiRSk.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/X7/X7YQ6EHE68K2fFs0F2XPWazA8x8qVSZuaaYjKvgRj7w.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_l/_lYTKdS6o8FBFea0eYn8eIwjaExcmX5d2ukNTLvrE-c.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/bz/bzN6Qn7mi2daF9JkWWFmcv8yPYyWuLQOwlOUre3D-Vg.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ct/ctDRUdbKV5LoS0RdmDmOALjaV_onM7pOxr9_otXO9Gk.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/es/esYVHbG7qL7AKN3EPN_UFicQM3c0WTcTjqjDGibdz-Y.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/hj/hj8Ir9wcVSy1KYrnWu9bpD24vDhCG3tvt-nKbNxb1Wg.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/iN/iNm88b30nwQF3isi7fjLhZ2910IcuCKNax81fzqHsxY.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/jU/jUktWNbR4V7n34UAZe7uJpmEofhflF0bVtIO2BgxyJ8.cache +2 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/n4/n4XUXceOzK3gzQKg0Yb9WM-8GLaKrlEERxF518Xms_A.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/oC/oCsZTGZyV4kH8Y4OeSDUdrwfkJFPzTODZjuBKZB8oGQ.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/pH/pHvc6bYKLtA9GnOyAwdBMb2HvRJUv-cGBBeZy2A-Js8.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/pQ/pQoK49Hl4bSF5SQ4TKClybBt_EWRkffqmCqLhDJLlSs.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/qm/qmCn2iU2tPJeg0QV3QYriSUlxoprqYFAm_jxVHRxK-c.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/qu/qukp51oNpP4gQ4mcNPg8p7zttzOMUFWms2yHWGoZKGs.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/tP/tPF6H9NRpGO3whu2y5_e_R_1EACKdCwu5437D83qJT0.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/w_/w_v89Lo_bpb8aAsrFe9y5cBhNobVJ6MwvJqav7plorY.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/xU/xU8kTXBeW6eLfp_eNY6xEEideoQNSHIMC9yQ-P1OPO8.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/y8/y8u-QuBe2neNMwhZPDIz3ZE5FqNjBEux-ttpcsU9Qxc.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yh/yhC-Cty2J5UucXyvUWMfhQRgloZBt67FS7bSQpo7MMk.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/zd/zdeYpARJAH5-6ruhRV2366gVGYJ5TdX23ccaWKWHbYw.cache +0 -0
- data/spec/{dummy/spec/factories → factories}/tickets.rb +1 -1
- data/spec/factories/transaction.rb +6 -0
- metadata +229 -54
- data/app/controllers/punto_pagos_rails/transactions_controller.rb +0 -73
- data/db/migrate/20140928003539_create_punto_pagos_rails_transactions.rb +0 -13
- data/lib/generators/punto_pagos_rails/install/templates/error.html.erb +0 -6
- data/lib/generators/punto_pagos_rails/install/templates/punto_pagos_rails.rb +0 -3
- data/lib/generators/punto_pagos_rails/install/templates/success.html.erb +0 -6
- data/lib/punto_pagos_rails/resource_extension.rb +0 -25
- data/spec/dummy/app/views/punto_pagos_rails/transactions/error.html.erb +0 -6
- data/spec/dummy/app/views/punto_pagos_rails/transactions/success.html.erb +0 -6
- data/spec/dummy/config/initializers/punto_pagos_rails.rb +0 -3
- data/spec/dummy/db/migrate/20141026172011_create_punto_pagos_rails_transactions.punto_pagos_rails.rb +0 -14
@@ -0,0 +1,88 @@
|
|
1
|
+
require "rails_helper"
|
2
|
+
|
3
|
+
describe TransactionsController do
|
4
|
+
describe "#create" do
|
5
|
+
context "with valid transaction creation" do
|
6
|
+
let(:fake_proccess_url) { "http://puntopagos.cl/process" }
|
7
|
+
|
8
|
+
before do
|
9
|
+
expect_any_instance_of(PuntoPagosRails::TransactionService).to(
|
10
|
+
receive(:create).and_return(true))
|
11
|
+
expect_any_instance_of(PuntoPagosRails::TransactionService).to(
|
12
|
+
receive(:process_url).and_return(fake_proccess_url))
|
13
|
+
end
|
14
|
+
|
15
|
+
subject { post :create, ticket: { amount: 5000 } }
|
16
|
+
|
17
|
+
it "redirects to process url" do
|
18
|
+
expect(subject).to redirect_to(fake_proccess_url)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
context "with invalid transaction creation" do
|
23
|
+
render_views
|
24
|
+
let(:fake_error) { "some puntopagos error" }
|
25
|
+
|
26
|
+
before do
|
27
|
+
expect_any_instance_of(PuntoPagosRails::TransactionService).to(
|
28
|
+
receive(:create).and_return(false))
|
29
|
+
expect_any_instance_of(PuntoPagosRails::TransactionService).to(
|
30
|
+
receive(:error).and_return(fake_error))
|
31
|
+
end
|
32
|
+
|
33
|
+
subject { post :create, ticket: { amount: 5000 } }
|
34
|
+
|
35
|
+
it "renders error template" do
|
36
|
+
expect(subject).to render_template(:error)
|
37
|
+
end
|
38
|
+
|
39
|
+
it "shows error in view" do
|
40
|
+
post :create, ticket: { amount: 5000 }
|
41
|
+
expect(response.body).to match /#{fake_error}/im
|
42
|
+
expect(response.body).to match /Error Ticket ##{Ticket.last.id}/im
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
describe "#notification" do
|
48
|
+
before do
|
49
|
+
expect(PuntoPagosRails::TransactionService).to(
|
50
|
+
receive(:notificate).and_return(some: "json"))
|
51
|
+
end
|
52
|
+
|
53
|
+
it "renders json response" do
|
54
|
+
post :notification
|
55
|
+
expect(JSON.parse(response.body)).to eq("some" => "json")
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
describe "#success" do
|
60
|
+
let!(:transaction) { create(:transaction) }
|
61
|
+
|
62
|
+
subject { get :success, token: transaction.token }
|
63
|
+
|
64
|
+
it "renders success template" do
|
65
|
+
expect(subject).to render_template(:success)
|
66
|
+
end
|
67
|
+
|
68
|
+
it "shows success view" do
|
69
|
+
get :success, token: transaction.token
|
70
|
+
expect(response.body).to match /Success Ticket ##{Ticket.last.id}/im
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
describe "#error" do
|
75
|
+
let!(:transaction) { create(:transaction) }
|
76
|
+
|
77
|
+
subject { get :error, token: transaction.token }
|
78
|
+
|
79
|
+
it "renders error template" do
|
80
|
+
expect(subject).to render_template(:error)
|
81
|
+
end
|
82
|
+
|
83
|
+
it "shows error view" do
|
84
|
+
get :error, token: transaction.token
|
85
|
+
expect(response.body).to match /Error Ticket ##{Ticket.last.id}/im
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
@@ -1,18 +1,19 @@
|
|
1
|
-
require
|
1
|
+
require "rails_helper"
|
2
2
|
|
3
3
|
include PuntoPagosRails
|
4
4
|
|
5
5
|
RSpec.describe TransactionService do
|
6
|
-
|
7
6
|
let(:ticket) { Ticket.create amount: 22 }
|
8
|
-
let(:service) { TransactionService.new(ticket
|
7
|
+
let(:service) { TransactionService.new(ticket) }
|
9
8
|
let(:request) { double }
|
10
9
|
let(:response) { double }
|
11
10
|
let(:token) { 'XXXXX' }
|
12
11
|
let(:payment_process_url) { double }
|
13
12
|
let(:notification) { double }
|
14
13
|
let(:status) { double }
|
15
|
-
let(:transaction)
|
14
|
+
let(:transaction) do
|
15
|
+
PuntoPagosRails::Transaction.create(payable: ticket, token: SecureRandom.base64)
|
16
|
+
end
|
16
17
|
|
17
18
|
before do
|
18
19
|
allow(PuntoPagos::Request).to receive(:new).and_return(request)
|
@@ -52,7 +53,6 @@ RSpec.describe TransactionService do
|
|
52
53
|
end
|
53
54
|
|
54
55
|
context "with unsuccesful initialization" do
|
55
|
-
|
56
56
|
it "returns false with invalid token" do
|
57
57
|
allow(response).to receive(:get_token).and_return(nil)
|
58
58
|
expect(service.create).to eq(false)
|
@@ -63,68 +63,24 @@ RSpec.describe TransactionService do
|
|
63
63
|
allow(response).to receive(:get_token).and_return('REPEATED_TOKEN')
|
64
64
|
expect(service.create).to eq(false)
|
65
65
|
end
|
66
|
-
|
67
66
|
end
|
68
|
-
|
69
67
|
end
|
70
68
|
|
71
69
|
context "error" do
|
72
|
-
|
73
70
|
it "returns false" do
|
74
71
|
expect(service.create).to eq(false)
|
75
72
|
end
|
76
73
|
|
77
|
-
it "sets
|
74
|
+
it "sets payable error" do
|
78
75
|
allow(Ticket).to receive(:find).with(ticket.id).and_return(ticket)
|
79
76
|
service.create
|
80
77
|
expect(ticket.errors[:base]).to include(
|
81
78
|
I18n.t("punto_pagos_rails.errors.invalid_puntopagos_response"))
|
82
79
|
end
|
83
|
-
|
84
80
|
end
|
85
81
|
end
|
86
82
|
|
87
|
-
describe "#validate" do
|
88
|
-
|
89
|
-
before do
|
90
|
-
allow(PuntoPagos::Status).to receive(:new).and_return(status)
|
91
|
-
allow(status).to receive(:check).with(transaction.token, transaction.id.to_s, transaction.amount_to_s)
|
92
|
-
end
|
93
|
-
|
94
|
-
it "creates a status object" do
|
95
|
-
allow(status).to receive(:valid?).and_return(true)
|
96
|
-
TransactionService.validate(transaction.token, transaction)
|
97
|
-
expect(PuntoPagos::Status).to have_received(:new)
|
98
|
-
end
|
99
|
-
|
100
|
-
context "when the token is valid" do
|
101
|
-
|
102
|
-
it "runs callback after successful payment" do
|
103
|
-
allow(status).to receive(:valid?).and_return(true)
|
104
|
-
TransactionService.validate(transaction.token, transaction)
|
105
|
-
ticket.reload
|
106
|
-
expect(ticket.message).to eq("successful payment! #{ticket.id}")
|
107
|
-
end
|
108
|
-
|
109
|
-
end
|
110
|
-
|
111
|
-
context "when the token is invalid" do
|
112
|
-
|
113
|
-
it "runs error callback" do
|
114
|
-
allow(status).to receive(:valid?).and_return(false)
|
115
|
-
allow(status).to receive(:error).and_return("Transaccion Incompleta")
|
116
|
-
TransactionService.validate(transaction.token, transaction)
|
117
|
-
ticket.reload
|
118
|
-
expect(ticket.message).to eq("error paying ticket #{ticket.id}")
|
119
|
-
end
|
120
|
-
|
121
|
-
end
|
122
|
-
|
123
|
-
|
124
|
-
end
|
125
|
-
|
126
83
|
describe "#notificate" do
|
127
|
-
|
128
84
|
before do
|
129
85
|
allow(PuntoPagos::Notification).to receive(:new).and_return(notification)
|
130
86
|
allow(notification).to receive(:valid?).with({}, {}).and_return(true)
|
@@ -137,12 +93,6 @@ RSpec.describe TransactionService do
|
|
137
93
|
end
|
138
94
|
|
139
95
|
context "when the notification is valid" do
|
140
|
-
|
141
|
-
it "runs callback after successful payment" do
|
142
|
-
TransactionService.notificate({}, {})
|
143
|
-
expect(ticket.message).to eq("successful payment! #{ticket.id}")
|
144
|
-
end
|
145
|
-
|
146
96
|
it "the notification is completed" do
|
147
97
|
TransactionService.notificate({}, {})
|
148
98
|
expect(transaction.reload.state).to eq('completed')
|
@@ -158,10 +108,6 @@ RSpec.describe TransactionService do
|
|
158
108
|
it "the notification is rejected" do
|
159
109
|
expect(transaction.reload.state).to eq('rejected')
|
160
110
|
end
|
161
|
-
|
162
|
-
it "calls error callbacks" do
|
163
|
-
expect(ticket.message).to eq("error paying ticket #{ticket.id}")
|
164
|
-
end
|
165
111
|
end
|
166
112
|
|
167
113
|
context "when the notification is completed" do
|
@@ -1,7 +1,7 @@
|
|
1
|
-
require
|
1
|
+
require "rails_helper"
|
2
2
|
|
3
|
-
RSpec.describe PuntoPagosRails::Transaction, :
|
3
|
+
RSpec.describe PuntoPagosRails::Transaction, type: :model do
|
4
4
|
describe "associations" do
|
5
|
-
it { should belong_to(:
|
5
|
+
it { should belong_to(:payable) }
|
6
6
|
end
|
7
7
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
"%��Rm�v�S3.��O�L���ڹc�ƕq�=_j�
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
I"�app/assets/javascripts/application.js?type=application/javascript&pipeline=self&id=4f33a83654a06a7f2eb59d63957c6c4d25a0fd062a80793620e3e5a877963bad:ET
|
Binary file
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
I"}app/assets/stylesheets/application.css?type=text/css&id=8f935d0fc9961e2fd9e2fd589aa71a241f80760bb1e8049b5fa31101b6121bf7:ET
|
@@ -0,0 +1 @@
|
|
1
|
+
I"�file:///Users/leandro/src/punto_pagos_rails/spec/dummy/app/assets/stylesheets/application.css?type=text/css&pipeline=self&id=bcac671b11df32b847194f8b6008bbb5badd2dcc5faa5fdbe35ac74889257edf:ET
|
@@ -0,0 +1 @@
|
|
1
|
+
"%��Rm�v�S3.��O�L���ڹc�ƕq�=_j�
|
Binary file
|
@@ -0,0 +1,3 @@
|
|
1
|
+
[o:Set:
|
2
|
+
@hash{
|
3
|
+
I"environment-version:ETTI"environment-paths;TTI"Zprocessors:type=application/javascript&file_type=application/javascript&pipeline=self;TTI"hfile-digest:///Users/leandro/src/punto_pagos_rails/spec/dummy/app/assets/javascripts/application.js;TTI"Yfile-digest:///Users/leandro/src/punto_pagos_rails/spec/dummy/app/assets/javascripts;TT
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
I"�app/assets/stylesheets/application.css?type=text/css&pipeline=self&id=2229631e3b828ee4822ce343befd9a40117a9904c9bc4b782c33b6a338e5f359:ET
|
Binary file
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
"%]!�K��X�K�֓�ޖ���';�����4x��
|
Binary file
|
@@ -0,0 +1,2 @@
|
|
1
|
+
[o:Set:
|
2
|
+
@hash{I"environment-version:ETTI"environment-paths;TTI"0processors:type=text/css&file_type=text/css;TTI"ifile-digest:///Users/leandro/src/punto_pagos_rails/spec/dummy/app/assets/stylesheets/application.css;TTI">processors:type=text/css&file_type=text/css&pipeline=self;TTI"Yfile-digest:///Users/leandro/src/punto_pagos_rails/spec/dummy/app/assets/stylesheets;TT
|
Binary file
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
I"�file:///Users/leandro/src/punto_pagos_rails/spec/dummy/app/assets/javascripts/application.js?type=application/javascript&pipeline=self&id=862a9c78cf156953166744449cee2b97ad84f042558b4ab6df00327c381a59d9:ET
|
@@ -0,0 +1,2 @@
|
|
1
|
+
[o:Set:
|
2
|
+
@hash{I"environment-version:ETTI"environment-paths;TTI"Lprocessors:type=application/javascript&file_type=application/javascript;TTI"hfile-digest:///Users/leandro/src/punto_pagos_rails/spec/dummy/app/assets/javascripts/application.js;TTI"Zprocessors:type=application/javascript&file_type=application/javascript&pipeline=self;TTI"Yfile-digest:///Users/leandro/src/punto_pagos_rails/spec/dummy/app/assets/javascripts;TT
|
Binary file
|
@@ -0,0 +1,2 @@
|
|
1
|
+
[o:Set:
|
2
|
+
@hash{I"environment-version:ETTI"environment-paths;TTI"Lprocessors:type=application/javascript&file_type=application/javascript;TTI"8file-digest://app/assets/javascripts/application.js;TTI"Zprocessors:type=application/javascript&file_type=application/javascript&pipeline=self;TTI")file-digest://app/assets/javascripts;TT
|
@@ -0,0 +1 @@
|
|
1
|
+
I"�file:///Users/leandro/src/punto_pagos_rails/spec/dummy/app/assets/javascripts/application.js?type=application/javascript&id=1dbf46b3e04cf23d24969e2932c55eee600642217bd7f6dcb248973a908b1472:ET
|
@@ -0,0 +1 @@
|
|
1
|
+
I"�app/assets/javascripts/application.js?type=application/javascript&id=eaf30316c06d166f77be04ec2a6c1898139deb48be6348a447a9d38d73977952:ET
|
@@ -0,0 +1 @@
|
|
1
|
+
I"�file:///Users/leandro/src/punto_pagos_rails/spec/dummy/app/assets/stylesheets/application.css?type=text/css&id=c258ee9b7d8c1bcb1529ad1bf669a1d303b10c98b36ccc4cacf46f492500a277:ET
|
@@ -0,0 +1,3 @@
|
|
1
|
+
[o:Set:
|
2
|
+
@hash{
|
3
|
+
I"environment-version:ETTI"environment-paths;TTI">processors:type=text/css&file_type=text/css&pipeline=self;TTI"ifile-digest:///Users/leandro/src/punto_pagos_rails/spec/dummy/app/assets/stylesheets/application.css;TTI"Yfile-digest:///Users/leandro/src/punto_pagos_rails/spec/dummy/app/assets/stylesheets;TT
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
"%]!�K��X�K�֓�ޖ���';�����4x��
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/-X/-XTIyQr6h6v7T797GfFzdxqCpKSZOqemHQqHEHYUItM.cache
ADDED
Binary file
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/1j/1jUXrYbF7jVcJvYHZHNALKbMrXby0qIkxLwN8tMjdl4.cache
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
I"}app/assets/stylesheets/application.css?type=text/css&id=ac4682cb37bd663b8c4706e6fddbf19701afd75bb51929d6dff10bdb8a5f1430:ET
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/35/35wQlbi0EDG73ZKIiHHpphoZJZUu58POM42B-3-_YX0.cache
ADDED
Binary file
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/3_/3_b-g2v_V_5gxPdo0uhVAPJZLSsCkSSaJFpHHHnZ6F4.cache
ADDED
Binary file
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5c/5cJuB5GT-GVCPeIQQKexe51JarYx5Zm4Kp5nky33tn8.cache
ADDED
Binary file
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6O/6OwNk80Fc8hd4f__QxpOLC_qYWFA-uI_iRugkIWqvIQ.cache
ADDED
Binary file
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6X/6X_ukW43EGeNCQiNv8Ocr70mO25LldjeBozF4UiIz50.cache
ADDED
Binary file
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7b/7bjowlWzolEF985bac_6I5v3HWZiFJRoa-nqHtn-OXY.cache
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
I"�/Users/leandro/src/punto_pagos_rails/app/assets/stylesheets/punto_pagos_rails/application.css?type=text/css&pipeline=self&id=a1093c3d434103230d21880331ba4bbe0f7d1de19edbcb9365c89cf9e837456e:ET
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7i/7io2gyVCCR83Rk6ocF1HUvam1FLz4-Q1MRk6A10JM0M.cache
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
I"�/Users/leandro/src/punto_pagos_rails/app/assets/javascripts/punto_pagos_rails/application.js?type=application/javascript&id=aadfe729fbf292033222be375218e9beb5fb152d14e8b04e9f8f79c055054e8b:ET
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7q/7qnRlg2H1sxfHtaPIpNmoVimW9VFj-yqT0iPzyTT_K4.cache
ADDED
Binary file
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8Y/8Yb56gIA7T5L10wvHz-fWkKSn254pSN73L7VKYH1Rjg.cache
ADDED
Binary file
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/96/962nogFuXwCsVtC50UP3FjcEJxWutj384ciKyDgI2cU.cache
ADDED
Binary file
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/9X/9XlM_JtRmY5gbMkK5gueswD7s_ctcOLacU5VYno5ymw.cache
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
I"�app/assets/stylesheets/application.css?type=text/css&pipeline=self&id=1f3c6a6dca44606922cc06c28045078d5e2f2f810970ee2f40e3d5a87a18901f:ET
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/AL/AL6PBU18v_L-23J6RrXIF6BAiPpCRKl0psIsbveU4lA.cache
ADDED
Binary file
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/AP/AP0_3b5N2aJWVyyANhjLMP7qdpczG_C1lo6AtzELoyU.cache
ADDED
Binary file
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/EN/EN1sgFDBtOLV_nTM5QCygjXFjJjrCwASL91R_jbxJqo.cache
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
"%��Rm�v�S3.��O�L���ڹc�ƕq�=_j�
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/EN/eNStu73G536x1iNq9tePGM6hv5Xa6-5ZsXtfJuiDtfE.cache
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
I"�app/assets/javascripts/application.js?type=application/javascript&id=fcbe1cbffc1db2d60b4ba3faf3937285736e8abd041dc060ddf10627c0e6f1e5:ET
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Fi/FiuTIVrQEp_PZDI6AFR7KQkoUtnCXkFVKyr2aSzCINI.cache
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
I"�app/assets/stylesheets/application.css?type=text/css&pipeline=self&id=68c121d9dbb95c23a33bc37fc84997549794f4329c111831cf7213e3fd7daa75:ET
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/HG/HGWuC1XP4qTav8SMCTMvqubfgC1g-BXJH6zXci4WaI8.cache
ADDED
Binary file
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/LK/LK5DwcQTCssBt2sSq8waYL_2OW6zUuLZoRK4vXkUbx0.cache
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
I"}app/assets/stylesheets/application.css?type=text/css&id=05580e194e82fc60ac4678aada24abee54ca9dd81e52c82e247bc32c3f422f2b:ET
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/LO/LOIw_QrLu6EqRv2po1AhlmvJ5T0AcIZuJV0rK15RRx0.cache
ADDED
@@ -0,0 +1,2 @@
|
|
1
|
+
[o:Set:
|
2
|
+
@hash{I"environment-version:ETTI"environment-paths;TTI"rails-env;TTI"?processors:type=text/css&file_type=text/css&pipeline=debug;TTI"9file-digest://app/assets/stylesheets/application.css;TTI">processors:type=text/css&file_type=text/css&pipeline=self;TTI")file-digest://app/assets/stylesheets;TT
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/MT/MTvVhODKf8qABXyyCrbfCfpCTIA5KjS3WxBpMCXHKRU.cache
ADDED
Binary file
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/NR/NRsBMlnlc4XT7crH9pvz4ygo-ZR4AgiGeRMZQPavCxM.cache
ADDED
Binary file
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/O8/O8akbUwAbmIKY-AhITimq-JDQ6IgsO3Hvq2v5etufFw.cache
ADDED
Binary file
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/PS/PSM535pl0G8ic1fKKJ0rkGdwrgW8b8OITOW47jl2t1g.cache
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
"%��Rm�v�S3.��O�L���ڹc�ƕq�=_j�
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/R4/R4lZxKQXv7q9xqB-H6AKh5-KeSELCFkMP12qMQ6dMLI.cache
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
I"�/Users/leandro/src/punto_pagos_rails/app/assets/javascripts/punto_pagos_rails/application.js?type=application/javascript&pipeline=self&id=1eb3541765b6ade985b2ac356525282dcda72492d4a61d2ee6cb90bb7b5c705f:ET
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Rm/Rmkvmvnp04uG1YyAWhY8BHBd--6SqqV8mNPXCkmCucs.cache
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
"%]!�K��X�K�֓�ޖ���';�����4x��
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ro/RofByYcbsjOYAjsoyMoH5z1COA5fQ80RZoqB_YRLa84.cache
ADDED
Binary file
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Rv/Rv0mdxEdzMSxJjrULhpSoGWLCDhlnkqCy48ujNWsXcw.cache
ADDED
Binary file
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/SX/SX0FzvVXLoVzYDZN95Hikfe-1VExx8LZgZh4bam53yE.cache
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
I"�app/assets/javascripts/application.js?type=application/javascript&pipeline=debug&id=1172feba7953a0a1c9893021afd318385906fb5be6b923c4718208891b070f62:ET
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ui/Ui4eBSjoI421Dzo1z47yeUqcwD-oL_xNCuU_GZ2qh5Y.cache
ADDED
Binary file
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/V6/V6ShJgOfSo2QDO2zt0zlU1dNhHNG52w6gJbrqt3xnls.cache
ADDED
Binary file
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/VR/VRC0qpQ2CiJgNEMvtXOvEDluwkaoomyJeAm7Unfrcr0.cache
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
I"�/Users/leandro/src/punto_pagos_rails/app/assets/stylesheets/punto_pagos_rails/application.css?type=text/css&pipeline=self&id=4d5369e7d21fe423fa1daeef06216e741bf3a344f14e703ea9658f5b97eb7850:ET
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/VY/VYpuh0Ag6L55xqqNJ1mGLQVvGlNNH50DN6HApLtiRSk.cache
ADDED
Binary file
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/X7/X7YQ6EHE68K2fFs0F2XPWazA8x8qVSZuaaYjKvgRj7w.cache
ADDED
Binary file
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_l/_lYTKdS6o8FBFea0eYn8eIwjaExcmX5d2ukNTLvrE-c.cache
ADDED
Binary file
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/bz/bzN6Qn7mi2daF9JkWWFmcv8yPYyWuLQOwlOUre3D-Vg.cache
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
"%���mB��c�$�8;��8�r�8]R�MQ�c=Ib
|