br_nfe 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/Gemfile +15 -0
- data/Gemfile.lock +169 -0
- data/LICENSE +20 -0
- data/README.markdown +6 -0
- data/Rakefile +13 -0
- data/br_nfe.gemspec +28 -0
- data/lib/br_nfe/active_model_base.rb +62 -0
- data/lib/br_nfe/base.rb +168 -0
- data/lib/br_nfe/condicao_pagamento.rb +26 -0
- data/lib/br_nfe/destinatario.rb +26 -0
- data/lib/br_nfe/emitente.rb +40 -0
- data/lib/br_nfe/endereco.rb +44 -0
- data/lib/br_nfe/helper/cpf_cnpj.rb +60 -0
- data/lib/br_nfe/helper/have_address.rb +29 -0
- data/lib/br_nfe/helper/have_condicao_pagamento.rb +24 -0
- data/lib/br_nfe/helper/have_destinatario.rb +18 -0
- data/lib/br_nfe/helper/have_emitente.rb +20 -0
- data/lib/br_nfe/helper/have_intermediario.rb +24 -0
- data/lib/br_nfe/helper/have_rps.rb +27 -0
- data/lib/br_nfe/helper/string_methods.rb +21 -0
- data/lib/br_nfe/seed.rb +195 -0
- data/lib/br_nfe/servico/base.rb +35 -0
- data/lib/br_nfe/servico/betha/base.rb +74 -0
- data/lib/br_nfe/servico/betha/v1/build_response.rb +219 -0
- data/lib/br_nfe/servico/betha/v1/cancelamento_nfs.rb +52 -0
- data/lib/br_nfe/servico/betha/v1/consulta_lote_rps.rb +31 -0
- data/lib/br_nfe/servico/betha/v1/consulta_nfs_por_rps.rb +34 -0
- data/lib/br_nfe/servico/betha/v1/consulta_nfse.rb +50 -0
- data/lib/br_nfe/servico/betha/v1/consulta_situacao_lote_rps.rb +18 -0
- data/lib/br_nfe/servico/betha/v1/gateway.rb +115 -0
- data/lib/br_nfe/servico/betha/v1/recepcao_lote_rps.rb +89 -0
- data/lib/br_nfe/servico/betha/v2/cancelamento_nfs.rb +25 -0
- data/lib/br_nfe/servico/betha/v2/consulta_lote_rps.rb +27 -0
- data/lib/br_nfe/servico/betha/v2/consulta_nfse_por_rps.rb +27 -0
- data/lib/br_nfe/servico/betha/v2/envio_lote_rps_sincrono.rb +26 -0
- data/lib/br_nfe/servico/betha/v2/gateway.rb +198 -0
- data/lib/br_nfe/servico/betha/v2/gera_nfse.rb +25 -0
- data/lib/br_nfe/servico/betha/v2/recepcao_lote_rps.rb +47 -0
- data/lib/br_nfe/servico/betha/v2/response.rb +23 -0
- data/lib/br_nfe/servico/betha/v2/substituicao_nfse.rb +39 -0
- data/lib/br_nfe/servico/intermediario.rb +17 -0
- data/lib/br_nfe/servico/response/default.rb +34 -0
- data/lib/br_nfe/servico/response/nota_fiscal.rb +73 -0
- data/lib/br_nfe/servico/rps.rb +103 -0
- data/lib/br_nfe/version.rb +8 -0
- data/lib/br_nfe.rb +146 -0
- data/test/br_nfe/base_test.rb +274 -0
- data/test/br_nfe/condicao_pagamento_test.rb +23 -0
- data/test/br_nfe/destinatario_test.rb +26 -0
- data/test/br_nfe/emitente_test.rb +26 -0
- data/test/br_nfe/endereco_test.rb +50 -0
- data/test/br_nfe/helper/have_address_test.rb +62 -0
- data/test/br_nfe/helper/have_condicao_pagamento_test.rb +71 -0
- data/test/br_nfe/helper/have_destinatario_test.rb +64 -0
- data/test/br_nfe/helper/have_emitente_test.rb +63 -0
- data/test/br_nfe/helper/have_intermediario_test.rb +77 -0
- data/test/br_nfe/helper/have_rps_test.rb +59 -0
- data/test/br_nfe/servico/base_test.rb +23 -0
- data/test/br_nfe/servico/betha/base_test.rb +106 -0
- data/test/br_nfe/servico/betha/v1/build_response_test.rb +558 -0
- data/test/br_nfe/servico/betha/v1/cancelamento_nfs_test.rb +62 -0
- data/test/br_nfe/servico/betha/v1/consulta_lote_rps_test.rb +42 -0
- data/test/br_nfe/servico/betha/v1/consulta_nfs_por_rps_test.rb +68 -0
- data/test/br_nfe/servico/betha/v1/consulta_nfse_test.rb +57 -0
- data/test/br_nfe/servico/betha/v1/consulta_situacao_lote_rps_test.rb +27 -0
- data/test/br_nfe/servico/betha/v1/gateway_test.rb +174 -0
- data/test/br_nfe/servico/betha/v1/recepcao_lote_rps_test.rb +235 -0
- data/test/br_nfe/servico/response/default_test.rb +54 -0
- data/test/br_nfe/servico/response/nota_fiscal_test.rb +41 -0
- data/test/br_nfe/servico/rps_test.rb +214 -0
- data/test/certificado.rb +12 -0
- data/test/factories/base.rb +5 -0
- data/test/factories/condicao_pagamento.rb +10 -0
- data/test/factories/destinatario.rb +11 -0
- data/test/factories/emitente.rb +15 -0
- data/test/factories/endereco.rb +12 -0
- data/test/factories/servico/base.rb +5 -0
- data/test/factories/servico/betha/base.rb +5 -0
- data/test/factories/servico/betha/v1/build_response.rb +6 -0
- data/test/factories/servico/betha/v1/cancelamento_nfs.rb +7 -0
- data/test/factories/servico/betha/v1/consulta_lote_rps.rb +6 -0
- data/test/factories/servico/betha/v1/consulta_nfs_por_rps.rb +6 -0
- data/test/factories/servico/betha/v1/consulta_nfse.rb +8 -0
- data/test/factories/servico/betha/v1/consulta_situacao_lote_rps.rb +6 -0
- data/test/factories/servico/betha/v1/gateway.rb +5 -0
- data/test/factories/servico/betha/v1/recepcao_lote_rps.rb +6 -0
- data/test/factories/servico/intermediario.rb +7 -0
- data/test/factories/servico/response/default.rb +10 -0
- data/test/factories/servico/response/nota_fiscal.rb +47 -0
- data/test/factories/servico/rps.rb +44 -0
- data/test/test_helper.rb +39 -0
- metadata +263 -0
@@ -0,0 +1,64 @@
|
|
1
|
+
|
2
|
+
module BrNfeTest
|
3
|
+
module HelperTest
|
4
|
+
module HaveDestinatarioTest
|
5
|
+
class NewClassDestinatario < BrNfe::Destinatario
|
6
|
+
end
|
7
|
+
|
8
|
+
def test_HaveDestinatarioTest_Já_inicia_com_um_destinatario
|
9
|
+
subject.class.new.destinatario.class.must_equal BrNfe::Destinatario
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_HaveDestinatarioTest_Mesmo_setando_o_destinatario_como_nil_retorna_um_novo_destinatario
|
13
|
+
destinatario
|
14
|
+
subject.destinatario = nil
|
15
|
+
subject.destinatario.class.must_equal BrNfe::Destinatario
|
16
|
+
subject.destinatario.wont_equal destinatario
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_HaveDestinatarioTest_deve_manter_o_objeto_destinatario_se_ja_tiver
|
20
|
+
subject.destinatario.must_equal destinatario
|
21
|
+
destinatario.cpf_cnpj = 'nova-www'
|
22
|
+
subject.destinatario.cpf_cnpj.must_equal 'nova-www'
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_HaveDestinatarioTest_Se_setar_o_destinatario_com_outra_class_deve_ignorar
|
26
|
+
subject.destinatario = 7777
|
27
|
+
subject.destinatario.must_equal destinatario
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_HaveDestinatarioTest_posso_setar_o_destinatario_com_um_hash_com_os_parametros_do_destinatario
|
31
|
+
destinatario.assign_attributes(cpf_cnpj: '123456', telefone: '123465', email: 'mail@mail.com')
|
32
|
+
subject.destinatario = {cpf_cnpj: '99999', telefone: '654389', email: 'mail2'}
|
33
|
+
subject.destinatario.cpf_cnpj.must_equal '99999'
|
34
|
+
subject.destinatario.telefone.must_equal '654389'
|
35
|
+
subject.destinatario.email.must_equal 'mail2'
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_HaveDestinatarioTest_posso_setar_o_destinatario_com_um_bloco
|
39
|
+
destinatario.assign_attributes(cpf_cnpj: '123456', telefone: '11111', email: 'mail1')
|
40
|
+
subject.destinatario do |address|
|
41
|
+
address.cpf_cnpj = '99999'
|
42
|
+
address.telefone = '11111'
|
43
|
+
address.email = 'mail1'
|
44
|
+
end
|
45
|
+
subject.destinatario.cpf_cnpj.must_equal '99999'
|
46
|
+
subject.destinatario.telefone.must_equal '11111'
|
47
|
+
subject.destinatario.email.must_equal 'mail1'
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_HaveDestinatarioTest_posso_mudar_o_objeto_destinatario
|
51
|
+
novo_destinatario = FactoryGirl.build(:destinatario)
|
52
|
+
subject.destinatario = novo_destinatario
|
53
|
+
subject.destinatario.must_equal novo_destinatario
|
54
|
+
end
|
55
|
+
|
56
|
+
def test_HaveDestinatarioTest_posso_modificar_a_class_do_destinatario
|
57
|
+
BrNfe.destinatario_class = NewClassDestinatario
|
58
|
+
novo_objeto = subject.class.new
|
59
|
+
novo_objeto.destinatario.class.must_equal NewClassDestinatario
|
60
|
+
BrNfe.destinatario_class = BrNfe::Destinatario
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
|
2
|
+
module BrNfeTest
|
3
|
+
module HelperTest
|
4
|
+
module HaveEmitenteTest
|
5
|
+
class NewClassEmitente < BrNfe::Emitente
|
6
|
+
end
|
7
|
+
|
8
|
+
def test_HaveEmitenteTest_Já_inicia_com_um_emitente
|
9
|
+
subject.class.new.emitente.class.must_equal BrNfe::Emitente
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_HaveEmitenteTest_Mesmo_setando_o_emitente_como_nil_retorna_um_novo_emitente
|
13
|
+
subject.emitente = nil
|
14
|
+
subject.emitente.class.must_equal BrNfe::Emitente
|
15
|
+
subject.emitente.wont_equal emitente
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_HaveEmitenteTest_deve_manter_o_objeto_emitente_se_ja_tiver
|
19
|
+
subject.emitente.must_equal emitente
|
20
|
+
emitente.cnpj = 'nova-www'
|
21
|
+
subject.emitente.cnpj.must_equal 'nova-www'
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_HaveEmitenteTest_Se_setar_o_emitente_com_outra_class_deve_ignorar
|
25
|
+
subject.emitente = 7777
|
26
|
+
subject.emitente.must_equal emitente
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_HaveEmitenteTest_posso_setar_o_emitente_com_um_hash_com_os_parametros_do_emitente
|
30
|
+
emitente.assign_attributes(cnpj: '123456', telefone: '123465', email: 'mail@mail.com')
|
31
|
+
subject.emitente = {cnpj: '99999', telefone: '654389', email: 'mail2'}
|
32
|
+
subject.emitente.cnpj.must_equal '99999'
|
33
|
+
subject.emitente.telefone.must_equal '654389'
|
34
|
+
subject.emitente.email.must_equal 'mail2'
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_HaveEmitenteTest_posso_setar_o_emitente_com_um_bloco
|
38
|
+
emitente.assign_attributes(cnpj: '123456', telefone: '11111', email: 'mail1')
|
39
|
+
subject.emitente do |address|
|
40
|
+
address.cnpj = '99999'
|
41
|
+
address.telefone = '11111'
|
42
|
+
address.email = 'mail1'
|
43
|
+
end
|
44
|
+
subject.emitente.cnpj.must_equal '99999'
|
45
|
+
subject.emitente.telefone.must_equal '11111'
|
46
|
+
subject.emitente.email.must_equal 'mail1'
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_HaveEmitenteTest_posso_mudar_o_objeto_emitente
|
50
|
+
novo_emitente = FactoryGirl.build(:emitente)
|
51
|
+
subject.emitente = novo_emitente
|
52
|
+
subject.emitente.must_equal novo_emitente
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_HaveEmitenteTest_posso_modificar_a_class_do_emitente
|
56
|
+
BrNfe.emitente_class = NewClassEmitente
|
57
|
+
novo_objeto = subject.class.new
|
58
|
+
novo_objeto.emitente.class.must_equal NewClassEmitente
|
59
|
+
BrNfe.emitente_class = BrNfe::Emitente
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
|
2
|
+
module BrNfeTest
|
3
|
+
module HelperTest
|
4
|
+
module HaveIntermediarioTest
|
5
|
+
class NewClassIntermediario < BrNfe::Servico::Intermediario
|
6
|
+
end
|
7
|
+
|
8
|
+
def test_HaveIntermediarioTest_deve_iniciar_o_intermediario_com_nil
|
9
|
+
subject.class.new.intermediario.must_be_nil
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_HaveIntermediarioTest_se_tiver_intermediario_posso_setalo_como_nil
|
13
|
+
subject.intermediario.wont_be_nil
|
14
|
+
subject.intermediario = nil
|
15
|
+
subject.intermediario.must_be_nil
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_HaveIntermediarioTest_deve_manter_o_objeto_intermediario_se_ja_tiver
|
19
|
+
subject.intermediario.must_equal intermediario
|
20
|
+
intermediario.cpf_cnpj = 'nova-www'
|
21
|
+
subject.intermediario.cpf_cnpj.must_equal 'nova-www'
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_HaveIntermediarioTest_Se_setar_o_intermediario_com_outra_class_deve_ignorar
|
25
|
+
subject.intermediario = 7777
|
26
|
+
subject.intermediario.must_equal intermediario
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_HaveIntermediarioTest_posso_setar_o_intermediario_com_um_hash_com_os_parametros_do_intermediario
|
30
|
+
intermediario.assign_attributes(cpf_cnpj: '123456', razao_social: '123465')
|
31
|
+
subject.intermediario = {cpf_cnpj: '99999', razao_social: '654389'}
|
32
|
+
subject.intermediario.cpf_cnpj.must_equal '99999'
|
33
|
+
subject.intermediario.razao_social.must_equal '654389'
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_HaveIntermediarioTest_ao_setar_um_intermediario_com_um_hash_e_nao_tiver_um_intermediario_deve_instanciar_um_com_os_parametros
|
37
|
+
subject.intermediario = nil
|
38
|
+
subject.intermediario = {cpf_cnpj: '99999', razao_social: '654389'}
|
39
|
+
subject.intermediario.cpf_cnpj.must_equal '99999'
|
40
|
+
subject.intermediario.razao_social.must_equal '654389'
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_HaveIntermediarioTest_posso_setar_o_intermediario_com_um_bloco
|
44
|
+
intermediario.assign_attributes(cpf_cnpj: '123456', razao_social: '11111')
|
45
|
+
subject.intermediario do |address|
|
46
|
+
address.cpf_cnpj = '99999'
|
47
|
+
address.razao_social = '11111'
|
48
|
+
end
|
49
|
+
subject.intermediario.cpf_cnpj.must_equal '99999'
|
50
|
+
subject.intermediario.razao_social.must_equal '11111'
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_HaveIntermediarioTest_ao_setar_um_intermediario_com_um_bloco_e_nao_tiver_um_intermediario_deve_instanciar_um_com_os_parametros
|
54
|
+
subject.intermediario = nil
|
55
|
+
subject.intermediario do |address|
|
56
|
+
address.cpf_cnpj = '99999'
|
57
|
+
address.razao_social = '11111'
|
58
|
+
end
|
59
|
+
subject.intermediario.cpf_cnpj.must_equal '99999'
|
60
|
+
subject.intermediario.razao_social.must_equal '11111'
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_HaveIntermediarioTest_posso_mudar_o_objeto_intermediario
|
64
|
+
novo_intermediario = FactoryGirl.build(:intermediario)
|
65
|
+
subject.intermediario = novo_intermediario
|
66
|
+
subject.intermediario.must_equal novo_intermediario
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_HaveIntermediarioTest_posso_modificar_a_class_do_intermediario
|
70
|
+
BrNfe.intermediario_class = NewClassIntermediario
|
71
|
+
novo_objeto = subject.class.new(intermediario: {cpf_cnpj: '123'})
|
72
|
+
novo_objeto.intermediario.class.must_equal NewClassIntermediario
|
73
|
+
BrNfe.intermediario_class = BrNfe::Servico::Intermediario
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
|
2
|
+
module BrNfeTest
|
3
|
+
module HelperTest
|
4
|
+
module HaveRpsTest
|
5
|
+
class NewRps < BrNfe::Servico::Rps
|
6
|
+
end
|
7
|
+
|
8
|
+
def test_HaveRpsTest_Já_inicia_com_um_rps
|
9
|
+
subject.class.new.rps.class.must_equal BrNfe::Servico::Rps
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_HaveRpsTest_Mesmo_setando_o_endereço_como_nil_retorna_um_novo_rps
|
13
|
+
subject.rps = nil
|
14
|
+
subject.rps.class.must_equal BrNfe::Servico::Rps
|
15
|
+
subject.rps.class.wont_equal rps
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_HaveRpsTest_deve_manter_o_objeto_rps_se_ja_tiver
|
19
|
+
subject.rps.must_equal rps
|
20
|
+
rps.numero = 'nova-www'
|
21
|
+
subject.rps.numero.must_equal 'nova-www'
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_HaveRpsTest_Se_setar_o_rps_com_outra_class_deve_ignorar
|
25
|
+
subject.rps = 7777
|
26
|
+
subject.rps.must_equal rps
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_HaveRpsTest_posso_setar_o_rps_com_um_hash_com_os_parametros_do_endereço
|
30
|
+
rps.assign_attributes(numero: '123456', serie: 'SN')
|
31
|
+
subject.rps = {numero: '99999', serie: 'sss'}
|
32
|
+
subject.rps.numero.must_equal '99999'
|
33
|
+
subject.rps.serie.must_equal 'sss'
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_HaveRpsTest_posso_setar_o_rps_com_um_bloco
|
37
|
+
rps.assign_attributes(numero: '123456', serie: 'SN')
|
38
|
+
subject.rps do |obj_rps|
|
39
|
+
obj_rps.numero = '99999'
|
40
|
+
obj_rps.serie = 'sss'
|
41
|
+
end
|
42
|
+
subject.rps.numero.must_equal '99999'
|
43
|
+
subject.rps.serie.must_equal 'sss'
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_HaveRpsTest_posso_mudar_o_objeto_rps
|
47
|
+
novo_rps = FactoryGirl.build(:br_nfe_rps)
|
48
|
+
subject.rps = novo_rps
|
49
|
+
subject.rps.must_equal novo_rps
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_HaveRpsTest_posso_modificar_a_class_do_rps
|
53
|
+
BrNfe.rps_class = NewRps
|
54
|
+
subject.rps.class.must_equal NewRps
|
55
|
+
BrNfe.rps_class = BrNfe::Servico::Rps
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
describe BrNfe::Servico::Base do
|
4
|
+
subject { FactoryGirl.build(:br_nfe_servico_base) }
|
5
|
+
|
6
|
+
describe "#lote_rps" do
|
7
|
+
it "deve inicializar como um vetor vazio" do
|
8
|
+
subject.class.new.lote_rps.must_equal []
|
9
|
+
end
|
10
|
+
|
11
|
+
it "posso utilizar o << para adicionar valores" do
|
12
|
+
subject.lote_rps << 'v1'
|
13
|
+
subject.lote_rps << 'v2'
|
14
|
+
subject.lote_rps.must_equal ['v1','v2']
|
15
|
+
end
|
16
|
+
|
17
|
+
it "sempre retorna um array" do
|
18
|
+
subject.lote_rps = {valor: '2'}
|
19
|
+
subject.lote_rps.must_equal [{valor: '2'}]
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,106 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
describe BrNfe::Servico::Betha::Base do
|
4
|
+
subject { FactoryGirl.build(:br_nfe_servico_betha_base) }
|
5
|
+
let(:rps) { FactoryGirl.build(:br_nfe_rps) }
|
6
|
+
let(:destinatario) { FactoryGirl.build(:destinatario) }
|
7
|
+
|
8
|
+
describe "#tag_identificacao_rps" do
|
9
|
+
it "deve vir com a estrutura adecuada" do
|
10
|
+
xml = Nokogiri::XML::Builder.new do |xml|
|
11
|
+
subject.send(:tag_identificacao_rps, xml, rps)
|
12
|
+
end.doc
|
13
|
+
|
14
|
+
xml.xpath('IdentificacaoRps/Numero').first.text.must_equal "#{rps.numero}"
|
15
|
+
xml.xpath('IdentificacaoRps/Serie').first.text.must_equal "#{rps.serie}"
|
16
|
+
xml.xpath('IdentificacaoRps/Tipo').first.text.must_equal "#{rps.tipo}"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe "#tag_rps_substituido" do
|
21
|
+
before do
|
22
|
+
rps.numero_substituicao = 333
|
23
|
+
rps.serie_substituicao = 5
|
24
|
+
rps.tipo_substituicao = 9
|
25
|
+
end
|
26
|
+
it "deve vir com a estrutura adecuada" do
|
27
|
+
xml = Nokogiri::XML::Builder.new do |xml|
|
28
|
+
subject.send(:tag_rps_substituido, xml, rps)
|
29
|
+
end.doc
|
30
|
+
|
31
|
+
xml.xpath('RpsSubstituido/Numero').first.text.must_equal "333"
|
32
|
+
xml.xpath('RpsSubstituido/Serie').first.text.must_equal "5"
|
33
|
+
xml.xpath('RpsSubstituido/Tipo').first.text.must_equal "9"
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe "#tag_dados_tomador" do
|
38
|
+
it "Valores padrões indiferentemente da versao" do
|
39
|
+
xml = Nokogiri::XML::Builder.new do |xml|
|
40
|
+
subject.send(:tag_dados_tomador, xml, destinatario)
|
41
|
+
end.doc
|
42
|
+
|
43
|
+
xml.xpath('Tomador/RazaoSocial').first.text.must_equal destinatario.razao_social
|
44
|
+
xml.xpath('Tomador/IdentificacaoTomador/CpfCnpj/Cpf').first.text.must_equal BrNfe::Helper::CpfCnpj.new(destinatario.cpf_cnpj).sem_formatacao
|
45
|
+
xml.xpath('Tomador/IdentificacaoTomador/InscricaoMunicipal').first.text.must_equal destinatario.inscricao_municipal
|
46
|
+
xml.xpath('Tomador/IdentificacaoTomador/InscricaoEstadual').first.must_be_nil
|
47
|
+
|
48
|
+
xml.xpath('Tomador/Endereco/Endereco').first.text.must_equal destinatario.endereco.logradouro
|
49
|
+
xml.xpath('Tomador/Endereco/Numero').first.text.must_equal destinatario.endereco.numero
|
50
|
+
xml.xpath('Tomador/Endereco/Complemento').first.text.must_equal destinatario.endereco.complemento
|
51
|
+
xml.xpath('Tomador/Endereco/Bairro').first.text.must_equal destinatario.endereco.bairro
|
52
|
+
xml.xpath('Tomador/Endereco/CodigoMunicipio').first.text.must_equal destinatario.endereco.codigo_municipio
|
53
|
+
xml.xpath('Tomador/Endereco/Uf').first.text.must_equal destinatario.endereco.uf
|
54
|
+
xml.xpath('Tomador/Endereco/Cep').first.text.must_equal destinatario.endereco.cep.gsub(/[^0-9]/,'')
|
55
|
+
xml.xpath('Tomador/Endereco/CodigoPais').first.must_be_nil
|
56
|
+
|
57
|
+
|
58
|
+
xml.xpath('Tomador/Contato/Telefone').first.text.must_equal destinatario.telefone
|
59
|
+
xml.xpath('Tomador/Contato/Email').first.text.must_equal destinatario.email
|
60
|
+
end
|
61
|
+
|
62
|
+
context "tags da versão 1" do
|
63
|
+
before do
|
64
|
+
subject.stubs(:version).returns(:v1)
|
65
|
+
end
|
66
|
+
it "inscricao_estadual" do
|
67
|
+
xml = Nokogiri::XML::Builder.new do |xml|
|
68
|
+
subject.send(:tag_dados_tomador, xml, destinatario)
|
69
|
+
end.doc
|
70
|
+
xml.xpath('Tomador/IdentificacaoTomador/InscricaoEstadual').first.text.must_equal destinatario.inscricao_estadual
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
75
|
+
|
76
|
+
describe "#tag_dados_construcao_civil" do
|
77
|
+
it "quando rps não tem codigo_obra" do
|
78
|
+
rps.assign_attributes(codigo_obra: '', codigo_art: '366')
|
79
|
+
xml = Nokogiri::XML::Builder.new do |xml|
|
80
|
+
subject.send(:tag_dados_construcao_civil, xml, rps)
|
81
|
+
end.doc
|
82
|
+
xml.xpath('ConstrucaoCivil/CodigoObra').first.must_be_nil
|
83
|
+
xml.xpath('ConstrucaoCivil/Art').first.must_be_nil
|
84
|
+
xml.to_s.must_equal "<?xml version=\"1.0\"?>\n"
|
85
|
+
end
|
86
|
+
it "quando rps não tem codigo_art" do
|
87
|
+
rps.assign_attributes(codigo_obra: '13', codigo_art: '')
|
88
|
+
xml = Nokogiri::XML::Builder.new do |xml|
|
89
|
+
subject.send(:tag_dados_construcao_civil, xml, rps)
|
90
|
+
end.doc
|
91
|
+
xml.xpath('ConstrucaoCivil/CodigoObra').first.must_be_nil
|
92
|
+
xml.xpath('ConstrucaoCivil/Art').first.must_be_nil
|
93
|
+
xml.to_s.must_equal "<?xml version=\"1.0\"?>\n"
|
94
|
+
end
|
95
|
+
|
96
|
+
it "quando rps tem codigo_art e codigo_obra" do
|
97
|
+
rps.assign_attributes(codigo_obra: '13', codigo_art: '555')
|
98
|
+
xml = Nokogiri::XML::Builder.new do |xml|
|
99
|
+
subject.send(:tag_dados_construcao_civil, xml, rps)
|
100
|
+
end.doc
|
101
|
+
xml.xpath('ConstrucaoCivil/CodigoObra').first.text.must_equal '13'
|
102
|
+
xml.xpath('ConstrucaoCivil/Art').first.text.must_equal '555'
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
end
|