dineromail 0.1.4 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,15 +2,15 @@ require 'happymapper'
2
2
  module Dineromail
3
3
  class Notification
4
4
  include HappyMapper
5
-
5
+
6
6
  tag 'operacion'
7
- element :transaction_id, Integer, :tag => 'id'
7
+ element :transaction_id, String, :tag => 'id'
8
8
  element :type, String, :tag => 'tipo'
9
-
9
+
10
10
  def initialize(options = {})
11
11
  @options = options.symbolize_keys
12
12
  end
13
-
13
+
14
14
  def status_report
15
15
  unless @status_report
16
16
  @status_report = StatusReport.get_report_for(transaction_id,@options)
@@ -18,21 +18,31 @@ module Dineromail
18
18
  @status_report
19
19
  end
20
20
 
21
+ def transaction_id
22
+ #If the transaction_id being used is the string representation
23
+ #of an integer return an integer for backward compatibility
24
+ if @transaction_id =~ /\A\d+\Z/
25
+ @transaction_id.to_i
26
+ else
27
+ @transaction_id
28
+ end
29
+ end
30
+
21
31
  def valid_report?
22
32
  status_report.valid_report?
23
33
  end
24
-
34
+
25
35
  def method_missing(symbol, *args)
26
36
  unless status_report.operations.empty?
27
37
  status_report.operations.first.send(symbol, *args)
28
38
  end
29
39
  end
30
-
40
+
31
41
  def self.parse(xml)
32
42
  #Convert tags to lowercase
33
43
  xml = xml.gsub(/<(.*?)[> ]/){|tag| tag.downcase}
34
44
  super(xml)
35
45
  end
36
-
46
+
37
47
  end
38
- end
48
+ end
@@ -4,7 +4,7 @@ module Dineromail
4
4
  include HappyMapper
5
5
 
6
6
  tag 'operacion'
7
- element :transaction_id, Integer, :tag => 'id'
7
+ element :transaction_id, String, :tag => 'id'
8
8
  element :date, DateTime, :tag => 'fecha'
9
9
  element :status, Integer, :tag => 'estado'
10
10
  element :amount, Float, :tag => 'monto'
@@ -30,5 +30,15 @@ module Dineromail
30
30
  status == CANCELLED_STATUS
31
31
  end
32
32
 
33
+ def transaction_id
34
+ #If the transaction_id being used is the string representation
35
+ #of an integer return an integer for backward compatibility
36
+ if @transaction_id =~ /\A\d+\Z/
37
+ @transaction_id.to_i
38
+ else
39
+ @transaction_id
40
+ end
41
+ end
42
+
33
43
  end
34
44
  end
@@ -4,8 +4,6 @@ require 'dineromail/buyer'
4
4
  require 'dineromail/operation'
5
5
  module Dineromail
6
6
  class StatusReport
7
- attr_accessor :transaction_id
8
-
9
7
  include HappyMapper
10
8
 
11
9
  tag 'reporte'
@@ -1,3 +1,3 @@
1
1
  module Dineromail
2
- VERSION = "0.1.4"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -9,6 +9,12 @@ describe Dineromail::Notification do
9
9
  notifications.last.transaction_id.should == 5547
10
10
  end
11
11
 
12
+ it 'should allow alphanumeric transaction ids' do
13
+ notification_xml = File.read( 'spec/fixtures/notification_alphanumeric_id.xml')
14
+ notifications = Dineromail::Notification.parse(notification_xml)
15
+ notifications.first.transaction_id.should == 'ABC123'
16
+ end
17
+
12
18
  it 'should get automaticaly the status data associated with the notification' do
13
19
  HTTParty.stub!(:get).and_return {
14
20
  stub :body => File.read( 'spec/fixtures/status_report.xml')
@@ -36,6 +36,13 @@ describe Dineromail::StatusReport do
36
36
  item.unit_price.should == 6.9
37
37
  end
38
38
 
39
+ it 'should allow alphanumeric transaction ids' do
40
+ xml = File.read( 'spec/fixtures/status_report_alphanumeric_id.xml')
41
+ status_report = Dineromail::StatusReport.parse(xml)
42
+ operation = status_report.operations.first
43
+ operation.transaction_id.should == 'ABC123'
44
+ end
45
+
39
46
  it 'should use the configuration to get the parameters for the request if no options are given' do
40
47
  transaction_id = 42
41
48
  Dineromail.configure do |c|
@@ -0,0 +1,10 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <NOTIFICACION>
3
+ <TIPONOTIFICACION>1</TIPONOTIFICACION>
4
+ <OPERACIONES>
5
+ <OPERACION>
6
+ <TIPO>1</TIPO>
7
+ <ID>ABC123</ID>
8
+ </OPERACION>
9
+ </OPERACIONES>
10
+ </NOTIFICACION>
@@ -5,7 +5,7 @@
5
5
  <OPERACIONES>
6
6
  <OPERACION>
7
7
  <ID>1889</ID>
8
- <FECHA>01/28/2011 12:02:01 PM</FECHA>
8
+ <FECHA>28/01/2011 12:02:01 PM</FECHA>
9
9
  <ESTADO>1</ESTADO>
10
10
  <NUMTRANSACCION>67777</NUMTRANSACCION>
11
11
  <COMPRADOR>
@@ -0,0 +1,40 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <REPORTE>
3
+ <ESTADOREPORTE>1</ESTADOREPORTE>
4
+ <DETALLE>
5
+ <OPERACIONES>
6
+ <OPERACION>
7
+ <ID>ABC123</ID>
8
+ <FECHA>28/01/2011 12:02:01 PM</FECHA>
9
+ <ESTADO>1</ESTADO>
10
+ <NUMTRANSACCION>67777</NUMTRANSACCION>
11
+ <COMPRADOR>
12
+ <EMAIL>comprador@email.com</EMAIL>
13
+ <DIRECCION>San Martin 10</DIRECCION>
14
+ <COMENTARIO>comentario</COMENTARIO>
15
+ <NOMBRE>Juan</NOMBRE>
16
+ <TELEFONO>4444444</TELEFONO>
17
+ <TIPODOC>DNI</TIPODOC>
18
+ <NUMERODOC>222222222</NUMERODOC>
19
+ </COMPRADOR>
20
+ <MONTO>60.2</MONTO>
21
+ <MONTONETO>50.3</MONTONETO>
22
+ <METODOPAGO>TARJETA DE CREDITO</METODOPAGO>
23
+ <MEDIOPAGO>VISA</MEDIOPAGO>
24
+ <CUOTAS>1</CUOTAS>
25
+ <ITEMS>
26
+ <ITEM>
27
+ <DESCRIPCION>Libro</DESCRIPCION>
28
+ <MONEDA>1</MONEDA>
29
+ <PRECIOUNITARIO>6.90</PRECIOUNITARIO>
30
+ <CANTIDAD>2</CANTIDAD>
31
+ </ITEM>
32
+ </ITEMS>
33
+ <VENDEDOR>
34
+ <TIPODOC></TIPODOC>
35
+ <NUMERODOC></NUMERODOC>
36
+ </VENDEDOR>
37
+ </OPERACION>
38
+ </OPERACIONES>
39
+ </DETALLE>
40
+ </REPORTE>
metadata CHANGED
@@ -1,122 +1,93 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: dineromail
3
- version: !ruby/object:Gem::Version
4
- hash: 19
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 1
9
- - 4
10
- version: 0.1.4
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
+ prerelease:
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Nicolas Mosconi
14
9
  - Shadi Calcagni
15
10
  - Juan Pablo Gutierrez
16
11
  autorequire:
17
12
  bindir: bin
18
13
  cert_chain: []
19
-
20
- date: 2011-09-05 00:00:00 -03:00
21
- default_executable:
22
- dependencies:
23
- - !ruby/object:Gem::Dependency
14
+ date: 2012-07-18 00:00:00.000000000 Z
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
24
17
  name: happymapper
25
- prerelease: false
26
- requirement: &id001 !ruby/object:Gem::Requirement
18
+ requirement: &82024490 !ruby/object:Gem::Requirement
27
19
  none: false
28
- requirements:
29
- - - ">="
30
- - !ruby/object:Gem::Version
31
- hash: 3
32
- segments:
33
- - 0
34
- version: "0"
20
+ requirements:
21
+ - - ! '>='
22
+ - !ruby/object:Gem::Version
23
+ version: '0'
35
24
  type: :runtime
36
- version_requirements: *id001
37
- - !ruby/object:Gem::Dependency
38
- name: httparty
39
25
  prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
26
+ version_requirements: *82024490
27
+ - !ruby/object:Gem::Dependency
28
+ name: httparty
29
+ requirement: &82111890 !ruby/object:Gem::Requirement
41
30
  none: false
42
- requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
45
- hash: 3
46
- segments:
47
- - 0
48
- version: "0"
31
+ requirements:
32
+ - - ! '>='
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
49
35
  type: :runtime
50
- version_requirements: *id002
51
- - !ruby/object:Gem::Dependency
52
- name: rails
53
36
  prerelease: false
54
- requirement: &id003 !ruby/object:Gem::Requirement
37
+ version_requirements: *82111890
38
+ - !ruby/object:Gem::Dependency
39
+ name: rails
40
+ requirement: &82111490 !ruby/object:Gem::Requirement
55
41
  none: false
56
- requirements:
42
+ requirements:
57
43
  - - ~>
58
- - !ruby/object:Gem::Version
59
- hash: 7
60
- segments:
61
- - 3
62
- - 0
63
- version: "3.0"
44
+ - !ruby/object:Gem::Version
45
+ version: '3.0'
64
46
  type: :runtime
65
- version_requirements: *id003
66
- - !ruby/object:Gem::Dependency
67
- name: bundler
68
47
  prerelease: false
69
- requirement: &id004 !ruby/object:Gem::Requirement
48
+ version_requirements: *82111490
49
+ - !ruby/object:Gem::Dependency
50
+ name: bundler
51
+ requirement: &82111210 !ruby/object:Gem::Requirement
70
52
  none: false
71
- requirements:
72
- - - ">="
73
- - !ruby/object:Gem::Version
74
- hash: 3
75
- segments:
76
- - 0
77
- version: "0"
53
+ requirements:
54
+ - - ! '>='
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
78
57
  type: :development
79
- version_requirements: *id004
80
- - !ruby/object:Gem::Dependency
81
- name: rspec-rails
82
58
  prerelease: false
83
- requirement: &id005 !ruby/object:Gem::Requirement
59
+ version_requirements: *82111210
60
+ - !ruby/object:Gem::Dependency
61
+ name: rspec-rails
62
+ requirement: &82110980 !ruby/object:Gem::Requirement
84
63
  none: false
85
- requirements:
86
- - - ">="
87
- - !ruby/object:Gem::Version
88
- hash: 3
89
- segments:
90
- - 0
91
- version: "0"
64
+ requirements:
65
+ - - ! '>='
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
92
68
  type: :development
93
- version_requirements: *id005
94
- - !ruby/object:Gem::Dependency
95
- name: rspec2-rails-views-matchers
96
69
  prerelease: false
97
- requirement: &id006 !ruby/object:Gem::Requirement
70
+ version_requirements: *82110980
71
+ - !ruby/object:Gem::Dependency
72
+ name: rspec2-rails-views-matchers
73
+ requirement: &82110760 !ruby/object:Gem::Requirement
98
74
  none: false
99
- requirements:
100
- - - ">="
101
- - !ruby/object:Gem::Version
102
- hash: 3
103
- segments:
104
- - 0
105
- version: "0"
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
106
79
  type: :development
107
- version_requirements: *id006
80
+ prerelease: false
81
+ version_requirements: *82110760
108
82
  description: Integration with dineromail plataform for rails projects
109
- email:
83
+ email:
110
84
  - nicolas@soluciones-simplex.com.ar
111
85
  - shadi@soluciones-simplex.com.ar
112
86
  - juanpablo@soluciones-simplex.com.ar
113
87
  executables: []
114
-
115
88
  extensions: []
116
-
117
89
  extra_rdoc_files: []
118
-
119
- files:
90
+ files:
120
91
  - .gitignore
121
92
  - Gemfile
122
93
  - LICENSE
@@ -135,42 +106,34 @@ files:
135
106
  - spec/dineromail/notification_spec.rb
136
107
  - spec/dineromail/status_report_spec.rb
137
108
  - spec/fixtures/notification.xml
109
+ - spec/fixtures/notification_alphanumeric_id.xml
138
110
  - spec/fixtures/status_report.xml
111
+ - spec/fixtures/status_report_alphanumeric_id.xml
139
112
  - spec/helpers/dineromail_helper_spec.rb
140
113
  - spec/spec_helper.rb
141
- has_rdoc: true
142
- homepage: ""
114
+ homepage: ''
143
115
  licenses: []
144
-
145
116
  post_install_message:
146
117
  rdoc_options: []
147
-
148
- require_paths:
118
+ require_paths:
149
119
  - lib
150
- required_ruby_version: !ruby/object:Gem::Requirement
120
+ required_ruby_version: !ruby/object:Gem::Requirement
151
121
  none: false
152
- requirements:
153
- - - ">="
154
- - !ruby/object:Gem::Version
155
- hash: 3
156
- segments:
157
- - 0
158
- version: "0"
159
- required_rubygems_version: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ required_rubygems_version: !ruby/object:Gem::Requirement
160
127
  none: false
161
- requirements:
162
- - - ">="
163
- - !ruby/object:Gem::Version
164
- hash: 3
165
- segments:
166
- - 0
167
- version: "0"
128
+ requirements:
129
+ - - ! '>='
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
168
132
  requirements: []
169
-
170
133
  rubyforge_project:
171
- rubygems_version: 1.3.7
134
+ rubygems_version: 1.8.11
172
135
  signing_key:
173
136
  specification_version: 3
174
137
  summary: Dineromail library for Rails
175
138
  test_files: []
176
-
139
+ has_rdoc: