cieloz 0.0.11 → 0.0.12

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 0fa0a9cf1caf4f16b20c69fe6e08f656715a9a94
4
+ data.tar.gz: 9603263ebfe0b7d6560a6b34bac9fac9fd47d103
5
+ SHA512:
6
+ metadata.gz: 423afd1f49a2ea85a804d395d5a46ed6820aacd5ae27d51eef4cfc090f787f287a0889f1368383381888d5b11238a87706adcc17cc99044b5b046b240cdc7280
7
+ data.tar.gz: db34b666cdb22bfb00d9f86cf72e67680f4c56921e6613c356b17cce12e2e939a39535613b40589e46c07ca8b5d846ba9028308419c0e1dbc3024ac49eadeb04
data/.gitignore CHANGED
@@ -15,3 +15,4 @@ spec/reports
15
15
  test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
+ .rbenv-version
data/cieloz.gemspec CHANGED
@@ -23,7 +23,7 @@ Gem::Specification.new do |gem|
23
23
 
24
24
  gem.add_development_dependency "rake"
25
25
  gem.add_development_dependency "turn"
26
- gem.add_development_dependency "fakeweb"
26
+ gem.add_development_dependency "vcr"
27
27
  gem.add_development_dependency "debugger"
28
28
 
29
29
  # see https://github.com/thoughtbot/shoulda-matchers/issues/235
@@ -20,8 +20,8 @@ class Cieloz::RequisicaoTransacao
20
20
  portador.numero.gsub! ' ', ''
21
21
  end
22
22
 
23
- validates :numero, format: { with: /^\d{16}$/ }
24
- validates :codigo_seguranca, format: { with: /^(\d{3}|\d{4})$/ }
23
+ validates :numero, format: { with: /\A\d{16}\z/ }
24
+ validates :codigo_seguranca, format: { with: /\A(\d{3}|\d{4})\z/ }
25
25
 
26
26
  validate :valida_ano_validade, unless: ->{ validade.nil? }
27
27
  validate :valida_mes_validade, unless: ->{ validade.nil? }
@@ -1,3 +1,3 @@
1
1
  module Cieloz
2
- VERSION = "0.0.11"
2
+ VERSION = "0.0.12"
3
3
  end
data/lib/cieloz.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'active_support/core_ext/string'
2
2
  require 'active_support/core_ext/object/with_options'
3
+ require 'active_support/core_ext/module/attribute_accessors'
3
4
  require 'active_model'
4
5
  require 'nokogiri'
5
6
 
@@ -0,0 +1,45 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://ecommerce.cielo.com.br/servicos/ecommwsec.do
6
+ body:
7
+ encoding: UTF-8
8
+ string: mensagem=<?xml version="1.0" encoding="UTF-8"?><requisicao id="1" versao="1.2.0"><dados-ec><numero>123</numero><chave>abc123</chave></dados-ec></requisicao>
9
+ headers:
10
+ Accept-Encoding:
11
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
+ Accept:
13
+ - '*/*'
14
+ User-Agent:
15
+ - Ruby
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Date:
22
+ - Sat, 10 Aug 2013 17:53:03 GMT
23
+ Content-Length:
24
+ - '389'
25
+ Set-Cookie:
26
+ - JSESSIONID=YjvcSG2QTWBbfT1VN3CFVCnWJlhBvwJkZk5DbNv7lv1rYL1vM1pP!-1396492505;
27
+ path=/
28
+ - cielo_cbmp=2233422090.37151.0000; path=/
29
+ Content-Type:
30
+ - text/xml; charset=ISO-8859-1
31
+ body:
32
+ encoding: ASCII-8BIT
33
+ string: !binary |-
34
+ PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8
35
+ ZXJybyB4bWxucz0iaHR0cDovL2Vjb21tZXJjZS5jYm1wLmNvbS5iciI+PGNv
36
+ ZGlnbz4wMDE8L2NvZGlnbz48bWVuc2FnZW0+PCFbQ0RBVEFbCk8gWE1MIGlu
37
+ Zm9ybWFkbyBu428g6SB2YWxpZG86Ci0gSW52YWxpZCB0eXBlOiAnPGVjb206
38
+ cmVxdWlzaWNhbyBpZD0iMSIgdmVyc2FvPSIxLjIuMCIgeG1sbnM6ZWNvbT0i
39
+ aHR0cDovL2Vjb21tZXJjZS5jYm1wLmNvbS5iciI+PGVjb206ZGFkb3MtZWM+
40
+ PGVjb206bnVtZXJvPjEyMzwvZWNvbTpudW1lcm8+PGVjb206Y2hhdmU+YWJj
41
+ MTIzPC9lY29tOmNoYXZlPjwvZWNvbTpkYWRvcy1lYz48L2Vjb206cmVxdWlz
42
+ aWNhbz4nCl1dPjwvbWVuc2FnZW0+PC9lcnJvPgo=
43
+ http_version:
44
+ recorded_at: Sat, 10 Aug 2013 17:53:05 GMT
45
+ recorded_with: VCR 2.5.0
@@ -0,0 +1,45 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://ecommerce.cielo.com.br/servicos/ecommwsec.do
6
+ body:
7
+ encoding: UTF-8
8
+ string: mensagem=<?xml version="1.0" encoding="UTF-8"?><requisicao id="1" versao="1.2.0"><dados-ec><numero>123</numero><chave>abc123</chave></dados-ec></requisicao>
9
+ headers:
10
+ Accept-Encoding:
11
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
+ Accept:
13
+ - '*/*'
14
+ User-Agent:
15
+ - Ruby
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Date:
22
+ - Sat, 10 Aug 2013 17:53:04 GMT
23
+ Content-Length:
24
+ - '389'
25
+ Set-Cookie:
26
+ - JSESSIONID=Gy8BSG2Q2vwL8FpG6gPpG24ngCj5ndpCvspynK1HgpljGzBL5Ymh!-1396492505;
27
+ path=/
28
+ - cielo_cbmp=2216644874.37151.0000; path=/
29
+ Content-Type:
30
+ - text/xml; charset=ISO-8859-1
31
+ body:
32
+ encoding: ASCII-8BIT
33
+ string: !binary |-
34
+ PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8
35
+ ZXJybyB4bWxucz0iaHR0cDovL2Vjb21tZXJjZS5jYm1wLmNvbS5iciI+PGNv
36
+ ZGlnbz4wMDE8L2NvZGlnbz48bWVuc2FnZW0+PCFbQ0RBVEFbCk8gWE1MIGlu
37
+ Zm9ybWFkbyBu428g6SB2YWxpZG86Ci0gSW52YWxpZCB0eXBlOiAnPGVjb206
38
+ cmVxdWlzaWNhbyBpZD0iMSIgdmVyc2FvPSIxLjIuMCIgeG1sbnM6ZWNvbT0i
39
+ aHR0cDovL2Vjb21tZXJjZS5jYm1wLmNvbS5iciI+PGVjb206ZGFkb3MtZWM+
40
+ PGVjb206bnVtZXJvPjEyMzwvZWNvbTpudW1lcm8+PGVjb206Y2hhdmU+YWJj
41
+ MTIzPC9lY29tOmNoYXZlPjwvZWNvbTpkYWRvcy1lYz48L2Vjb206cmVxdWlz
42
+ aWNhbz4nCl1dPjwvbWVuc2FnZW0+PC9lcnJvPgo=
43
+ http_version:
44
+ recorded_at: Sat, 10 Aug 2013 17:53:05 GMT
45
+ recorded_with: VCR 2.5.0
@@ -0,0 +1,59 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://qasecommerce.cielo.com.br/servicos/ecommwsec.do
6
+ body:
7
+ encoding: UTF-8
8
+ string: mensagem=<?xml version="1.0" encoding="UTF-8"?><requisicao-transacao
9
+ id="1001734898090FD31001" versao="1.2.0"><dados-ec><numero>1001734898</numero><chave>e84827130b9837473681c2787007da5914d6359947015a5cdb2b8843db0fa832</chave></dados-ec><dados-pedido><numero>123</numero><valor>5000</valor><moeda>986</moeda><data-hora>2013-08-10T14:53:05</data-hora><descricao>teste</descricao><idioma>PT</idioma><soft-descriptor>13letterstest</soft-descriptor></dados-pedido><forma-pagamento><bandeira>visa</bandeira><produto>1</produto><parcelas>1</parcelas></forma-pagamento><url-retorno>http://localhost:3000/cielo/callback</url-retorno><autorizar>3</autorizar><capturar>true</capturar><campo-livre>debug</campo-livre></requisicao-transacao>
10
+ headers:
11
+ Accept-Encoding:
12
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
13
+ Accept:
14
+ - '*/*'
15
+ User-Agent:
16
+ - Ruby
17
+ response:
18
+ status:
19
+ code: 200
20
+ message: OK
21
+ headers:
22
+ Date:
23
+ - Sat, 10 Aug 2013 17:53:04 GMT
24
+ Server:
25
+ - Apache/2.2.22 (Unix) mod_ssl/2.2.22 OpenSSL/0.9.8x
26
+ Content-Length:
27
+ - '670'
28
+ Set-Cookie:
29
+ - JSESSIONID=YfKwSG2QvBm20F6RYBsDcwwLSCw3M4qL7rFQLCkr7F5ytBL91nKy!-1344845050;
30
+ path=/
31
+ X-Powered-By:
32
+ - Servlet/2.5 JSP/2.1
33
+ Content-Type:
34
+ - text/xml; charset=ISO-8859-1
35
+ body:
36
+ encoding: UTF-8
37
+ string: |
38
+ <?xml version="1.0" encoding="ISO-8859-1"?>
39
+ <transacao versao="1.2.0" id="1001734898090FD31001" xmlns="http://ecommerce.cbmp.com.br">
40
+ <tid>1001734898000E531001</tid>
41
+ <dados-pedido>
42
+ <numero>123</numero>
43
+ <valor>5000</valor>
44
+ <moeda>986</moeda>
45
+ <data-hora>2013-08-10T14:53:04.333-03:00</data-hora>
46
+ <descricao>teste</descricao>
47
+ <idioma>PT</idioma>
48
+ </dados-pedido>
49
+ <forma-pagamento>
50
+ <bandeira>visa</bandeira>
51
+ <produto>1</produto>
52
+ <parcelas>1</parcelas>
53
+ </forma-pagamento>
54
+ <status>0</status>
55
+ <url-autenticacao>https://cerecommerce.cielo.com.br/web/index.cbmp?id=608c31fb28c54bda159cd46d08766439</url-autenticacao>
56
+ </transacao>
57
+ http_version:
58
+ recorded_at: Sat, 10 Aug 2013 17:53:06 GMT
59
+ recorded_with: VCR 2.5.0
@@ -2,14 +2,19 @@ require 'debugger'
2
2
  require 'cieloz'
3
3
 
4
4
  require 'minitest/autorun'
5
- require 'turn/autorun'
5
+ # require 'turn/autorun'
6
6
 
7
7
  require 'minitest/matchers'
8
8
  require 'shoulda/matchers'
9
9
 
10
- require 'fakeweb'
10
+ require 'vcr'
11
11
  require 'erb'
12
12
 
13
+ VCR.configure do |c|
14
+ c.cassette_library_dir = 'test/fixtures/vcr_cassettes'
15
+ c.hook_into :webmock
16
+ end
17
+
13
18
  class MiniTest::Spec
14
19
  include Shoulda::Matchers::ActiveModel
15
20
 
@@ -40,33 +40,25 @@ describe Cieloz::Requisicao do
40
40
  end
41
41
 
42
42
  describe "complex attributes" do
43
- let(:ec) { Cieloz::Configuracao.credenciais }
43
+ let(:ec) { Cieloz::Configuracao.credenciais }
44
44
  let(:xml) { expected_xml(opts) { xml_for :ec, dir, binding } }
45
45
 
46
46
  it "serializes" do
47
- subject.submit # @dados_ec is set on submission
48
- assert_equal xml, subject.to_xml
47
+ VCR.use_cassette("requisicao_test_complex_attributes") do
48
+ subject.submit # @dados_ec is set on submission
49
+ assert_equal xml, subject.to_xml
50
+ end
49
51
  end
50
52
  end
51
53
 
52
54
  describe "request posting" do
53
- let(:err) { "101" }
54
- let(:msg) { "Invalid" }
55
- let(:fake_response) { render_template dir, "erro.xml", binding }
56
-
57
- before do
58
- FakeWeb.register_uri :post, Cieloz::Configuracao.url, body: fake_response
59
- end
60
-
61
55
  it "sends to test web service" do
62
- erro = subject.submit
63
- assert_equal({}, subject.errors.messages)
64
- assert_equal err, erro.codigo
65
- assert_equal "Invalid", erro.mensagem
66
- end
67
-
68
- after do
69
- FakeWeb.clean_registry
56
+ VCR.use_cassette("requisicao_test_request_posting") do
57
+ res = subject.submit
58
+ assert_equal({}, subject.errors.messages)
59
+ refute_nil res.codigo
60
+ refute_nil res.mensagem
61
+ end
70
62
  end
71
63
  end
72
64
  end
@@ -43,24 +43,19 @@ describe Cieloz::RequisicaoTransacao do
43
43
 
44
44
  describe "request posting" do
45
45
  let(:status_txn) { "0" }
46
- let(:tid) { "1001734898090FD31001" }
46
+ let(:id) { "1001734898090FD31001" }
47
+ let(:tid) { "1001734898000E531001" }
47
48
  let(:url_cielo) {
48
- "https://qasecommerce.cielo.com.br/web/index.cbmp?id=690ef010bfa77778f23da1a982d5d4cc"
49
+ "https://cerecommerce.cielo.com.br/web/index.cbmp?id=608c31fb28c54bda159cd46d08766439"
49
50
  }
50
- let(:fake_response) { render_template dir, "transacao.xml", binding }
51
51
 
52
52
  before do
53
53
  portador.nome_portador = "Jose da Silva"
54
- FakeWeb.register_uri :post, Cieloz::Configuracao.url, body: fake_response
55
- end
56
-
57
- after do
58
- FakeWeb.clean_registry
59
54
  end
60
55
 
61
56
  it "sends to test web service" do
62
57
  Cieloz::Configuracao.reset!
63
- subject.id = SecureRandom.uuid
58
+ subject.id = tid
64
59
  subject.versao = "1.2.0"
65
60
  # txn.dados_portador = portador # buy page loja only!
66
61
  subject.dados_pedido = pedido
@@ -70,7 +65,11 @@ describe Cieloz::RequisicaoTransacao do
70
65
  subject.capturar_automaticamente
71
66
  subject.campo_livre = "debug"
72
67
 
73
- res = subject.submit
68
+ res = nil
69
+ VCR.use_cassette("requisicao_transacao_test_request_posting") do
70
+ res = subject.submit
71
+ end
72
+
74
73
  assert_equal({}, subject.errors.messages)
75
74
  assert_equal Cieloz::Requisicao::Transacao, res.class
76
75
  assert_equal tid, res.tid
metadata CHANGED
@@ -1,132 +1,116 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cieloz
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.11
5
- prerelease:
4
+ version: 0.0.12
6
5
  platform: ruby
7
6
  authors:
8
7
  - Fábio Luiz Nery de Miranda
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-05-28 00:00:00.000000000 Z
11
+ date: 2013-08-10 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: nokogiri
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - '>='
28
25
  - !ruby/object:Gem::Version
29
26
  version: '0'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: activesupport
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - '>='
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - '>='
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: activemodel
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - '>='
52
46
  - !ruby/object:Gem::Version
53
47
  version: '0'
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - '>='
60
53
  - !ruby/object:Gem::Version
61
54
  version: '0'
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: rake
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ! '>='
59
+ - - '>='
68
60
  - !ruby/object:Gem::Version
69
61
  version: '0'
70
62
  type: :development
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ! '>='
66
+ - - '>='
76
67
  - !ruby/object:Gem::Version
77
68
  version: '0'
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: turn
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
- - - ! '>='
73
+ - - '>='
84
74
  - !ruby/object:Gem::Version
85
75
  version: '0'
86
76
  type: :development
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
- - - ! '>='
80
+ - - '>='
92
81
  - !ruby/object:Gem::Version
93
82
  version: '0'
94
83
  - !ruby/object:Gem::Dependency
95
- name: fakeweb
84
+ name: vcr
96
85
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
86
  requirements:
99
- - - ! '>='
87
+ - - '>='
100
88
  - !ruby/object:Gem::Version
101
89
  version: '0'
102
90
  type: :development
103
91
  prerelease: false
104
92
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
93
  requirements:
107
- - - ! '>='
94
+ - - '>='
108
95
  - !ruby/object:Gem::Version
109
96
  version: '0'
110
97
  - !ruby/object:Gem::Dependency
111
98
  name: debugger
112
99
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
100
  requirements:
115
- - - ! '>='
101
+ - - '>='
116
102
  - !ruby/object:Gem::Version
117
103
  version: '0'
118
104
  type: :development
119
105
  prerelease: false
120
106
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
107
  requirements:
123
- - - ! '>='
108
+ - - '>='
124
109
  - !ruby/object:Gem::Version
125
110
  version: '0'
126
111
  - !ruby/object:Gem::Dependency
127
112
  name: bourne
128
113
  requirement: !ruby/object:Gem::Requirement
129
- none: false
130
114
  requirements:
131
115
  - - '='
132
116
  - !ruby/object:Gem::Version
@@ -134,7 +118,6 @@ dependencies:
134
118
  type: :development
135
119
  prerelease: false
136
120
  version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
121
  requirements:
139
122
  - - '='
140
123
  - !ruby/object:Gem::Version
@@ -142,33 +125,29 @@ dependencies:
142
125
  - !ruby/object:Gem::Dependency
143
126
  name: shoulda-matchers
144
127
  requirement: !ruby/object:Gem::Requirement
145
- none: false
146
128
  requirements:
147
- - - ! '>='
129
+ - - '>='
148
130
  - !ruby/object:Gem::Version
149
131
  version: '0'
150
132
  type: :development
151
133
  prerelease: false
152
134
  version_requirements: !ruby/object:Gem::Requirement
153
- none: false
154
135
  requirements:
155
- - - ! '>='
136
+ - - '>='
156
137
  - !ruby/object:Gem::Version
157
138
  version: '0'
158
139
  - !ruby/object:Gem::Dependency
159
140
  name: minitest-matchers
160
141
  requirement: !ruby/object:Gem::Requirement
161
- none: false
162
142
  requirements:
163
- - - ! '>='
143
+ - - '>='
164
144
  - !ruby/object:Gem::Version
165
145
  version: '0'
166
146
  type: :development
167
147
  prerelease: false
168
148
  version_requirements: !ruby/object:Gem::Requirement
169
- none: false
170
149
  requirements:
171
- - - ! '>='
150
+ - - '>='
172
151
  - !ruby/object:Gem::Version
173
152
  version: '0'
174
153
  description: A utility gem for Cielo Integration
@@ -215,6 +194,9 @@ files:
215
194
  - readme/supported_products.png
216
195
  - readme/termo_de_adesao_de_risco.pdf
217
196
  - readme/verified_by_visa.png
197
+ - test/fixtures/vcr_cassettes/requisicao_test_complex_attributes.yml
198
+ - test/fixtures/vcr_cassettes/requisicao_test_request_posting.yml
199
+ - test/fixtures/vcr_cassettes/requisicao_transacao_test_request_posting.yml
218
200
  - test/integration/integration_test.rb
219
201
  - test/minitest_helper.rb
220
202
  - test/unit/bandeiras_operacoes_test.rb
@@ -236,29 +218,31 @@ files:
236
218
  - test/unit/xml/transacao.xml
237
219
  homepage: https://github.com/fabiolnm/cieloz
238
220
  licenses: []
221
+ metadata: {}
239
222
  post_install_message:
240
223
  rdoc_options: []
241
224
  require_paths:
242
225
  - lib
243
226
  required_ruby_version: !ruby/object:Gem::Requirement
244
- none: false
245
227
  requirements:
246
- - - ! '>='
228
+ - - '>='
247
229
  - !ruby/object:Gem::Version
248
230
  version: '0'
249
231
  required_rubygems_version: !ruby/object:Gem::Requirement
250
- none: false
251
232
  requirements:
252
- - - ! '>='
233
+ - - '>='
253
234
  - !ruby/object:Gem::Version
254
235
  version: '0'
255
236
  requirements: []
256
237
  rubyforge_project:
257
- rubygems_version: 1.8.23
238
+ rubygems_version: 2.0.3
258
239
  signing_key:
259
- specification_version: 3
240
+ specification_version: 4
260
241
  summary: ''
261
242
  test_files:
243
+ - test/fixtures/vcr_cassettes/requisicao_test_complex_attributes.yml
244
+ - test/fixtures/vcr_cassettes/requisicao_test_request_posting.yml
245
+ - test/fixtures/vcr_cassettes/requisicao_transacao_test_request_posting.yml
262
246
  - test/integration/integration_test.rb
263
247
  - test/minitest_helper.rb
264
248
  - test/unit/bandeiras_operacoes_test.rb