laranja 0.0.2 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +1 -2
- data/README.md +58 -15
- data/lib/laranja.rb +10 -7
- data/lib/laranja/address.rb +77 -0
- data/lib/laranja/gender.rb +12 -0
- data/lib/laranja/internet.rb +5 -5
- data/lib/laranja/name.rb +19 -11
- data/lib/laranja/version.rb +1 -1
- data/lib/static_data.yml +20 -3
- data/spec/address_spec.rb +89 -0
- data/spec/gender_spec.rb +23 -0
- data/spec/internet_spec.rb +8 -8
- data/spec/name_spec.rb +14 -6
- data/spec/spec_helper.rb +2 -0
- metadata +10 -4
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# Laranja
|
2
2
|
[![Build Status](https://travis-ci.org/oesgalha/laranja.png)](https://travis-ci.org/oesgalha/laranja)
|
3
|
+
[![Code Climate](https://codeclimate.com/github/oesgalha/laranja.png)](https://codeclimate.com/github/oesgalha/laranja)
|
4
|
+
[![Coverage Status](https://coveralls.io/repos/oesgalha/laranja/badge.png)](https://coveralls.io/r/oesgalha/laranja)
|
3
5
|
|
4
6
|
Laranja is a ruby gem which generates random fake valid data.
|
5
7
|
It aims to help testing brazilian applications, since it generates specific data from the country.
|
@@ -26,17 +28,19 @@ Or install it yourself as:
|
|
26
28
|
```ruby
|
27
29
|
require 'laranja'
|
28
30
|
|
29
|
-
Laranja::Name.name
|
31
|
+
Laranja::Name.name # Vitória Pereira
|
30
32
|
|
31
|
-
Laranja::Name.name(2)
|
33
|
+
Laranja::Name.name(2) # Ígor Braga Santos => Name with 2 surnames
|
32
34
|
|
33
|
-
Laranja::Name.first_name
|
35
|
+
Laranja::Name.first_name # Raul
|
34
36
|
|
35
|
-
Laranja::Name.last_name
|
37
|
+
Laranja::Name.last_name # Moreira
|
36
38
|
|
37
|
-
Laranja::Name.
|
39
|
+
Laranja::Name.strf '%male_first_name %last_name %last_name %last_name %male_suffix' # Fabrício Santos Costa Reis Junior
|
38
40
|
|
39
|
-
Laranja::Name.
|
41
|
+
Laranja::Name.strf '%last_name %male_suffix' # Albuquerque Neto
|
42
|
+
|
43
|
+
Laranja::Name.strf '%title %female_first_name %last_name' # Condessa Ofélia Macedo
|
40
44
|
```
|
41
45
|
|
42
46
|
### CPF
|
@@ -64,23 +68,62 @@ require 'laranja'
|
|
64
68
|
|
65
69
|
Laranja::Internet.email # elsionogueira@gmail.com
|
66
70
|
|
67
|
-
Laranja::Internet.
|
71
|
+
Laranja::Internet.email_for('Vitória Pereira') # vitria.pereira@yahoo.com
|
68
72
|
|
69
73
|
Laranja::Internet.username # marli.macedo
|
70
74
|
|
71
|
-
Laranja::Internet.
|
75
|
+
Laranja::Internet.username_for('Ana Machado') # anamachado
|
72
76
|
|
73
|
-
Laranja::Internet.
|
77
|
+
Laranja::Internet.username_for('Joel Melo', ['-']) # joel-melo => Username with one of the specified separators ( - )
|
74
78
|
|
75
79
|
Laranja::Internet.password # Pq9vD8VJzttr6vrB77hDCp2LVK8iSm1iUjezQuS9dlah0EUukfQDPLf5ad0e6WwsrI39
|
76
80
|
|
77
81
|
Laranja::Internet.password(2, 6) # COW => Password with a random number of charaters between 2 and 6 (the default is 8 and 128)
|
78
82
|
```
|
79
83
|
|
80
|
-
|
84
|
+
### Gender
|
85
|
+
|
86
|
+
```ruby
|
87
|
+
require 'laranja'
|
88
|
+
|
89
|
+
Laranja::Gender.gender # Feminino
|
90
|
+
|
91
|
+
Laranja::Gender.abbr # M
|
92
|
+
```
|
93
|
+
|
94
|
+
### Address
|
95
|
+
|
96
|
+
```ruby
|
97
|
+
require 'laranja'
|
98
|
+
|
99
|
+
Laranja::Address.city # Santo Rafael do Sul
|
100
|
+
|
101
|
+
Laranja::Address.district # Parque Condessa Carvalho
|
102
|
+
|
103
|
+
Laranja::Address.street # Avenida Barão Norberto Martins Neto
|
104
|
+
|
105
|
+
Laranja::Address.secondary # Lote 937
|
106
|
+
|
107
|
+
Laranja::Address.number # 608
|
108
|
+
|
109
|
+
Laranja::Address.formatted_cep # 43519-000
|
110
|
+
|
111
|
+
Laranja::Address.cep # 49738343
|
112
|
+
|
113
|
+
Laranja::Address.cep('SP') # 13663282
|
114
|
+
|
115
|
+
Laranja::Address.formatted_cep(:am) # 64787-398
|
116
|
+
|
117
|
+
Laranja::Address.uf # Rondônia
|
118
|
+
|
119
|
+
Laranja::Address.uf_abbr # MG
|
120
|
+
```
|
121
|
+
|
122
|
+
## Roadmap
|
81
123
|
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
124
|
+
- Jobs
|
125
|
+
- Phones
|
126
|
+
- Dates
|
127
|
+
- RG
|
128
|
+
- Credit Cards
|
129
|
+
- Bank Accounts
|
data/lib/laranja.rb
CHANGED
@@ -4,18 +4,18 @@ SafeYAML::OPTIONS[:default_mode] = :safe
|
|
4
4
|
module Laranja
|
5
5
|
class Base
|
6
6
|
|
7
|
-
def self.
|
8
|
-
format.gsub(
|
7
|
+
def self.strf(format)
|
8
|
+
format.gsub(/(:(?<scope>[^:\s\z]+))?%(?<key>[^%\s\z]+)/) { data_sample($~[:key], $~[:scope]) }
|
9
9
|
end
|
10
10
|
|
11
11
|
protected
|
12
12
|
|
13
|
-
def self.data_sample(key)
|
14
|
-
data(key).sample
|
13
|
+
def self.data_sample(key, scope = nil)
|
14
|
+
data(key, scope).sample
|
15
15
|
end
|
16
16
|
|
17
|
-
def self.data(key)
|
18
|
-
static_data[to_s.split('::')[-1].downcase][key]
|
17
|
+
def self.data(key, scope = nil)
|
18
|
+
static_data[scope || to_s.split('::')[-1].downcase][key]
|
19
19
|
end
|
20
20
|
|
21
21
|
private
|
@@ -26,6 +26,9 @@ module Laranja
|
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
|
+
require 'laranja/address'
|
29
30
|
require 'laranja/cpf'
|
31
|
+
require 'laranja/gender'
|
30
32
|
require 'laranja/internet'
|
31
|
-
require 'laranja/name'
|
33
|
+
require 'laranja/name'
|
34
|
+
require 'laranja/version'
|
@@ -0,0 +1,77 @@
|
|
1
|
+
module Laranja
|
2
|
+
class Address < Base
|
3
|
+
|
4
|
+
def self.city
|
5
|
+
strf [
|
6
|
+
'%city_prefix :name%last_name',
|
7
|
+
'%city_prefix :name%last_name %city_suffix',
|
8
|
+
'%city_prefix %female_city_prefix :name%female_first_name',
|
9
|
+
'%city_prefix %male_city_prefix :name%male_first_name',
|
10
|
+
'%city_prefix %female_city_prefix :name%female_first_name %city_suffix',
|
11
|
+
'%city_prefix %male_city_prefix :name%male_first_name %city_suffix',
|
12
|
+
':name%last_name %city_suffix',
|
13
|
+
'%female_city_prefix :name%female_first_name',
|
14
|
+
'%male_city_prefix :name%male_first_name',
|
15
|
+
'%female_city_prefix :name%female_first_name %city_suffix',
|
16
|
+
'%male_city_prefix :name%male_first_name %city_suffix'
|
17
|
+
].sample
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.district
|
21
|
+
strf [
|
22
|
+
'%district_prefix :name%last_name',
|
23
|
+
'%district_prefix :name%male_title :name%last_name',
|
24
|
+
'%district_prefix :name%female_title :name%last_name'
|
25
|
+
].sample
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.street
|
29
|
+
strf [
|
30
|
+
'%log_prefix :name%female_title :name%female_first_name :name%last_name',
|
31
|
+
'%log_prefix :name%female_first_name :name%last_name',
|
32
|
+
'%log_prefix :name%male_title :name%male_first_name :name%last_name :name%male_suffix',
|
33
|
+
'%log_prefix :name%male_title :name%male_first_name :name%last_name',
|
34
|
+
'%log_prefix :name%male_first_name :name%last_name :name%male_suffix',
|
35
|
+
'%log_prefix :name%male_first_name :name%last_name'
|
36
|
+
].sample
|
37
|
+
end
|
38
|
+
|
39
|
+
def self.secondary
|
40
|
+
strf('%secondary ') + (1 + rand(999)).to_s
|
41
|
+
end
|
42
|
+
|
43
|
+
def self.number
|
44
|
+
(1 + rand(999)).to_s
|
45
|
+
end
|
46
|
+
|
47
|
+
def self.formatted_cep(ufab = nil)
|
48
|
+
cep_builder(true, rand(6) != 0, ufab)
|
49
|
+
end
|
50
|
+
|
51
|
+
def self.cep(ufab = nil)
|
52
|
+
cep_builder(false, rand(6) != 0, ufab)
|
53
|
+
end
|
54
|
+
|
55
|
+
def self.uf
|
56
|
+
strf '%uf_name'
|
57
|
+
end
|
58
|
+
|
59
|
+
def self.uf_abbr
|
60
|
+
strf '%uf_abbr'
|
61
|
+
end
|
62
|
+
|
63
|
+
private
|
64
|
+
|
65
|
+
def self.cep_builder(formatted, suffix = true, ufab = nil)
|
66
|
+
c = unufy(ufab, 'U####')
|
67
|
+
c += '-' if formatted
|
68
|
+
c += suffix ? '###' : '000'
|
69
|
+
c.gsub(/#/) { rand(10).to_s }
|
70
|
+
end
|
71
|
+
|
72
|
+
def self.unufy(ufab, str)
|
73
|
+
str.sub(/U/, ufab.nil? ? '#' : data('codigo_cep')[ufab.to_s.downcase].to_s)
|
74
|
+
end
|
75
|
+
|
76
|
+
end
|
77
|
+
end
|
data/lib/laranja/internet.rb
CHANGED
@@ -1,20 +1,20 @@
|
|
1
1
|
module Laranja
|
2
2
|
class Internet < Base
|
3
3
|
|
4
|
-
def self.
|
5
|
-
|
4
|
+
def self.email_for(name)
|
5
|
+
strf username_for(name) + '@%email'
|
6
6
|
end
|
7
7
|
|
8
8
|
def self.email
|
9
|
-
|
9
|
+
email_for(Laranja::Name.name)
|
10
10
|
end
|
11
11
|
|
12
|
-
def self.
|
12
|
+
def self.username_for(name, sep = ['', '.', '_'])
|
13
13
|
name.gsub(/[^a-zA-Z0-9\s]/, '').split.join(sep.sample).downcase
|
14
14
|
end
|
15
15
|
|
16
16
|
def self.username
|
17
|
-
|
17
|
+
username_for(Laranja::Name.name)
|
18
18
|
end
|
19
19
|
|
20
20
|
def self.password(min = 8, max = 128)
|
data/lib/laranja/name.rb
CHANGED
@@ -1,24 +1,32 @@
|
|
1
1
|
module Laranja
|
2
2
|
class Name < Base
|
3
3
|
|
4
|
-
def self.strfname(last_names = 1, suffix = false, first_name = true)
|
5
|
-
f = ''
|
6
|
-
f += '%first_name' if first_name
|
7
|
-
f += ' %last_name' * last_names
|
8
|
-
f += ' %suffix' if suffix
|
9
|
-
specified f.strip
|
10
|
-
end
|
11
|
-
|
12
4
|
def self.name(last_names = 1)
|
13
|
-
|
5
|
+
strf format_builder(Laranja::Gender.abbr, last_names, rand(9) == 0)
|
14
6
|
end
|
15
7
|
|
16
8
|
def self.first_name
|
17
|
-
|
9
|
+
strf format_builder(Laranja::Gender.abbr, 0)
|
18
10
|
end
|
19
11
|
|
20
12
|
def self.last_name
|
21
|
-
|
13
|
+
strf format_builder(Laranja::Gender.abbr, 1, false, false)
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def self.format_builder(gender, last_names = 1, suffix = false, first_name = true)
|
19
|
+
f = ''
|
20
|
+
f += genderfy(gender, 'first_name ') if first_name
|
21
|
+
f += '%last_name ' * last_names
|
22
|
+
# TODO: Only men have suffix?
|
23
|
+
f += genderfy(gender, 'suffix ') if suffix && gender.downcase == 'm'
|
24
|
+
f
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.genderfy(gender, attribute)
|
28
|
+
g = gender.downcase == 'f' ? 'female' : 'male'
|
29
|
+
"%#{g}_#{attribute}"
|
22
30
|
end
|
23
31
|
|
24
32
|
end
|
data/lib/laranja/version.rb
CHANGED
data/lib/static_data.yml
CHANGED
@@ -1,9 +1,26 @@
|
|
1
1
|
laranja:
|
2
|
+
gender:
|
3
|
+
name: ['Feminino', 'Masculino']
|
4
|
+
abbr: ['F', 'M']
|
5
|
+
address:
|
6
|
+
log_prefix: ['Alameda', 'Avenida', 'Marginal', 'Rodovia', 'Rua', 'Travessa', 'Viela']
|
7
|
+
city_prefix: ['Águas de', 'Campos de', 'Monte', 'Nova', 'Velha']
|
8
|
+
female_city_prefix: ['Nossa Senhora', 'Santa']
|
9
|
+
male_city_prefix: ['Santo', 'São']
|
10
|
+
city_suffix: ['do Norte', 'do Sul']
|
11
|
+
district_prefix: ['Bosque', 'Chácara', 'Jardim', 'Monte', 'Parque', 'Vila']
|
12
|
+
secondary: ['Ap', 'Casa', 'Lote', 'Quadra']
|
13
|
+
codigo_cep: { ac: 6, al: 5, ap: 6, am: 6, ba: 4, ce: 6, df: 7, es: 2, go: 7, ma: 6, mt: 7, ms: 7, mg: 3, pa: 6, pb: 5, pr: 8, pe: 5, pi: 6, rj: 2, rn: 5, rs: 9, ro: 7, rr: 6, sc: 8, sp: 1, se: 4, to: 7 }
|
14
|
+
uf_abbr: ['AC', 'AL', 'AP', 'AM', 'BA', 'CE', 'DF', 'ES', 'GO', 'MA', 'MT', 'MS', 'MG', 'PA', 'PB', 'PR', 'PE', 'PI', 'RJ', 'RN', 'RS', 'RO', 'RR', 'SC', 'SP', 'SE', 'TO']
|
15
|
+
uf_name: ['Acre', 'Alagoas', 'Amapá', 'Amazonas', 'Bahia', 'Ceará', 'Distrito Federal', 'Espírito Santo', 'Goiás', 'Maranhão', 'Mato Grosso', 'Mato Grosso do Sul', 'Minas Gerais', 'Pará', 'Paraíba', 'Paraná', 'Pernambuco', 'Piauí', 'Rio de Janeiro', 'Rio Grande do Norte', 'Rio Grande do Sul', 'Rondônia', 'Roraima', 'Santa Catarina', 'São Paulo', 'Sergipe', 'Tocantins']
|
2
16
|
internet:
|
3
17
|
email: ['bol.com.br', 'gmail.com', 'hotmail.com', 'live.com', 'terra.com.br', 'uol.com.br', 'yahoo.com']
|
4
18
|
name:
|
5
|
-
|
6
|
-
|
7
|
-
|
19
|
+
male_title: ['Barão', 'Conde', 'Dom', 'Dr', 'Duque', 'Engenheiro', 'General', 'Imperador', 'Presidente', 'Professor']
|
20
|
+
female_title: ['Baronesa', 'Condessa', 'Dra', 'Duquesa', 'Engenheira', 'Imperatriz', 'Princesa', 'Professora']
|
21
|
+
male_first_name: ['Alessandro', 'Alexandre', 'Antônio', 'Breno', 'Carlos', 'César', 'Danilo', 'Deneval', 'Eduardo', 'Esther', 'Elísio', 'Fábio', 'Fabrício', 'Félix', 'Feliciano', 'Frederico', 'Fabiano', 'Gustavo', 'Guilherme', 'Gúbio', 'Heitor', 'Hélio', 'Hugo', 'Ígor', 'João', 'Júlio', 'Kléber', 'Lucas', 'Marcos', 'Marcelo', 'Norberto', 'Paulo', 'Pablo', 'Pedro', 'Raul', 'Rafael', 'Ricardo', 'Roberto', 'Tertuliano', 'Vicente', 'Víctor', 'Yuri', 'Washington']
|
22
|
+
female_first_name: ['Alessandra', 'Aline', 'Bruna', 'Carla', 'Célia', 'Cecília', 'Dalila', 'Eduarda', 'Fabrícia', 'Felícia', 'Isabel', 'Isabela', 'Joana', 'Júlia', 'Janaína', 'Karla', 'Lorena', 'Lorraine', 'Larissa', 'Meire', 'Marcela', 'Margarida', 'Mércia', 'Márcia', 'Marli', 'Morgana', 'Maria', 'Natália', 'Núbia', 'Ofélia', 'Paula', 'Rafaela', 'Roberta', 'Sílvia', 'Suélen', 'Sara', 'Talita', 'Vitória']
|
23
|
+
last_name: ['Albuquerque', 'Barros', 'Batista', 'Braga', 'Carvalho', 'Costa', 'Cunha', 'Franco', 'Ladislau', 'Macedo', 'Martins', 'Melo', 'Moraes', 'Moreira', 'Nogueira', 'Oliveira', 'Pereira', 'Reis', 'Santos', 'Saraiva', 'Silva', 'Souza', 'Xavier']
|
24
|
+
male_suffix: ['Junior', 'Neto', 'Filho']
|
8
25
|
cpf:
|
9
26
|
codigo_uf: { ac: 2, al: 4, ap: 2, am: 2, ba: 5, ce: 3, df: 1, es: 7, go: 1, ma: 3, mt: 1, ms: 1, mg: 6, pa: 2, pb: 4, pr: 9, pe: 4, pi: 3, rj: 7, rn: 4, rs: 0, ro: 2, rr: 2, sc: 9, sp: 8, se: 5, to: 1 }
|
@@ -0,0 +1,89 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
shared_examples 'non empty string generator' do |str|
|
4
|
+
describe 'and' do
|
5
|
+
it 'return a string' do
|
6
|
+
expect(str).to be_a_kind_of(String)
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'returns a non empty string' do
|
10
|
+
expect(str).not_to be_empty
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
describe Laranja::Address do
|
16
|
+
describe '#uf' do
|
17
|
+
it_behaves_like 'non empty string generator', Laranja::Address.uf
|
18
|
+
end
|
19
|
+
|
20
|
+
describe '#uf_abbr' do
|
21
|
+
it_behaves_like 'non empty string generator', Laranja::Address.uf_abbr
|
22
|
+
it 'returns a 2 characters string' do
|
23
|
+
expect(Laranja::Address.uf_abbr.size).to eq(2)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe '#formatted_cep' do
|
28
|
+
it_behaves_like 'non empty string generator', Laranja::Address.formatted_cep
|
29
|
+
|
30
|
+
it 'returns an 8 characters string' do
|
31
|
+
expect(Laranja::Address.formatted_cep.size).to eq(9)
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'returns a number only string' do
|
35
|
+
expect(Laranja::Address.formatted_cep).to match(/\d{5}-\d{3}/)
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'has the UF digit if an UF is specified' do
|
39
|
+
expect(Laranja::Address.formatted_cep(:ce)[0].to_i).to eq(6)
|
40
|
+
expect(Laranja::Address.formatted_cep(:BA)[0].to_i).to eq(4)
|
41
|
+
expect(Laranja::Address.formatted_cep('rj')[0].to_i).to eq(2)
|
42
|
+
expect(Laranja::Address.formatted_cep('RS')[0].to_i).to eq(9)
|
43
|
+
expect(Laranja::Address.formatted_cep(:sp)[0].to_i).to eq(1)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
describe '#cep' do
|
48
|
+
it_behaves_like 'non empty string generator', Laranja::Address.cep
|
49
|
+
|
50
|
+
it 'returns an 8 characters string' do
|
51
|
+
expect(Laranja::Address.cep.size).to eq(8)
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'returns a number only string' do
|
55
|
+
expect(Laranja::Address.cep).to match(/\d{8}/)
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'has the UF digit if an UF is specified' do
|
59
|
+
expect(Laranja::Address.cep(:ce)[0].to_i).to eq(6)
|
60
|
+
expect(Laranja::Address.cep(:BA)[0].to_i).to eq(4)
|
61
|
+
expect(Laranja::Address.cep('rj')[0].to_i).to eq(2)
|
62
|
+
expect(Laranja::Address.cep('RS')[0].to_i).to eq(9)
|
63
|
+
expect(Laranja::Address.cep(:sp)[0].to_i).to eq(1)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
describe '#city' do
|
68
|
+
it_behaves_like 'non empty string generator', Laranja::Address.city
|
69
|
+
end
|
70
|
+
|
71
|
+
describe '#street' do
|
72
|
+
it_behaves_like 'non empty string generator', Laranja::Address.street
|
73
|
+
end
|
74
|
+
|
75
|
+
describe '#district' do
|
76
|
+
it_behaves_like 'non empty string generator', Laranja::Address.district
|
77
|
+
end
|
78
|
+
|
79
|
+
describe '#secondary' do
|
80
|
+
it_behaves_like 'non empty string generator', Laranja::Address.secondary
|
81
|
+
end
|
82
|
+
|
83
|
+
describe '#number' do
|
84
|
+
it_behaves_like 'non empty string generator', Laranja::Address.number
|
85
|
+
it 'returns a number only string' do
|
86
|
+
expect(Laranja::Address.number).to match(/\d+/)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
data/spec/gender_spec.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Laranja::Gender do
|
4
|
+
describe '#gender' do
|
5
|
+
it 'returns a string' do
|
6
|
+
expect(Laranja::Gender.gender).to be_a_kind_of(String)
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'returns a non empty string' do
|
10
|
+
expect(Laranja::Gender.gender).not_to be_empty
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
describe '#abbr' do
|
15
|
+
it 'returns a string' do
|
16
|
+
expect(Laranja::Gender.abbr).to be_a_kind_of(String)
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'returns an 1 character string' do
|
20
|
+
expect(Laranja::Gender.abbr.size).to eq(1)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/spec/internet_spec.rb
CHANGED
@@ -16,16 +16,16 @@ describe Laranja::Internet do
|
|
16
16
|
let (:name) { 'John Doe' }
|
17
17
|
|
18
18
|
it 'returns a string' do
|
19
|
-
expect(Laranja::Internet.
|
19
|
+
expect(Laranja::Internet.email_for(name)).to be_a_kind_of(String)
|
20
20
|
end
|
21
21
|
|
22
22
|
it 'returns a valid email' do
|
23
|
-
expect(Laranja::Internet.
|
23
|
+
expect(Laranja::Internet.email_for(name)).to match(/^([\w\.%\+\-]+)@([\w\-]+\.)+([\w]{2,})$/i)
|
24
24
|
end
|
25
25
|
|
26
26
|
it 'returns an email for the given name' do
|
27
|
-
expect(Laranja::Internet.
|
28
|
-
expect(Laranja::Internet.
|
27
|
+
expect(Laranja::Internet.email_for(name)).to include('john')
|
28
|
+
expect(Laranja::Internet.email_for(name)).to include('doe')
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
@@ -44,16 +44,16 @@ describe Laranja::Internet do
|
|
44
44
|
let (:name) { 'John Doe' }
|
45
45
|
|
46
46
|
it 'returns a string' do
|
47
|
-
expect(Laranja::Internet.
|
47
|
+
expect(Laranja::Internet.username_for(name)).to be_a_kind_of(String)
|
48
48
|
end
|
49
49
|
|
50
50
|
it 'returns an username for the given name' do
|
51
|
-
expect(Laranja::Internet.
|
52
|
-
expect(Laranja::Internet.
|
51
|
+
expect(Laranja::Internet.username_for(name)).to include('john')
|
52
|
+
expect(Laranja::Internet.username_for(name)).to include('doe')
|
53
53
|
end
|
54
54
|
|
55
55
|
it 'returns an username for the given name and separator' do
|
56
|
-
expect(Laranja::Internet.
|
56
|
+
expect(Laranja::Internet.username_for(name, ['-'])).to eq('john-doe')
|
57
57
|
end
|
58
58
|
end
|
59
59
|
|
data/spec/name_spec.rb
CHANGED
@@ -39,20 +39,28 @@ describe Laranja::Name do
|
|
39
39
|
it_behaves_like 'a name generator', Laranja::Name.last_name
|
40
40
|
end
|
41
41
|
|
42
|
-
describe '#
|
42
|
+
describe '#strf' do
|
43
43
|
|
44
44
|
let(:n) { 1 + rand(3) }
|
45
45
|
|
46
|
-
it_behaves_like 'a name generator', Laranja::Name.
|
47
|
-
it_behaves_like 'a name generator', Laranja::Name.
|
48
|
-
it_behaves_like 'a name generator', Laranja::Name.
|
46
|
+
it_behaves_like 'a name generator', Laranja::Name.strf('%female_first_name')
|
47
|
+
it_behaves_like 'a name generator', Laranja::Name.strf('%male_first_name')
|
48
|
+
it_behaves_like 'a name generator', Laranja::Name.strf('%last_name')
|
49
|
+
it_behaves_like 'a name generator', Laranja::Name.strf('%male_suffix')
|
50
|
+
it_behaves_like 'a name generator', Laranja::Name.strf('%female_title')
|
51
|
+
it_behaves_like 'a name generator', Laranja::Name.strf('%male_title')
|
49
52
|
|
50
53
|
it 'returns N last names when specified' do
|
51
|
-
expect(Laranja::Name.
|
54
|
+
expect(Laranja::Name.strf("%male_first_name#{ ' %last_name' * n }").split.size).to eq(n + 1)
|
55
|
+
expect(Laranja::Name.strf("%female_first_name#{ ' %last_name' * n }").split.size).to eq(n + 1)
|
52
56
|
end
|
53
57
|
|
54
58
|
it 'returns N last names plus suffix when specified' do
|
55
|
-
expect(Laranja::Name.
|
59
|
+
expect(Laranja::Name.strf("%male_first_name#{ ' %last_name' * n } %male_suffix").split.size).to eq(n + 2)
|
60
|
+
end
|
61
|
+
|
62
|
+
it 'returns a title when specified' do
|
63
|
+
expect(Laranja::Name.strf("%female_title %female_first_name#{ ' %last_name' * n }").split.size).to eq(n + 2)
|
56
64
|
end
|
57
65
|
end
|
58
66
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: laranja
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-02-
|
12
|
+
date: 2014-02-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: safe_yaml
|
@@ -91,12 +91,16 @@ files:
|
|
91
91
|
- Rakefile
|
92
92
|
- laranja.gemspec
|
93
93
|
- lib/laranja.rb
|
94
|
+
- lib/laranja/address.rb
|
94
95
|
- lib/laranja/cpf.rb
|
96
|
+
- lib/laranja/gender.rb
|
95
97
|
- lib/laranja/internet.rb
|
96
98
|
- lib/laranja/name.rb
|
97
99
|
- lib/laranja/version.rb
|
98
100
|
- lib/static_data.yml
|
101
|
+
- spec/address_spec.rb
|
99
102
|
- spec/cpf_spec.rb
|
103
|
+
- spec/gender_spec.rb
|
100
104
|
- spec/internet_spec.rb
|
101
105
|
- spec/name_spec.rb
|
102
106
|
- spec/spec_helper.rb
|
@@ -115,7 +119,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
115
119
|
version: '0'
|
116
120
|
segments:
|
117
121
|
- 0
|
118
|
-
hash:
|
122
|
+
hash: 1413268876876247429
|
119
123
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
120
124
|
none: false
|
121
125
|
requirements:
|
@@ -124,7 +128,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
124
128
|
version: '0'
|
125
129
|
segments:
|
126
130
|
- 0
|
127
|
-
hash:
|
131
|
+
hash: 1413268876876247429
|
128
132
|
requirements: []
|
129
133
|
rubyforge_project:
|
130
134
|
rubygems_version: 1.8.25
|
@@ -133,7 +137,9 @@ specification_version: 3
|
|
133
137
|
summary: Laranja will generate valid brazilian fake data, which can be used for automated
|
134
138
|
testing or populating development databases.
|
135
139
|
test_files:
|
140
|
+
- spec/address_spec.rb
|
136
141
|
- spec/cpf_spec.rb
|
142
|
+
- spec/gender_spec.rb
|
137
143
|
- spec/internet_spec.rb
|
138
144
|
- spec/name_spec.rb
|
139
145
|
- spec/spec_helper.rb
|