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.
Files changed (138) hide show
  1. checksums.yaml +4 -4
  2. data/app/models/punto_pagos_rails/transaction.rb +7 -8
  3. data/config/locales/en.yml +0 -3
  4. data/config/locales/es.yml +0 -3
  5. data/config/routes.rb +0 -5
  6. data/lib/generators/punto_pagos_rails/install/USAGE +2 -5
  7. data/lib/generators/punto_pagos_rails/install/install_generator.rb +5 -39
  8. data/lib/generators/punto_pagos_rails/install/templates/puntopagos.yml +9 -10
  9. data/lib/generators/punto_pagos_rails/install/templates/transactions_migration.rb +18 -0
  10. data/lib/generators/punto_pagos_rails/payment_flow/USAGE +5 -0
  11. data/lib/generators/punto_pagos_rails/payment_flow/payment_flow_generator.rb +80 -0
  12. data/lib/generators/punto_pagos_rails/payment_flow/templates/error.html.erb +5 -0
  13. data/lib/generators/punto_pagos_rails/payment_flow/templates/success.html.erb +5 -0
  14. data/lib/generators/punto_pagos_rails/payment_flow/templates/transactions_controller.rb.erb +40 -0
  15. data/lib/punto_pagos_rails.rb +1 -10
  16. data/lib/punto_pagos_rails/engine.rb +1 -1
  17. data/lib/punto_pagos_rails/payable.rb +23 -0
  18. data/lib/punto_pagos_rails/transaction_service.rb +53 -61
  19. data/lib/punto_pagos_rails/version.rb +1 -1
  20. data/spec/dummy/app/controllers/home_controller.rb +0 -1
  21. data/spec/dummy/app/controllers/transactions_controller.rb +40 -0
  22. data/spec/dummy/app/models/ticket.rb +1 -19
  23. data/spec/dummy/app/views/home/index.html.erb +3 -2
  24. data/spec/dummy/app/views/transactions/error.html.erb +6 -0
  25. data/spec/dummy/app/views/transactions/success.html.erb +6 -0
  26. data/spec/dummy/config/environments/test.rb +1 -1
  27. data/spec/dummy/config/puntopagos.yml +9 -9
  28. data/spec/dummy/config/routes.rb +4 -2
  29. data/spec/dummy/db/development.sqlite3 +0 -0
  30. data/spec/dummy/db/migrate/20141026172010_create_tickets.rb +1 -1
  31. data/spec/dummy/db/migrate/20160605212231_create_punto_pagos_rails_transactions.rb +18 -0
  32. data/spec/dummy/db/schema.rb +11 -8
  33. data/spec/dummy/db/test.sqlite3 +0 -0
  34. data/spec/dummy/log/development.log +809 -0
  35. data/spec/dummy/log/test.log +31272 -0
  36. data/spec/dummy/spec/controllers/transactions_controller_spec.rb +88 -0
  37. data/spec/dummy/spec/lib/punto_pagos_rails/transaction_service_spec.rb +6 -60
  38. data/spec/dummy/spec/models/punto_pagos_rails/transaction_spec.rb +3 -3
  39. data/spec/dummy/spec/models/ticket_spec.rb +2 -2
  40. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/3Fw4ZqAHNcyjp32NvDuTNl_UqelVnkm1oFk6m8TeecE.cache +1 -0
  41. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/3_/3_b-g2v_V_5gxPdo0uhVAPJZLSsCkSSaJFpHHHnZ6F4.cache +0 -0
  42. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/5X/5XQR5pxibZfdEuTpakchl9HyBfhnPIGcUuB7zJON788.cache +1 -0
  43. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/5bSj5g83MbQ9DKsPwLU9twrU7yvLq6dYmmH-HEs29O8.cache +0 -0
  44. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/6X/6X_ukW43EGeNCQiNv8Ocr70mO25LldjeBozF4UiIz50.cache +0 -0
  45. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/7q/7qi1bAa7jI04pIaFgMGEMDgWNCI-Q7diVLAm3btoA84.cache +1 -0
  46. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/CduZWIah5G8fpSjD5QO6TFJXr_9TFOHxCbC1Gy8qZxA.cache +1 -0
  47. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/EN/EN1sgFDBtOLV_nTM5QCygjXFjJjrCwASL91R_jbxJqo.cache +1 -0
  48. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/Ee/EeKGFrz9PyEmN_5oeyYYGsl3_g2AHxfLBpYXIlZ9qEo.cache +0 -0
  49. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/Fv8tnOEJ_LEgSDbDEuTuiPLB-eEYIhxUwZsDBbio46w.cache +3 -0
  50. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/J5/J54BxjKsqhvXfShEaZNnH6dfnLMS0zoVH5mgbz0DK7Y.cache +0 -0
  51. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/J8/J88DZaT-14iePrHbjUeroRM6XiHxwmMw7k38S1nwR5g.cache +1 -0
  52. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/MdPfZAJEELkc6iJn6XlCxHSkYdgQ_wgGW950s4axvcs.cache +0 -0
  53. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/O8/O8akbUwAbmIKY-AhITimq-JDQ6IgsO3Hvq2v5etufFw.cache +2 -0
  54. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/Pkh2wBkC6wpkIuR8EXAg7elsBHnTjVINP97B71GAyhE.cache +0 -0
  55. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/Rm/Rmkvmvnp04uG1YyAWhY8BHBd--6SqqV8mNPXCkmCucs.cache +1 -0
  56. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/VgFPEFaNzkUqN75RTiy1JzWIXg87PGB93hDXsTqxyB8.cache +0 -0
  57. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/XfKoGAu1QFs7NV03JWa4QQtoTQSkqlJZx05IkDCP3PM.cache +2 -0
  58. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/XyFO2KxykoEaX_adyCFw667OfGArrYXTOYXJ9b0PgOo.cache +0 -0
  59. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/a_dtAAwExwuAXpiGsCZKz3W46CsW_KVxNTRFOdoaKzg.cache +0 -0
  60. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/esq8UjWY8tb8I8CizPRT_shPmdQKJYyr2DN19n2klo4.cache +1 -0
  61. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/hj/hj8Ir9wcVSy1KYrnWu9bpD24vDhCG3tvt-nKbNxb1Wg.cache +3 -0
  62. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/k7noXdZau3gX1CJSriYJIBcNHPwc3318AUHIWCHXKhg.cache +2 -0
  63. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/kn/knvCbDNyQEDreqWUaqRkfTor_EXoGTzPbMdMwdIBJlU.cache +0 -0
  64. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/oC/oCsZTGZyV4kH8Y4OeSDUdrwfkJFPzTODZjuBKZB8oGQ.cache +2 -0
  65. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/ogxRgAPyiZ-Nu3IjkBEw9ruI1Knjq_YU6HyWixUrg7g.cache +1 -0
  66. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/om/omKjrYUgD72M_fYBz1rlfZYic0JVNLXPKY8BGn43I5w.cache +1 -0
  67. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/r0gbTq2v9cKQuG206qQxGolfvjBYw3POwlACk7b41Rg.cache +1 -0
  68. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/rorzxYMlgwKrzjSt_2tNP0StT9Q3pelAqgmVf3YA9SY.cache +3 -0
  69. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/sM/sMuWOI50W0n-l80Pew5AJTy2B4tY5K8RuLjbeB7jQp0.cache +0 -0
  70. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/t78LfYaGJpEOdllJ9lsrnLCKTCSkoSJWU17iCNcvy94.cache +1 -0
  71. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/tP/tPF6H9NRpGO3whu2y5_e_R_1EACKdCwu5437D83qJT0.cache +3 -0
  72. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/-X/-XTIyQr6h6v7T797GfFzdxqCpKSZOqemHQqHEHYUItM.cache +0 -0
  73. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/1j/1jUXrYbF7jVcJvYHZHNALKbMrXby0qIkxLwN8tMjdl4.cache +1 -0
  74. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/35/35wQlbi0EDG73ZKIiHHpphoZJZUu58POM42B-3-_YX0.cache +0 -0
  75. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/3_/3_b-g2v_V_5gxPdo0uhVAPJZLSsCkSSaJFpHHHnZ6F4.cache +0 -0
  76. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5c/5cJuB5GT-GVCPeIQQKexe51JarYx5Zm4Kp5nky33tn8.cache +0 -0
  77. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6O/6OwNk80Fc8hd4f__QxpOLC_qYWFA-uI_iRugkIWqvIQ.cache +0 -0
  78. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6X/6X_ukW43EGeNCQiNv8Ocr70mO25LldjeBozF4UiIz50.cache +0 -0
  79. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7b/7bjowlWzolEF985bac_6I5v3HWZiFJRoa-nqHtn-OXY.cache +1 -0
  80. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7i/7io2gyVCCR83Rk6ocF1HUvam1FLz4-Q1MRk6A10JM0M.cache +1 -0
  81. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7q/7qnRlg2H1sxfHtaPIpNmoVimW9VFj-yqT0iPzyTT_K4.cache +0 -0
  82. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8Y/8Yb56gIA7T5L10wvHz-fWkKSn254pSN73L7VKYH1Rjg.cache +0 -0
  83. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/96/962nogFuXwCsVtC50UP3FjcEJxWutj384ciKyDgI2cU.cache +0 -0
  84. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/9X/9XlM_JtRmY5gbMkK5gueswD7s_ctcOLacU5VYno5ymw.cache +1 -0
  85. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/AL/AL6PBU18v_L-23J6RrXIF6BAiPpCRKl0psIsbveU4lA.cache +0 -0
  86. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/AP/AP0_3b5N2aJWVyyANhjLMP7qdpczG_C1lo6AtzELoyU.cache +0 -0
  87. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/EN/EN1sgFDBtOLV_nTM5QCygjXFjJjrCwASL91R_jbxJqo.cache +1 -0
  88. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/EN/eNStu73G536x1iNq9tePGM6hv5Xa6-5ZsXtfJuiDtfE.cache +1 -0
  89. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Fi/FiuTIVrQEp_PZDI6AFR7KQkoUtnCXkFVKyr2aSzCINI.cache +1 -0
  90. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/HG/HGWuC1XP4qTav8SMCTMvqubfgC1g-BXJH6zXci4WaI8.cache +0 -0
  91. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/LK/LK5DwcQTCssBt2sSq8waYL_2OW6zUuLZoRK4vXkUbx0.cache +1 -0
  92. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/LO/LOIw_QrLu6EqRv2po1AhlmvJ5T0AcIZuJV0rK15RRx0.cache +2 -0
  93. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/MT/MTvVhODKf8qABXyyCrbfCfpCTIA5KjS3WxBpMCXHKRU.cache +0 -0
  94. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/NR/NRsBMlnlc4XT7crH9pvz4ygo-ZR4AgiGeRMZQPavCxM.cache +0 -0
  95. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/O8/O8akbUwAbmIKY-AhITimq-JDQ6IgsO3Hvq2v5etufFw.cache +0 -0
  96. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/PS/PSM535pl0G8ic1fKKJ0rkGdwrgW8b8OITOW47jl2t1g.cache +1 -0
  97. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/R4/R4lZxKQXv7q9xqB-H6AKh5-KeSELCFkMP12qMQ6dMLI.cache +1 -0
  98. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Rm/Rmkvmvnp04uG1YyAWhY8BHBd--6SqqV8mNPXCkmCucs.cache +1 -0
  99. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ro/RofByYcbsjOYAjsoyMoH5z1COA5fQ80RZoqB_YRLa84.cache +0 -0
  100. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Rv/Rv0mdxEdzMSxJjrULhpSoGWLCDhlnkqCy48ujNWsXcw.cache +0 -0
  101. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/SX/SX0FzvVXLoVzYDZN95Hikfe-1VExx8LZgZh4bam53yE.cache +1 -0
  102. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ui/Ui4eBSjoI421Dzo1z47yeUqcwD-oL_xNCuU_GZ2qh5Y.cache +0 -0
  103. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/V6/V6ShJgOfSo2QDO2zt0zlU1dNhHNG52w6gJbrqt3xnls.cache +0 -0
  104. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/VR/VRC0qpQ2CiJgNEMvtXOvEDluwkaoomyJeAm7Unfrcr0.cache +1 -0
  105. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/VY/VYpuh0Ag6L55xqqNJ1mGLQVvGlNNH50DN6HApLtiRSk.cache +0 -0
  106. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/X7/X7YQ6EHE68K2fFs0F2XPWazA8x8qVSZuaaYjKvgRj7w.cache +0 -0
  107. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_l/_lYTKdS6o8FBFea0eYn8eIwjaExcmX5d2ukNTLvrE-c.cache +0 -0
  108. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/bz/bzN6Qn7mi2daF9JkWWFmcv8yPYyWuLQOwlOUre3D-Vg.cache +1 -0
  109. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ct/ctDRUdbKV5LoS0RdmDmOALjaV_onM7pOxr9_otXO9Gk.cache +1 -0
  110. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/es/esYVHbG7qL7AKN3EPN_UFicQM3c0WTcTjqjDGibdz-Y.cache +0 -0
  111. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/hj/hj8Ir9wcVSy1KYrnWu9bpD24vDhCG3tvt-nKbNxb1Wg.cache +0 -0
  112. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/iN/iNm88b30nwQF3isi7fjLhZ2910IcuCKNax81fzqHsxY.cache +1 -0
  113. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/jU/jUktWNbR4V7n34UAZe7uJpmEofhflF0bVtIO2BgxyJ8.cache +2 -0
  114. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/n4/n4XUXceOzK3gzQKg0Yb9WM-8GLaKrlEERxF518Xms_A.cache +1 -0
  115. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/oC/oCsZTGZyV4kH8Y4OeSDUdrwfkJFPzTODZjuBKZB8oGQ.cache +0 -0
  116. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/pH/pHvc6bYKLtA9GnOyAwdBMb2HvRJUv-cGBBeZy2A-Js8.cache +1 -0
  117. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/pQ/pQoK49Hl4bSF5SQ4TKClybBt_EWRkffqmCqLhDJLlSs.cache +1 -0
  118. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/qm/qmCn2iU2tPJeg0QV3QYriSUlxoprqYFAm_jxVHRxK-c.cache +0 -0
  119. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/qu/qukp51oNpP4gQ4mcNPg8p7zttzOMUFWms2yHWGoZKGs.cache +0 -0
  120. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/tP/tPF6H9NRpGO3whu2y5_e_R_1EACKdCwu5437D83qJT0.cache +0 -0
  121. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/w_/w_v89Lo_bpb8aAsrFe9y5cBhNobVJ6MwvJqav7plorY.cache +1 -0
  122. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/xU/xU8kTXBeW6eLfp_eNY6xEEideoQNSHIMC9yQ-P1OPO8.cache +1 -0
  123. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/y8/y8u-QuBe2neNMwhZPDIz3ZE5FqNjBEux-ttpcsU9Qxc.cache +0 -0
  124. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yh/yhC-Cty2J5UucXyvUWMfhQRgloZBt67FS7bSQpo7MMk.cache +1 -0
  125. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/zd/zdeYpARJAH5-6ruhRV2366gVGYJ5TdX23ccaWKWHbYw.cache +0 -0
  126. data/spec/{dummy/spec/factories → factories}/tickets.rb +1 -1
  127. data/spec/factories/transaction.rb +6 -0
  128. metadata +229 -54
  129. data/app/controllers/punto_pagos_rails/transactions_controller.rb +0 -73
  130. data/db/migrate/20140928003539_create_punto_pagos_rails_transactions.rb +0 -13
  131. data/lib/generators/punto_pagos_rails/install/templates/error.html.erb +0 -6
  132. data/lib/generators/punto_pagos_rails/install/templates/punto_pagos_rails.rb +0 -3
  133. data/lib/generators/punto_pagos_rails/install/templates/success.html.erb +0 -6
  134. data/lib/punto_pagos_rails/resource_extension.rb +0 -25
  135. data/spec/dummy/app/views/punto_pagos_rails/transactions/error.html.erb +0 -6
  136. data/spec/dummy/app/views/punto_pagos_rails/transactions/success.html.erb +0 -6
  137. data/spec/dummy/config/initializers/punto_pagos_rails.rb +0 -3
  138. 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 'rails_helper'
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.id) }
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) { PuntoPagosRails::Transaction.create(resource: ticket, token: SecureRandom.base64) }
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 resource error" do
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 'rails_helper'
1
+ require "rails_helper"
2
2
 
3
- RSpec.describe PuntoPagosRails::Transaction, :type => :model do
3
+ RSpec.describe PuntoPagosRails::Transaction, type: :model do
4
4
  describe "associations" do
5
- it { should belong_to(:resource) }
5
+ it { should belong_to(:payable) }
6
6
  end
7
7
  end
@@ -1,6 +1,6 @@
1
- require 'rails_helper'
1
+ require "rails_helper"
2
2
 
3
- RSpec.describe Ticket, :type => :model do
3
+ RSpec.describe Ticket, type: :model do
4
4
  describe "associations" do
5
5
  it { should have_many(:transactions) }
6
6
  end
@@ -0,0 +1 @@
1
+ "%��Rm�v�S3.��O�L���ڹc�ƕq�=_j�
@@ -0,0 +1 @@
1
+ I"�app/assets/javascripts/application.js?type=application/javascript&pipeline=self&id=4f33a83654a06a7f2eb59d63957c6c4d25a0fd062a80793620e3e5a877963bad:ET
@@ -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�
@@ -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
@@ -0,0 +1 @@
1
+ I"�app/assets/stylesheets/application.css?type=text/css&pipeline=self&id=2229631e3b828ee4822ce343befd9a40117a9904c9bc4b782c33b6a338e5f359:ET
@@ -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"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
@@ -0,0 +1 @@
1
+ "%]!�K��X�K�֓�ޖ���';�����4x��
@@ -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
@@ -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,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"8file-digest://app/assets/javascripts/application.js;TTI")file-digest://app/assets/javascripts;TT
@@ -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
@@ -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
@@ -0,0 +1 @@
1
+ "%]!�K��X�K�֓�ޖ���';�����4x��
@@ -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"9file-digest://app/assets/stylesheets/application.css;TTI")file-digest://app/assets/stylesheets;TT
@@ -0,0 +1 @@
1
+ I"}app/assets/stylesheets/application.css?type=text/css&id=ac4682cb37bd663b8c4706e6fddbf19701afd75bb51929d6dff10bdb8a5f1430:ET
@@ -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
@@ -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
@@ -0,0 +1 @@
1
+ I"�app/assets/stylesheets/application.css?type=text/css&pipeline=self&id=1f3c6a6dca44606922cc06c28045078d5e2f2f810970ee2f40e3d5a87a18901f:ET
@@ -0,0 +1 @@
1
+ "%��Rm�v�S3.��O�L���ڹc�ƕq�=_j�
@@ -0,0 +1 @@
1
+ I"�app/assets/javascripts/application.js?type=application/javascript&id=fcbe1cbffc1db2d60b4ba3faf3937285736e8abd041dc060ddf10627c0e6f1e5:ET
@@ -0,0 +1 @@
1
+ I"�app/assets/stylesheets/application.css?type=text/css&pipeline=self&id=68c121d9dbb95c23a33bc37fc84997549794f4329c111831cf7213e3fd7daa75:ET
@@ -0,0 +1 @@
1
+ I"}app/assets/stylesheets/application.css?type=text/css&id=05580e194e82fc60ac4678aada24abee54ca9dd81e52c82e247bc32c3f422f2b:ET
@@ -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
@@ -0,0 +1 @@
1
+ "%��Rm�v�S3.��O�L���ڹc�ƕq�=_j�
@@ -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
@@ -0,0 +1 @@
1
+ "%]!�K��X�K�֓�ޖ���';�����4x��
@@ -0,0 +1 @@
1
+ I"�app/assets/javascripts/application.js?type=application/javascript&pipeline=debug&id=1172feba7953a0a1c9893021afd318385906fb5be6b923c4718208891b070f62:ET
@@ -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
@@ -0,0 +1 @@
1
+ "%���mB��c�$�8 ;��8�r�8]R�MQ�c=Ib