punto_pagos_rails 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c2925e8a7b2c73d9b4cefb455e60c21c2dd7d85a
4
- data.tar.gz: 117862cebbbc1a6da832d3527ce0eeab6e66a835
3
+ metadata.gz: 0802b882684f0f88e366a6286bf88001576d7040
4
+ data.tar.gz: 0abf35bab91213a7d0e99ecd01a97c825b33cca7
5
5
  SHA512:
6
- metadata.gz: 6238fc74190358fc857b40ae5ad545ebb25f5b12a932afee5769db43979e86f95f0a586b7e7d62773f34825e4e902aa92515d308f699ba93ba2b8ea6e8a38a11
7
- data.tar.gz: 5279ff9e41f03a8a5ab4f9764ae8b8c67e88c1a9beaa68c83534cf5fe4dc9c14cd4fda9b09ada4bf70fb35ac20ad27c5ba7ff90bca4a85c81e3e941d5d51065e
6
+ metadata.gz: a8c5528f759e9dd8be5c6604d2c1036ae84840f69401f7ce8e18b108b3345371806555d9538d982359cbd6e61ab60aadeb03ae6462b640c31d532a03e75d0de6
7
+ data.tar.gz: 15942f1a64c89f99f86dc81dc0df429bf1fcbe78d3bcf4398e0565c0d9cb35fdd283e0356df07d461215b8050d73aead3ac846b520e8d75a62e5d6e808a5d6dd
@@ -5,6 +5,10 @@ module PuntoPagosRails
5
5
  extend ActiveSupport::Concern
6
6
 
7
7
  included do
8
+ include ActiveSupport::Callbacks
9
+ define_callbacks :payment_error
10
+ define_callbacks :payment_success
11
+
8
12
  has_many :transactions, class_name: 'PuntoPagosRails::Transaction', foreign_key: :resource_id
9
13
 
10
14
  def paid?
@@ -15,24 +19,7 @@ module PuntoPagosRails
15
19
  end
16
20
 
17
21
  module ClassMethods
18
-
19
- def on_payment_error(&block)
20
- @payment_error_cb = block
21
- end
22
-
23
- def on_payment_success(&block)
24
- @payment_success_cb = block
25
- end
26
-
27
- def notify(resource, type)
28
- if type == :error && @payment_error_cb
29
- resource.instance_exec(&@payment_error_cb)
30
- end
31
- if type == :success && @payment_success_cb
32
- resource.instance_exec(&@payment_success_cb)
33
- end
34
- end
35
-
22
+ # TODO
36
23
  end
37
24
  end
38
25
  end
@@ -27,10 +27,8 @@ module PuntoPagosRails
27
27
  err = params[:error]
28
28
 
29
29
  if notification.valid?(headers, params)
30
- PuntoPagosRails.resource_class.notify(@resource, :success)
31
30
  respond_success(tken)
32
31
  else
33
- PuntoPagosRails.resource_class.notify(@resource, :error)
34
32
  respond_error(tken, err)
35
33
  end
36
34
  end
@@ -51,16 +49,20 @@ module PuntoPagosRails
51
49
  def self.respond_success(token)
52
50
  transaction = processing_transaction(token)
53
51
  return if transaction.nil?
54
- transaction.complete
55
- transaction.save
52
+ transaction.resource.run_callbacks :payment_success do
53
+ transaction.complete
54
+ transaction.save
55
+ end
56
56
  { respuesta: SUCCESS_CODE, token: token }
57
57
  end
58
58
 
59
59
  def self.respond_error(token, error)
60
60
  transaction = processing_transaction(token)
61
61
  return if transaction.nil?
62
- transaction.reject_with(error)
63
- transaction.save
62
+ transaction.resource.run_callbacks :payment_error do
63
+ transaction.reject_with(error)
64
+ transaction.save
65
+ end
64
66
  { respuesta: ERROR_CODE, error: error, token: token }
65
67
  end
66
68
 
@@ -1,3 +1,3 @@
1
1
  module PuntoPagosRails
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -1,4 +1,13 @@
1
1
  class Ticket < ActiveRecord::Base
2
2
  include PuntoPagosRails::ResourceExtension
3
3
 
4
+ attr_reader :message
5
+
6
+ set_callback :payment_success, :after do
7
+ @message = "successful payment! #{self.id}"
8
+ end
9
+
10
+ set_callback :payment_error, :after do
11
+ @message = "error paying ticket #{self.id}"
12
+ end
4
13
  end
@@ -11,7 +11,7 @@ RSpec.describe TransactionService do
11
11
  let(:token) { 'XXXXX' }
12
12
  let(:payment_process_url) { double }
13
13
  let(:notification) { double }
14
- let(:transaction) { Transaction.create }
14
+ let(:transaction) { PuntoPagosRails::Transaction.create(resource: ticket) }
15
15
 
16
16
  before do
17
17
  allow(PuntoPagos::Request).to receive(:new).and_return(request)
@@ -98,6 +98,11 @@ RSpec.describe TransactionService do
98
98
 
99
99
  context "when the notification is valid" do
100
100
 
101
+ it "runs callback after successful payment" do
102
+ TransactionService.notificate({}, {})
103
+ expect(ticket.message).to eq("successful payment! #{ticket.id}")
104
+ end
105
+
101
106
  it "the notification is completed" do
102
107
  TransactionService.notificate({}, {})
103
108
  expect(transaction.reload.state).to eq('completed')
@@ -107,12 +112,16 @@ RSpec.describe TransactionService do
107
112
  context "when the notification is invalid" do
108
113
  before do
109
114
  allow(notification).to receive(:valid?).with({}, {}).and_return(false)
115
+ TransactionService.notificate({}, {})
110
116
  end
111
117
 
112
118
  it "the notification is rejected" do
113
- TransactionService.notificate({}, {})
114
119
  expect(transaction.reload.state).to eq('rejected')
115
120
  end
121
+
122
+ it "calls error callbacks" do
123
+ expect(ticket.message).to eq("error paying ticket #{ticket.id}")
124
+ end
116
125
  end
117
126
 
118
127
  context "when the notification is completed" do
data/spec/rails_helper.rb CHANGED
@@ -17,6 +17,8 @@ RSpec.configure do |config|
17
17
  config.order = :random
18
18
  config.render_views
19
19
  config.include FactoryGirl::Syntax::Methods
20
+ config.filter_run :focus
21
+ config.run_all_when_everything_filtered = true
20
22
 
21
23
  FactoryGirl::SyntaxRunner.send(:include, RSpec::Mocks::ExampleMethods)
22
24
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: punto_pagos_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Leandro Segovia
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-27 00:00:00.000000000 Z
11
+ date: 2015-08-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails