nfse-carioca 0.0.1 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/Berksfile +6 -0
- data/Berksfile.lock +28 -0
- data/README.md +1 -0
- data/Rakefile +3 -7
- data/Vagrantfile +58 -0
- data/lib/nfse_carioca.rb +5 -12
- data/lib/nfse_carioca/cancelar_nfse.rb +28 -22
- data/lib/nfse_carioca/client.rb +31 -0
- data/lib/nfse_carioca/configuration.rb +49 -7
- data/lib/nfse_carioca/gerar_nfse.rb +14 -23
- data/lib/nfse_carioca/gerar_nfse_xml.rb +49 -103
- data/lib/nfse_carioca/response.rb +27 -0
- data/lib/nfse_carioca/version.rb +2 -2
- data/nfse_carioca.gemspec +4 -4
- data/spec/fixtures/vcr_cassettes/NFSeCarioca_CancelarNFSe/_execute_/when_NFSeCarioca_rps_number_does_not_exist/returns_error_message.yml +253 -0
- data/spec/fixtures/vcr_cassettes/NFSeCarioca_CancelarNFSe/_execute_/when_NFSeCarioca_rps_number_does_not_exist/returns_false.yml +253 -0
- data/spec/fixtures/vcr_cassettes/NFSeCarioca_CancelarNFSe/_execute_/when_NFSeCarioca_rps_number_exist/returns_false.yml +238 -0
- data/spec/fixtures/vcr_cassettes/NFSeCarioca_GerarNFSe/_call/when_NFSeCarioca_rps_number_already_exist/responds_with_error.yml +296 -0
- data/spec/fixtures/vcr_cassettes/NFSeCarioca_GerarNFSe/_call/when_NFSeCarioca_rps_number_already_exist/responds_with_message_error_E10_.yml +296 -0
- data/spec/fixtures/vcr_cassettes/NFSeCarioca_GerarNFSe/_call/when_NFSeCarioca_rps_number_does_not_exist_yet/generates_NFSeCarioca.yml +340 -0
- data/spec/lib/nfse_carioca/cancelar_nfse_spec.rb +13 -21
- data/spec/lib/nfse_carioca/configuration_spec.rb +26 -26
- data/spec/lib/nfse_carioca/gerar_nfse_spec.rb +31 -34
- data/spec/spec_helper.rb +7 -0
- metadata +40 -38
- data/CHANGELOG.md +0 -7
- data/CONTRIBUTING.md +0 -35
- data/lib/nfse_carioca/cancelar_nfse_xml.rb +0 -31
- data/lib/nfse_carioca/models/address.rb +0 -13
- data/lib/nfse_carioca/models/customer.rb +0 -15
- data/lib/nfse_carioca/models/invoice.rb +0 -14
- data/lib/nfse_carioca/models/provider.rb +0 -9
- data/lib/nfse_carioca/nota_carioca_client.rb +0 -31
- data/lib/nfse_carioca/nota_carioca_response.rb +0 -20
@@ -1,17 +1,16 @@
|
|
1
|
-
RSpec.describe
|
1
|
+
RSpec.describe NfseCarioca::CancelarNfse do
|
2
|
+
before do
|
3
|
+
NfseCarioca.configure do |config|
|
4
|
+
config.cnpj = "12390095000186"
|
5
|
+
config.inscricao_municipal = "04807995"
|
6
|
+
config.test_mode = true
|
7
|
+
end
|
8
|
+
end
|
2
9
|
|
3
10
|
describe "#execute!" do
|
4
|
-
|
5
|
-
context 'when NFSeCarioca rps number does not exist' do
|
11
|
+
context 'when NFSeCarioca rps number does not exist', :vcr do
|
6
12
|
let(:invoice_canceller) do
|
7
|
-
described_class.new(
|
8
|
-
cnpj: "12390095000186",
|
9
|
-
inscricao_municipal: "04807995")
|
10
|
-
end
|
11
|
-
|
12
|
-
before do
|
13
|
-
mock_response = SavonResponseMock.new(:cancelar_nfse_response, soap_response("CancelarNfseRespostaE78.xml"))
|
14
|
-
allow_any_instance_of(described_class).to receive(:call).and_return(mock_response)
|
13
|
+
described_class.new("1000")
|
15
14
|
end
|
16
15
|
|
17
16
|
let(:response) { invoice_canceller.execute! }
|
@@ -21,20 +20,13 @@ RSpec.describe NFSeCarioca::CancelarNFSe do
|
|
21
20
|
end
|
22
21
|
|
23
22
|
it 'returns error message' do
|
24
|
-
expect(response.error_message).to eq "Informe o número correto da
|
23
|
+
expect(response.error_message).to eq "Informe o número correto da NFSe."
|
25
24
|
end
|
26
25
|
end
|
27
26
|
|
28
|
-
context 'when NFSeCarioca rps number exist' do
|
27
|
+
context 'when NFSeCarioca rps number exist', :vcr do
|
29
28
|
let(:invoice_canceller) do
|
30
|
-
described_class.new(
|
31
|
-
cnpj: "12390095000186",
|
32
|
-
inscricao_municipal: "04807995")
|
33
|
-
end
|
34
|
-
|
35
|
-
before do
|
36
|
-
mock_response = SavonResponseMock.new(:cancelar_nfse_response, soap_response("CancelarNfseResposta.xml"))
|
37
|
-
allow_any_instance_of(described_class).to receive(:call).and_return(mock_response)
|
29
|
+
described_class.new("13")
|
38
30
|
end
|
39
31
|
|
40
32
|
let(:response) { invoice_canceller.execute! }
|
@@ -2,48 +2,48 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
RSpec.describe 'Configuration' do
|
4
4
|
context 'when not configured' do
|
5
|
-
before
|
6
|
-
|
5
|
+
before do
|
6
|
+
NfseCarioca.configure do |config|
|
7
7
|
config.test_mode = false
|
8
8
|
|
9
|
-
config.
|
10
|
-
config.
|
11
|
-
config.
|
12
|
-
config.
|
9
|
+
config.cert_path = nil
|
10
|
+
config.ca_cert_path = nil
|
11
|
+
config.cert_key_path = nil
|
12
|
+
config.cert_key_password = nil
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
|
-
after
|
17
|
-
|
16
|
+
after do
|
17
|
+
NfseCarioca.reset!
|
18
18
|
end
|
19
19
|
|
20
|
-
it { expect(
|
21
|
-
it { expect(
|
22
|
-
it { expect(
|
23
|
-
it { expect(
|
24
|
-
it { expect(
|
20
|
+
it { expect(NfseCarioca.configuration.cert_path).to be_nil }
|
21
|
+
it { expect(NfseCarioca.configuration.ca_cert_path).to be_nil }
|
22
|
+
it { expect(NfseCarioca.configuration.cert_key_path).to be_nil }
|
23
|
+
it { expect(NfseCarioca.configuration.cert_key_password).to be_nil }
|
24
|
+
it { expect(NfseCarioca.configuration.wsdl).to eq "https://notacarioca.rio.gov.br/WSNacional/nfse.asmx?wsdl" }
|
25
25
|
end
|
26
26
|
|
27
27
|
context 'when configured' do
|
28
|
-
before
|
29
|
-
|
28
|
+
before do
|
29
|
+
NfseCarioca.configure do |config|
|
30
30
|
config.test_mode = true
|
31
31
|
|
32
|
-
config.
|
33
|
-
config.
|
34
|
-
config.
|
35
|
-
config.
|
32
|
+
config.cert_path = "/my/string/path/to/certicate.pem"
|
33
|
+
config.ca_cert_path = "/my/string/path/to/ca/certicate.pem"
|
34
|
+
config.cert_key_path = "/my/string/path/to/certicate/key.pem"
|
35
|
+
config.cert_key_password = "very-secure-encrypted-password"
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
|
-
after
|
40
|
-
|
39
|
+
after do
|
40
|
+
NfseCarioca.reset!
|
41
41
|
end
|
42
42
|
|
43
|
-
it { expect(
|
44
|
-
it { expect(
|
45
|
-
it { expect(
|
46
|
-
it { expect(
|
47
|
-
it { expect(
|
43
|
+
it { expect(NfseCarioca.configuration.cert_path).to eq "/my/string/path/to/certicate.pem" }
|
44
|
+
it { expect(NfseCarioca.configuration.ca_cert_path).to eq "/my/string/path/to/ca/certicate.pem" }
|
45
|
+
it { expect(NfseCarioca.configuration.cert_key_path).to eq "/my/string/path/to/certicate/key.pem" }
|
46
|
+
it { expect(NfseCarioca.configuration.cert_key_password).to eq "very-secure-encrypted-password" }
|
47
|
+
it { expect(NfseCarioca.configuration.wsdl).to eq "https://homologacao.notacarioca.rio.gov.br/WSNacional/nfse.asmx?wsdl" }
|
48
48
|
end
|
49
49
|
end
|
@@ -1,16 +1,13 @@
|
|
1
|
-
RSpec.describe
|
1
|
+
RSpec.describe NfseCarioca::GerarNfse do
|
2
2
|
let(:nota_fiscal_info) do
|
3
3
|
{
|
4
|
-
identification_number:
|
4
|
+
identification_number: invoice_number,
|
5
5
|
description: "Venda do Serviço XYZ.",
|
6
|
-
|
7
|
-
cnpj: "11199990000111",
|
8
|
-
inscricao_municipal: "04807995"
|
9
|
-
},
|
6
|
+
total: 12.0,
|
10
7
|
customer: {
|
11
|
-
|
12
|
-
|
13
|
-
|
8
|
+
document_type: "Cnpj",
|
9
|
+
document_number: "98924674000187",
|
10
|
+
name: "XPTO Tecnologia Ltda.",
|
14
11
|
phone_number: "2222-2222", #opcional
|
15
12
|
email: "customer@example.com", #opcional
|
16
13
|
address: {
|
@@ -26,25 +23,36 @@ RSpec.describe NFSeCarioca::GerarNFSe do
|
|
26
23
|
}
|
27
24
|
end
|
28
25
|
|
29
|
-
let(:
|
26
|
+
let!(:invoice_generator) { described_class.new(nota_fiscal_info) }
|
30
27
|
|
31
|
-
|
28
|
+
before do
|
29
|
+
NfseCarioca.configure do |config|
|
30
|
+
config.cnpj = "25331671000166"
|
31
|
+
config.inscricao_municipal = "04807995"
|
32
|
+
config.test_mode = true
|
33
|
+
end
|
34
|
+
end
|
32
35
|
|
33
|
-
describe '#
|
34
|
-
let(:
|
36
|
+
describe '#to_xml' do
|
37
|
+
let(:invoice_number) { "1024" }
|
38
|
+
let(:xml) { invoice_generator.to_xml }
|
35
39
|
|
36
40
|
|
37
41
|
it 'contains correct identification number' do
|
38
|
-
expect(xml).to include %{<Numero>
|
42
|
+
expect(xml).to include %{<Numero>1024</Numero>}
|
39
43
|
end
|
40
44
|
|
41
45
|
it 'contains correct description' do
|
42
46
|
expect(xml).to include %{<Discriminacao>Venda do Serviço XYZ.}
|
43
47
|
end
|
44
48
|
|
49
|
+
it 'contains correct description' do
|
50
|
+
expect(xml).to include %{<ValorServicos>12.0</ValorServicos>}
|
51
|
+
end
|
52
|
+
|
45
53
|
it 'contains correct provider information' do
|
46
54
|
expect(xml).to include %{<Prestador>
|
47
|
-
<Cnpj>
|
55
|
+
<Cnpj>25331671000166</Cnpj>
|
48
56
|
<InscricaoMunicipal>04807995</InscricaoMunicipal>
|
49
57
|
</Prestador>}
|
50
58
|
end
|
@@ -53,7 +61,7 @@ RSpec.describe NFSeCarioca::GerarNFSe do
|
|
53
61
|
expect(xml).to include %{
|
54
62
|
<IdentificacaoTomador>
|
55
63
|
<CpfCnpj>
|
56
|
-
<Cnpj>
|
64
|
+
<Cnpj>98924674000187</Cnpj>
|
57
65
|
</CpfCnpj>
|
58
66
|
</IdentificacaoTomador>
|
59
67
|
<RazaoSocial>XPTO Tecnologia Ltda.</RazaoSocial>
|
@@ -70,30 +78,19 @@ RSpec.describe NFSeCarioca::GerarNFSe do
|
|
70
78
|
end
|
71
79
|
|
72
80
|
describe "#call" do
|
73
|
-
context 'when
|
74
|
-
before do
|
75
|
-
mock_response = SavonResponseMock.new(:gerar_nfse_response, soap_response("GerarNfseResposta.xml"))
|
76
|
-
allow_any_instance_of(described_class).to receive(:call).and_return(mock_response)
|
77
|
-
end
|
78
|
-
|
81
|
+
context 'when NfseCarioca rps number does not exist yet', :vcr do
|
79
82
|
let(:response) { invoice_generator.execute! }
|
83
|
+
let(:invoice_number) { "1034" }
|
80
84
|
|
81
|
-
it 'generates
|
82
|
-
expect(response.number).to eq "
|
83
|
-
|
84
|
-
|
85
|
-
it 'generates NFSeCarioca verification code' do
|
86
|
-
expect(response.verification_code).to eq "GSB9-BQU3"
|
85
|
+
it 'generates NfseCarioca' do
|
86
|
+
expect(response.number).to eq "21"
|
87
|
+
expect(response.verification_code).to eq "VBU7-WTNQ"
|
87
88
|
end
|
88
89
|
end
|
89
90
|
|
90
|
-
context 'when
|
91
|
-
before do
|
92
|
-
mock_response = SavonResponseMock.new(:gerar_nfse_response, soap_response("GerarNfseRespostaE10.xml"))
|
93
|
-
allow_any_instance_of(described_class).to receive(:call).and_return(mock_response)
|
94
|
-
end
|
95
|
-
|
91
|
+
context 'when NfseCarioca rps number already exist', :vcr do
|
96
92
|
let(:response) { invoice_generator.execute! }
|
93
|
+
let(:invoice_number) { "1030" }
|
97
94
|
|
98
95
|
it "responds with error" do
|
99
96
|
expect(response.error?).to be_truthy
|
data/spec/spec_helper.rb
CHANGED
@@ -3,6 +3,13 @@ Bundler.setup
|
|
3
3
|
|
4
4
|
require "nfse_carioca"
|
5
5
|
require "pry"
|
6
|
+
require "vcr"
|
7
|
+
|
8
|
+
VCR.configure do |config|
|
9
|
+
config.cassette_library_dir = "spec/fixtures/vcr_cassettes"
|
10
|
+
config.hook_into :webmock
|
11
|
+
config.configure_rspec_metadata!
|
12
|
+
end
|
6
13
|
|
7
14
|
Dir[File.join(File.dirname(__FILE__), '/support/**/*.rb')].each { |f| require f }
|
8
15
|
|
metadata
CHANGED
@@ -1,101 +1,101 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nfse-carioca
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- LUZ Planilhas
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-02-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: savon
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 2.9.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 2.9.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: builder
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 3.2.2
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 3.2.2
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: bundler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
48
|
-
type: :
|
47
|
+
version: '1.7'
|
48
|
+
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: '1.7'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: rake
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
62
|
-
type: :
|
61
|
+
version: '10.0'
|
62
|
+
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
68
|
+
version: '10.0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: rspec
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
75
|
+
version: '0'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - "
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
82
|
+
version: '0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
84
|
+
name: pry
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - "
|
87
|
+
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
89
|
+
version: '0'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - "
|
94
|
+
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
96
|
+
version: '0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
98
|
+
name: vcr
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - ">="
|
@@ -109,7 +109,7 @@ dependencies:
|
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
112
|
+
name: webmock
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
115
|
- - ">="
|
@@ -131,29 +131,31 @@ extra_rdoc_files: []
|
|
131
131
|
files:
|
132
132
|
- ".gitignore"
|
133
133
|
- ".rspec"
|
134
|
-
-
|
135
|
-
-
|
134
|
+
- Berksfile
|
135
|
+
- Berksfile.lock
|
136
136
|
- Gemfile
|
137
137
|
- README.md
|
138
138
|
- Rakefile
|
139
|
+
- Vagrantfile
|
139
140
|
- lib/nfse_carioca.rb
|
140
141
|
- lib/nfse_carioca/cancelar_nfse.rb
|
141
|
-
- lib/nfse_carioca/
|
142
|
+
- lib/nfse_carioca/client.rb
|
142
143
|
- lib/nfse_carioca/configuration.rb
|
143
144
|
- lib/nfse_carioca/gerar_nfse.rb
|
144
145
|
- lib/nfse_carioca/gerar_nfse_xml.rb
|
145
|
-
- lib/nfse_carioca/
|
146
|
-
- lib/nfse_carioca/models/customer.rb
|
147
|
-
- lib/nfse_carioca/models/invoice.rb
|
148
|
-
- lib/nfse_carioca/models/provider.rb
|
149
|
-
- lib/nfse_carioca/nota_carioca_client.rb
|
150
|
-
- lib/nfse_carioca/nota_carioca_response.rb
|
146
|
+
- lib/nfse_carioca/response.rb
|
151
147
|
- lib/nfse_carioca/version.rb
|
152
148
|
- nfse_carioca.gemspec
|
153
149
|
- spec/fixtures/nota_carioca/CancelarNfseResposta.xml
|
154
150
|
- spec/fixtures/nota_carioca/CancelarNfseRespostaE78.xml
|
155
151
|
- spec/fixtures/nota_carioca/GerarNfseResposta.xml
|
156
152
|
- spec/fixtures/nota_carioca/GerarNfseRespostaE10.xml
|
153
|
+
- spec/fixtures/vcr_cassettes/NFSeCarioca_CancelarNFSe/_execute_/when_NFSeCarioca_rps_number_does_not_exist/returns_error_message.yml
|
154
|
+
- spec/fixtures/vcr_cassettes/NFSeCarioca_CancelarNFSe/_execute_/when_NFSeCarioca_rps_number_does_not_exist/returns_false.yml
|
155
|
+
- spec/fixtures/vcr_cassettes/NFSeCarioca_CancelarNFSe/_execute_/when_NFSeCarioca_rps_number_exist/returns_false.yml
|
156
|
+
- spec/fixtures/vcr_cassettes/NFSeCarioca_GerarNFSe/_call/when_NFSeCarioca_rps_number_already_exist/responds_with_error.yml
|
157
|
+
- spec/fixtures/vcr_cassettes/NFSeCarioca_GerarNFSe/_call/when_NFSeCarioca_rps_number_already_exist/responds_with_message_error_E10_.yml
|
158
|
+
- spec/fixtures/vcr_cassettes/NFSeCarioca_GerarNFSe/_call/when_NFSeCarioca_rps_number_does_not_exist_yet/generates_NFSeCarioca.yml
|
157
159
|
- spec/lib/nfse_carioca/cancelar_nfse_spec.rb
|
158
160
|
- spec/lib/nfse_carioca/configuration_spec.rb
|
159
161
|
- spec/lib/nfse_carioca/gerar_nfse_spec.rb
|
data/CHANGELOG.md
DELETED
data/CONTRIBUTING.md
DELETED
@@ -1,35 +0,0 @@
|
|
1
|
-
# Contributing
|
2
|
-
|
3
|
-
We love pull requests. Here's a quick guide:
|
4
|
-
|
5
|
-
1. Fork the repo.
|
6
|
-
|
7
|
-
2. Create your feature branch (`git checkout -b my-new-feature`)
|
8
|
-
|
9
|
-
3. Run the tests. We only take pull requests with passing tests, and it's great
|
10
|
-
to know that you have a clean slate: `bundle && rake`
|
11
|
-
|
12
|
-
4. Add a test for your change. Only refactoring and documentation changes
|
13
|
-
require no new tests. If you are adding functionality or fixing a bug, we need
|
14
|
-
a test!
|
15
|
-
|
16
|
-
5. Make the test pass.
|
17
|
-
|
18
|
-
6. Update [CHANGELOG.md][changelog] with a brief description of your changes under the `unreleased` heading.
|
19
|
-
|
20
|
-
7. Commit your changes (`git commit -am 'Added some feature'`)
|
21
|
-
|
22
|
-
8. Push to the branch (`git push origin my-new-feature`)
|
23
|
-
|
24
|
-
9. Create new Pull Request
|
25
|
-
|
26
|
-
At this point you're waiting on us. We like to at least give you feedback, if not just
|
27
|
-
accept it, within a few days, depending on our internal priorities.
|
28
|
-
|
29
|
-
Some things that will increase the chance that your pull request is accepted is to follow the practices described on [Ruby style guide][rubysg], [Rails style guide][railssg] and [Better Specs][bs].
|
30
|
-
|
31
|
-
|
32
|
-
[changelog]: https://github.com/luzvc/nfse-carioca/blob/master/CHANGELOG.md
|
33
|
-
[rubysg]: https://github.com/bbatsov/ruby-style-guide
|
34
|
-
[railssg]: https://github.com/bbatsov/rails-style-guide
|
35
|
-
[bs]: http://betterspecs.org/
|