cpf_cnpj 0.2.1 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.travis.yml +7 -0
- data/README.md +24 -8
- data/Rakefile +10 -1
- data/bin/cnpj +2 -1
- data/bin/cpf +2 -1
- data/cpf_cnpj.gemspec +2 -1
- data/lib/cnpj.rb +27 -23
- data/lib/cnpj/formatter.rb +5 -2
- data/lib/cpf.rb +29 -25
- data/lib/cpf/formatter.rb +5 -2
- data/lib/cpf_cnpj.rb +3 -0
- data/lib/cpf_cnpj/cli.rb +109 -0
- data/lib/cpf_cnpj/generator.rb +12 -0
- data/lib/cpf_cnpj/version.rb +6 -2
- data/test/support/capture_syscall.rb +14 -0
- data/test/test_helper.rb +8 -0
- data/test/unit/cnpj/cli_test.rb +132 -0
- data/test/unit/cnpj/formatter_test.rb +13 -0
- data/test/unit/cnpj/generator_test.rb +11 -0
- data/test/unit/cnpj_test.rb +46 -0
- data/test/unit/cpf/cli_test.rb +134 -0
- data/test/unit/cpf/formatter_test.rb +13 -0
- data/test/unit/cpf/generator_test.rb +11 -0
- data/test/unit/cpf_test.rb +71 -0
- metadata +42 -33
- data/.rspec +0 -1
- data/Gemfile.lock +0 -47
- data/lib/cnpj/cli.rb +0 -102
- data/lib/cnpj/generator.rb +0 -12
- data/lib/cpf/cli.rb +0 -103
- data/lib/cpf/generator.rb +0 -12
- data/spec/cnpj/cli_spec.rb +0 -119
- data/spec/cnpj/formatter_spec.rb +0 -13
- data/spec/cnpj/generator_spec.rb +0 -15
- data/spec/cnpj_spec.rb +0 -46
- data/spec/cpf/cli_spec.rb +0 -119
- data/spec/cpf/formatter_spec.rb +0 -13
- data/spec/cpf/generator_spec.rb +0 -15
- data/spec/cpf_spec.rb +0 -73
- data/spec/spec_helper.rb +0 -6
- data/spec/support/capture_exit.rb +0 -10
- data/spec/support/validation_shared.rb +0 -17
data/spec/cnpj/formatter_spec.rb
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe CNPJ::Formatter do
|
4
|
-
it "formats strings without separators" do
|
5
|
-
number = "12345678901234"
|
6
|
-
expect(CNPJ::Formatter.format(number)).to eql("12.345.678/9012-34")
|
7
|
-
end
|
8
|
-
|
9
|
-
it "removes any non-numeric characters" do
|
10
|
-
number = "\n12$345[678/9012-34"
|
11
|
-
expect(CNPJ::Formatter.strip(number)).to eql("12345678901234")
|
12
|
-
end
|
13
|
-
end
|
data/spec/cnpj/generator_spec.rb
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe CNPJ::Generator do
|
4
|
-
it "generates valid numbers" do
|
5
|
-
expect(CNPJ).to be_valid(CNPJ::Generator.generate)
|
6
|
-
expect(CNPJ).to be_valid(CNPJ::Generator.generate)
|
7
|
-
expect(CNPJ).to be_valid(CNPJ::Generator.generate)
|
8
|
-
expect(CNPJ).to be_valid(CNPJ::Generator.generate)
|
9
|
-
expect(CNPJ).to be_valid(CNPJ::Generator.generate)
|
10
|
-
end
|
11
|
-
|
12
|
-
it "generates random numbers" do
|
13
|
-
expect(CNPJ::Generator.generate).not_to eql(CNPJ::Generator.generate)
|
14
|
-
end
|
15
|
-
end
|
data/spec/cnpj_spec.rb
DELETED
@@ -1,46 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe CNPJ do
|
4
|
-
it "blacklists common numbers" do
|
5
|
-
expect(CNPJ).not_to be_valid("11111111111111")
|
6
|
-
expect(CNPJ).not_to be_valid("22222222222222")
|
7
|
-
expect(CNPJ).not_to be_valid("33333333333333")
|
8
|
-
expect(CNPJ).not_to be_valid("44444444444444")
|
9
|
-
expect(CNPJ).not_to be_valid("55555555555555")
|
10
|
-
expect(CNPJ).not_to be_valid("66666666666666")
|
11
|
-
expect(CNPJ).not_to be_valid("77777777777777")
|
12
|
-
expect(CNPJ).not_to be_valid("88888888888888")
|
13
|
-
expect(CNPJ).not_to be_valid("99999999999999")
|
14
|
-
end
|
15
|
-
|
16
|
-
it "rejects blank strings" do
|
17
|
-
expect(CNPJ).not_to be_valid("")
|
18
|
-
end
|
19
|
-
|
20
|
-
it "rejects nil values" do
|
21
|
-
expect(CNPJ).not_to be_valid(nil)
|
22
|
-
end
|
23
|
-
|
24
|
-
it "validates formatted strings" do
|
25
|
-
number = "54.550.752/0001-55"
|
26
|
-
expect(CNPJ).to be_valid(number)
|
27
|
-
end
|
28
|
-
|
29
|
-
it "validates unformatted strings" do
|
30
|
-
number = "54550752000155"
|
31
|
-
expect(CNPJ).to be_valid(number)
|
32
|
-
end
|
33
|
-
|
34
|
-
it "validates messed strings" do
|
35
|
-
number = "54550[752#0001..$55"
|
36
|
-
expect(CNPJ).to be_valid(number)
|
37
|
-
end
|
38
|
-
|
39
|
-
it "generates formatted number" do
|
40
|
-
expect(CNPJ.generate(true)).to match(%r[\A\d{2}\.\d{3}\.\d{3}/\d{4}-\d{2}\z])
|
41
|
-
end
|
42
|
-
|
43
|
-
it "generates stripped number" do
|
44
|
-
expect(CNPJ.generate).to match(/\A\d{14}\z/)
|
45
|
-
end
|
46
|
-
end
|
data/spec/cpf/cli_spec.rb
DELETED
@@ -1,119 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe CPF::CLI do
|
4
|
-
let(:stdout) { "" }
|
5
|
-
let(:stderr) { "" }
|
6
|
-
let(:stdin) { StringIO.new }
|
7
|
-
|
8
|
-
context "check" do
|
9
|
-
%w[-c --check].each do |switch|
|
10
|
-
it "checks if provided number is valid [using #{switch}]" do
|
11
|
-
capture_exit do
|
12
|
-
CPF::CLI.new([switch, "77673736578"], stdin, stdout, stderr).start
|
13
|
-
end
|
14
|
-
|
15
|
-
expect(stdout).to eql("")
|
16
|
-
end
|
17
|
-
|
18
|
-
it "outputs error message if provided number is invalid [using #{switch}]" do
|
19
|
-
capture_exit(1) do
|
20
|
-
CPF::CLI.new([switch, "invalid"], stdin, stdout, stderr).start
|
21
|
-
end
|
22
|
-
|
23
|
-
expect(stderr).to include("Error: Invalid number")
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
context "help" do
|
29
|
-
%w[-h --help].each do |switch|
|
30
|
-
it "outputs help [using #{switch}]" do
|
31
|
-
capture_exit(1) do
|
32
|
-
CPF::CLI.new([switch], stdin, stdout, stderr).start
|
33
|
-
end
|
34
|
-
|
35
|
-
expect(stderr).to include("Usage: cpf")
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
it "outputs help on tail" do
|
40
|
-
capture_exit(1) do
|
41
|
-
CPF::CLI.new([], stdin, stdout, stderr).start
|
42
|
-
end
|
43
|
-
|
44
|
-
expect(stderr).to include("Usage: cpf")
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
context "version" do
|
49
|
-
%w[-v --version].each do |switch|
|
50
|
-
it "outputs version [using #{switch}]" do
|
51
|
-
capture_exit do
|
52
|
-
CPF::CLI.new([switch], stdin, stdout, stderr).start
|
53
|
-
end
|
54
|
-
|
55
|
-
expect(stdout).to include(CPF::VERSION.to_s)
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
context "generate" do
|
61
|
-
%w[-g --generate].each do |switch|
|
62
|
-
it "generates number [using -#{switch}]" do
|
63
|
-
capture_exit do
|
64
|
-
CPF::CLI.new([switch], stdin, stdout, stderr).start
|
65
|
-
end
|
66
|
-
|
67
|
-
expect(stdout).to match(CPF::REGEX)
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
it "generates stripped number" do
|
72
|
-
capture_exit do
|
73
|
-
CPF::CLI.new(["-gs"], stdin, stdout, stderr).start
|
74
|
-
end
|
75
|
-
|
76
|
-
expect(stdout).to match(/\A\d{11}\Z/)
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
context "format" do
|
81
|
-
%w[-f --format].each do |switch|
|
82
|
-
it "formats argument [using #{switch}]" do
|
83
|
-
capture_exit do
|
84
|
-
CPF::CLI.new([switch, "77673736578"], stdin, stdout, stderr).start
|
85
|
-
end
|
86
|
-
|
87
|
-
expect(stdout).to include("776.737.365-78")
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
it "formats argument using stdin" do
|
92
|
-
stdin = StringIO.new("77673736578")
|
93
|
-
|
94
|
-
capture_exit do
|
95
|
-
CPF::CLI.new(["--format"], stdin, stdout, stderr).start
|
96
|
-
end
|
97
|
-
|
98
|
-
expect(stdout).to include("776.737.365-78")
|
99
|
-
end
|
100
|
-
|
101
|
-
let(:switch) { "--format" }
|
102
|
-
it_behaves_like "validation"
|
103
|
-
end
|
104
|
-
|
105
|
-
context "strip" do
|
106
|
-
%w[-s --strip].each do |switch|
|
107
|
-
it "strips argument [using #{switch}]" do
|
108
|
-
capture_exit do
|
109
|
-
CPF::CLI.new([switch, "776.737.365-78"], stdin, stdout, stderr).start
|
110
|
-
end
|
111
|
-
|
112
|
-
expect(stdout).to include("77673736578")
|
113
|
-
end
|
114
|
-
end
|
115
|
-
|
116
|
-
let(:switch) { "--strip" }
|
117
|
-
it_behaves_like "validation"
|
118
|
-
end
|
119
|
-
end
|
data/spec/cpf/formatter_spec.rb
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe CPF::Formatter do
|
4
|
-
it "formats strings without separators" do
|
5
|
-
number = "12345678909"
|
6
|
-
expect(CPF::Formatter.format(number)).to eql("123.456.789-09")
|
7
|
-
end
|
8
|
-
|
9
|
-
it "removes any non-numeric characters" do
|
10
|
-
number = "\n12.-34567$8909"
|
11
|
-
expect(CPF::Formatter.strip(number)).to eql("12345678909")
|
12
|
-
end
|
13
|
-
end
|
data/spec/cpf/generator_spec.rb
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe CPF::Generator do
|
4
|
-
it "generates valid numbers" do
|
5
|
-
expect(CPF).to be_valid(CPF::Generator.generate)
|
6
|
-
expect(CPF).to be_valid(CPF::Generator.generate)
|
7
|
-
expect(CPF).to be_valid(CPF::Generator.generate)
|
8
|
-
expect(CPF).to be_valid(CPF::Generator.generate)
|
9
|
-
expect(CPF).to be_valid(CPF::Generator.generate)
|
10
|
-
end
|
11
|
-
|
12
|
-
it "generates random numbers" do
|
13
|
-
expect(CPF::Generator.generate).not_to eql(CPF::Generator.generate)
|
14
|
-
end
|
15
|
-
end
|
data/spec/cpf_spec.rb
DELETED
@@ -1,73 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe CPF do
|
4
|
-
it "blacklists common numbers" do
|
5
|
-
expect(CPF).not_to be_valid("11111111111")
|
6
|
-
expect(CPF).not_to be_valid("22222222222")
|
7
|
-
expect(CPF).not_to be_valid("33333333333")
|
8
|
-
expect(CPF).not_to be_valid("44444444444")
|
9
|
-
expect(CPF).not_to be_valid("55555555555")
|
10
|
-
expect(CPF).not_to be_valid("66666666666")
|
11
|
-
expect(CPF).not_to be_valid("77777777777")
|
12
|
-
expect(CPF).not_to be_valid("88888888888")
|
13
|
-
expect(CPF).not_to be_valid("99999999999")
|
14
|
-
expect(CPF).not_to be_valid("12345678909")
|
15
|
-
end
|
16
|
-
|
17
|
-
it "rejects blank strings" do
|
18
|
-
expect(CPF).not_to be_valid("")
|
19
|
-
end
|
20
|
-
|
21
|
-
it "rejects nil values" do
|
22
|
-
expect(CPF).not_to be_valid(nil)
|
23
|
-
end
|
24
|
-
|
25
|
-
it "validates formatted strings" do
|
26
|
-
number = "295.379.955-93"
|
27
|
-
expect(CPF).to be_valid(number)
|
28
|
-
end
|
29
|
-
|
30
|
-
it "validates unformatted strings" do
|
31
|
-
number = "29537995593"
|
32
|
-
expect(CPF).to be_valid(number)
|
33
|
-
end
|
34
|
-
|
35
|
-
it "validates messed strings" do
|
36
|
-
number = "295$379\n955...93"
|
37
|
-
expect(CPF).to be_valid(number)
|
38
|
-
end
|
39
|
-
|
40
|
-
it "returns stripped number" do
|
41
|
-
cpf = CPF.new("295.379.955-93")
|
42
|
-
expect(cpf.stripped).to eql("29537995593")
|
43
|
-
end
|
44
|
-
|
45
|
-
it "formats number" do
|
46
|
-
cpf = CPF.new("29537995593")
|
47
|
-
expect(cpf.formatted).to eql("295.379.955-93")
|
48
|
-
end
|
49
|
-
|
50
|
-
it "generates formatted number" do
|
51
|
-
expect(CPF.generate(true)).to match(/\A\d{3}\.\d{3}\.\d{3}-\d{2}\z/)
|
52
|
-
end
|
53
|
-
|
54
|
-
it "generates stripped number" do
|
55
|
-
expect(CPF.generate).to match(/\A\d{11}\z/)
|
56
|
-
end
|
57
|
-
|
58
|
-
context "memoization" do
|
59
|
-
let(:cpf) { CPF.new("29537995593") }
|
60
|
-
|
61
|
-
before do
|
62
|
-
cpf.number = "52139989171"
|
63
|
-
end
|
64
|
-
|
65
|
-
it "invalidates stripped number" do
|
66
|
-
expect(cpf.stripped).to eql("52139989171")
|
67
|
-
end
|
68
|
-
|
69
|
-
it "invalidates formatted number" do
|
70
|
-
expect(cpf.formatted).to eql("521.399.891-71")
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
data/spec/spec_helper.rb
DELETED
@@ -1,10 +0,0 @@
|
|
1
|
-
module CaptureExit
|
2
|
-
def capture_exit(status = 0, &block)
|
3
|
-
yield
|
4
|
-
raise "Expected exit(#{status}); it didn't exit"
|
5
|
-
rescue SystemExit => error
|
6
|
-
raise "Expected exit(#{status}); got exit(#{error.status})" unless status == error.status
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
RSpec.configuration.include(CaptureExit)
|
@@ -1,17 +0,0 @@
|
|
1
|
-
shared_examples_for "validation" do
|
2
|
-
it "fails when providing Invalid number" do
|
3
|
-
capture_exit(1) do
|
4
|
-
described_class.new([switch, "invalid"], stdin, stdout, stderr).start
|
5
|
-
end
|
6
|
-
|
7
|
-
expect(stderr).to include("Error: Invalid number")
|
8
|
-
end
|
9
|
-
|
10
|
-
it "fails when not providing a number" do
|
11
|
-
capture_exit(1) do
|
12
|
-
described_class.new([switch], stdin, stdout, stderr).start
|
13
|
-
end
|
14
|
-
|
15
|
-
expect(stderr).to include("Error: Invalid number")
|
16
|
-
end
|
17
|
-
end
|