gimei 0.2.0 → 1.0.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 +5 -5
- data/.github/workflows/test.yml +60 -0
- data/CHANGELOG.md +27 -1
- data/README.md +137 -24
- data/_config.yml +1 -0
- data/gimei.gemspec +1 -1
- data/lib/data/addresses.yml +3 -3
- data/lib/gimei.rb +41 -7
- data/lib/gimei/address.rb +19 -3
- data/lib/gimei/config.rb +9 -0
- data/lib/gimei/name.rb +32 -19
- data/lib/gimei/unique_generator.rb +47 -0
- data/lib/gimei/version.rb +1 -1
- data/spec/address_spec.rb +50 -32
- data/spec/gimei_spec.rb +52 -25
- data/spec/name_spec.rb +63 -24
- data/spec/spec_helper.rb +9 -1
- data/spec/unique_spec.rb +399 -0
- metadata +12 -8
- data/.travis.yml +0 -6
data/spec/name_spec.rb
CHANGED
@@ -6,11 +6,15 @@ describe Gimei::Name do
|
|
6
6
|
before { @name = Gimei::Name.male }
|
7
7
|
|
8
8
|
it 'Gimei::Name オブジェクトが返ること' do
|
9
|
-
@name.must_be_instance_of Gimei::Name
|
9
|
+
_(@name).must_be_instance_of Gimei::Name
|
10
|
+
end
|
11
|
+
|
12
|
+
it '#gender が :male を返すこと' do
|
13
|
+
_(@name.gender).must_equal :male
|
10
14
|
end
|
11
15
|
|
12
16
|
it '#male? が true を返すこと' do
|
13
|
-
@name.male
|
17
|
+
_(@name.male?).must_equal true
|
14
18
|
end
|
15
19
|
end
|
16
20
|
|
@@ -18,59 +22,82 @@ describe Gimei::Name do
|
|
18
22
|
before { @name = Gimei::Name.female }
|
19
23
|
|
20
24
|
it 'Gimei::Name オブジェクトが返ること' do
|
21
|
-
@name.must_be_instance_of Gimei::Name
|
25
|
+
_(@name).must_be_instance_of Gimei::Name
|
26
|
+
end
|
27
|
+
|
28
|
+
it '#gender が :female を返すこと' do
|
29
|
+
_(@name.gender).must_equal :female
|
22
30
|
end
|
23
31
|
|
24
32
|
it '#female? が true を返すこと' do
|
25
|
-
@name.female
|
33
|
+
_(@name.female?).must_equal true
|
26
34
|
end
|
27
35
|
end
|
28
36
|
|
29
37
|
describe '.kanji' do
|
30
38
|
it '全角文字とスペースが返ること' do
|
31
|
-
Gimei::Name.kanji.must_match
|
39
|
+
_(Gimei::Name.kanji).must_match(/\A#{zenkaku_or_space_regexp}+\z/)
|
32
40
|
end
|
33
41
|
end
|
34
42
|
|
35
43
|
describe '.hiragana' do
|
36
44
|
it 'ひらがなとスペースが返ること' do
|
37
|
-
Gimei::Name.hiragana.must_match
|
45
|
+
_(Gimei::Name.hiragana).must_match(/\A[\p{hiragana}\s]+\z/)
|
38
46
|
end
|
39
47
|
end
|
40
48
|
|
41
49
|
describe '.katakana' do
|
42
50
|
it 'カタカナとスペースが返ること' do
|
43
|
-
Gimei::Name.katakana.must_match
|
51
|
+
_(Gimei::Name.katakana).must_match(/\A[\p{katakana}\s]+\z/)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
describe '.romaji' do
|
56
|
+
it 'ローマ字とスペースが返ること' do
|
57
|
+
_(Gimei::Name.romaji).must_match(/\A[a-zA-Z\s]+\z/)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
describe '#gender' do
|
62
|
+
it ':male または :female が返ること' do
|
63
|
+
_(Gimei::Name.new.gender).must_be_instance_of(Symbol)
|
64
|
+
_(Gimei::Name.new.gender.to_s).must_match(/\A(?:male|female)\Z/)
|
44
65
|
end
|
45
66
|
end
|
46
67
|
|
47
68
|
describe '#kanji' do
|
48
69
|
it '全角文字とスペースが返ること' do
|
49
|
-
Gimei::Name.new.kanji.must_match
|
70
|
+
_(Gimei::Name.new.kanji).must_match(/\A#{zenkaku_or_space_regexp}+\z/)
|
50
71
|
end
|
51
72
|
end
|
52
73
|
|
53
74
|
describe '#hiragana' do
|
54
75
|
it 'ひらがなとスペースが返ること' do
|
55
|
-
Gimei::Name.new.hiragana.must_match
|
76
|
+
_(Gimei::Name.new.hiragana).must_match(/\A[\p{hiragana}\s]+\z/)
|
56
77
|
end
|
57
78
|
end
|
58
79
|
|
59
80
|
describe '#katakana' do
|
60
81
|
it 'カタカナとスペースが返ること' do
|
61
|
-
Gimei::Name.new.katakana.must_match
|
82
|
+
_(Gimei::Name.new.katakana).must_match(/\A[\p{katakana}\s]+\z/)
|
62
83
|
end
|
63
84
|
end
|
64
85
|
|
65
86
|
describe '#first' do
|
66
87
|
it 'Gimei::Name::First オブジェクトが返ること' do
|
67
|
-
Gimei::Name.new.first.must_be_instance_of Gimei::Name::First
|
88
|
+
_(Gimei::Name.new.first).must_be_instance_of Gimei::Name::First
|
68
89
|
end
|
69
90
|
end
|
70
91
|
|
71
92
|
describe '#last' do
|
72
93
|
it 'Gimei::Name::Last オブジェクトが返ること' do
|
73
|
-
Gimei::Name.new.last.must_be_instance_of Gimei::Name::Last
|
94
|
+
_(Gimei::Name.new.last).must_be_instance_of Gimei::Name::Last
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
describe '.romaji' do
|
99
|
+
it 'ローマ字とスペースが返ること' do
|
100
|
+
_(Gimei::Name.new.romaji).must_match(/\A[a-zA-Z\s]+\z/)
|
74
101
|
end
|
75
102
|
end
|
76
103
|
end
|
@@ -80,11 +107,11 @@ describe Gimei::Name::First do
|
|
80
107
|
before { @name = Gimei::Name::First.male }
|
81
108
|
|
82
109
|
it 'Gimei::Name::First オブジェクトが返ること' do
|
83
|
-
@name.must_be_instance_of Gimei::Name::First
|
110
|
+
_(@name).must_be_instance_of Gimei::Name::First
|
84
111
|
end
|
85
112
|
|
86
113
|
it '#male? が true を返すこと' do
|
87
|
-
@name.male
|
114
|
+
_(@name.male?).must_equal true
|
88
115
|
end
|
89
116
|
end
|
90
117
|
|
@@ -92,35 +119,41 @@ describe Gimei::Name::First do
|
|
92
119
|
before { @name = Gimei::Name::First.female }
|
93
120
|
|
94
121
|
it 'Gimei::Name::First オブジェクトが返ること' do
|
95
|
-
@name.must_be_instance_of Gimei::Name::First
|
122
|
+
_(@name).must_be_instance_of Gimei::Name::First
|
96
123
|
end
|
97
124
|
|
98
125
|
it '#female? が true を返すこと' do
|
99
|
-
@name.female
|
126
|
+
_(@name.female?).must_equal true
|
100
127
|
end
|
101
128
|
end
|
102
129
|
|
103
130
|
describe '#kanji' do
|
104
131
|
it '全角文字が返ること' do
|
105
|
-
Gimei::Name::First.new.kanji.must_match
|
132
|
+
_(Gimei::Name::First.new.kanji).must_match(/\A#{zenkaku_regexp}+\z/)
|
106
133
|
end
|
107
134
|
end
|
108
135
|
|
109
136
|
describe '#hiragana' do
|
110
137
|
it 'ひらがなが返ること' do
|
111
|
-
Gimei::Name::First.new.hiragana.must_match
|
138
|
+
_(Gimei::Name::First.new.hiragana).must_match(/\A\p{hiragana}+\z/)
|
112
139
|
end
|
113
140
|
end
|
114
141
|
|
115
142
|
describe '#katakana' do
|
116
143
|
it 'カタカナが返ること' do
|
117
|
-
Gimei::Name::First.new.katakana.must_match
|
144
|
+
_(Gimei::Name::First.new.katakana).must_match(/\A\p{katakana}+\z/)
|
118
145
|
end
|
119
146
|
end
|
120
147
|
|
121
148
|
describe '#to_s' do
|
122
149
|
it '全角文字が返ること' do
|
123
|
-
Gimei::Name::First.new.to_s.must_match
|
150
|
+
_(Gimei::Name::First.new.to_s).must_match(/\A#{zenkaku_regexp}+\z/)
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
describe '#romaji' do
|
155
|
+
it 'アルファベットで返ること' do
|
156
|
+
_(Gimei::Name::First.new.romaji).must_match(/\A[a-zA-Z]+\z/)
|
124
157
|
end
|
125
158
|
end
|
126
159
|
end
|
@@ -130,25 +163,31 @@ describe Gimei::Name::Last do
|
|
130
163
|
|
131
164
|
describe '#kanji' do
|
132
165
|
it '全角文字が返ること' do
|
133
|
-
@name.kanji.must_match
|
166
|
+
_(@name.kanji).must_match(/\A#{zenkaku_regexp}+\z/)
|
134
167
|
end
|
135
168
|
end
|
136
169
|
|
137
170
|
describe '#hiragana' do
|
138
171
|
it 'ひらがなが返ること' do
|
139
|
-
@name.hiragana.must_match
|
172
|
+
_(@name.hiragana).must_match(/\A\p{hiragana}+\z/)
|
140
173
|
end
|
141
174
|
end
|
142
175
|
|
143
176
|
describe '#katakana' do
|
144
177
|
it 'カタカナが返ること' do
|
145
|
-
@name.katakana.must_match
|
178
|
+
_(@name.katakana).must_match(/\A\p{katakana}+\z/)
|
146
179
|
end
|
147
180
|
end
|
148
181
|
|
149
182
|
describe '#to_s' do
|
150
183
|
it '全角文字が返ること' do
|
151
|
-
@name.to_s.must_match
|
184
|
+
_(@name.to_s).must_match(/\A#{zenkaku_regexp}+\z/)
|
185
|
+
end
|
186
|
+
end
|
187
|
+
|
188
|
+
describe '#romaji' do
|
189
|
+
it 'アルファベットで返ること' do
|
190
|
+
_(Gimei::Name::First.new.romaji).must_match(/\A[a-z|A-Z]+\z/)
|
152
191
|
end
|
153
192
|
end
|
154
193
|
end
|
data/spec/spec_helper.rb
CHANGED
data/spec/unique_spec.rb
ADDED
@@ -0,0 +1,399 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require_relative 'spec_helper'
|
3
|
+
|
4
|
+
describe 'Gimei.unique' do
|
5
|
+
before do
|
6
|
+
Gimei.unique.clear
|
7
|
+
end
|
8
|
+
|
9
|
+
describe '#clear' do
|
10
|
+
describe '名前が枯渇してからclearを実行し、再度名前を取得しようとしたとき' do
|
11
|
+
it 'Gimei::RetryLimitExceededed例外が発生しないこと' do
|
12
|
+
Gimei.stub(:names, {
|
13
|
+
'first_name' => { 'male' => [%w[真一 しんいち シンイチ]] },
|
14
|
+
'last_name' => [%w[前島 まえしま マエシマ]]
|
15
|
+
}) do
|
16
|
+
Gimei.unique.male
|
17
|
+
Gimei.unique.clear
|
18
|
+
Gimei.unique.male
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe '名前が枯渇してからclear(:name)を実行し再度名前を取得しようとしたとき' do
|
24
|
+
it 'Gimei::RetryLimitExceededed例外が発生しないこと' do
|
25
|
+
Gimei.stub(:names, {
|
26
|
+
'first_name' => {'male' => [%w[真一 しんいち シンイチ]]},
|
27
|
+
'last_name' => [%w[前島 まえしま マエシマ]]
|
28
|
+
}) do
|
29
|
+
Gimei.unique.male
|
30
|
+
Gimei.unique.clear(:name)
|
31
|
+
Gimei.unique.male
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe '名前が枯渇してからclear(:address)を実行し再度名前を取得しようとしたとき' do
|
37
|
+
it 'Gimei::RetryLimitExceededed例外が発生すること' do
|
38
|
+
Gimei.stub(:names, {
|
39
|
+
'first_name' => {'male' => [%w[真一 しんいち シンイチ]]},
|
40
|
+
'last_name' => [%w[前島 まえしま マエシマ]]
|
41
|
+
}) do
|
42
|
+
assert_raises Gimei::RetryLimitExceeded do
|
43
|
+
Gimei.unique.male
|
44
|
+
Gimei.unique.clear(:address)
|
45
|
+
Gimei.unique.male
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
describe '#male' do
|
53
|
+
describe '名前が枯渇していないとき' do
|
54
|
+
it '一意な名前(フルネームの漢字単位)が返ること' do
|
55
|
+
Gimei.stub(:names, {
|
56
|
+
'first_name' => { 'male' => [%w[真一 しんいち シンイチ]] },
|
57
|
+
'last_name' => [%w[前島 まえしま マエシマ], %w[神谷 かみや カミヤ]]
|
58
|
+
}) do
|
59
|
+
_([Gimei.unique.male.kanji, Gimei.unique.male.kanji].sort).must_equal ['前島 真一', '神谷 真一']
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
describe '名前が枯渇したとき' do
|
65
|
+
it 'Gimei::RetryLimitExceededed例外が発生すること' do
|
66
|
+
Gimei.stub(:names, {
|
67
|
+
'first_name' => { 'male' => [%w[真一 しんいち シンイチ]] },
|
68
|
+
'last_name' => [%w[前島 まえしま マエシマ]]
|
69
|
+
}) do
|
70
|
+
assert_raises Gimei::RetryLimitExceeded do
|
71
|
+
Gimei.unique.male
|
72
|
+
Gimei.unique.male
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
describe '#female' do
|
80
|
+
describe '名前が枯渇していないとき' do
|
81
|
+
it '一意な名前(フルネームの漢字単位)が返ること' do
|
82
|
+
Gimei.stub(:names, {
|
83
|
+
'first_name' => { 'female' => [%w[花子 はなこ ハナコ]] },
|
84
|
+
'last_name' => [%w[前島 まえしま マエシマ], %w[神谷 かみや カミヤ]]
|
85
|
+
}) do
|
86
|
+
_([Gimei.unique.female.kanji, Gimei.unique.female.kanji].sort).must_equal ['前島 花子', '神谷 花子']
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
describe '名前が枯渇したとき' do
|
92
|
+
it 'Gimei::RetryLimitExceededed例外が発生すること' do
|
93
|
+
Gimei.stub(:names, {
|
94
|
+
'first_name' => { 'female' => [%w[花子 はなこ ハナコ]] },
|
95
|
+
'last_name' => [%w[前島 まえしま マエシマ]]
|
96
|
+
}) do
|
97
|
+
assert_raises Gimei::RetryLimitExceeded do
|
98
|
+
Gimei.unique.female
|
99
|
+
Gimei.unique.female
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
describe '#first' do
|
107
|
+
describe '名が枯渇していないとき' do
|
108
|
+
it '一意な名(漢字単位)が返ること' do
|
109
|
+
Gimei.stub(:names, {
|
110
|
+
'first_name' => { 'male' => [%w[真一 しんいち シンイチ], %w[真二 しんじ シンジ]] },
|
111
|
+
'last_name' => %w[]
|
112
|
+
}) do
|
113
|
+
_([Gimei.unique.first(:male).kanji, Gimei.unique.first(:male).kanji].sort).must_equal %w[真一 真二]
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
describe '名が枯渇したとき' do
|
119
|
+
it 'Gimei::RetryLimitExceeded例外が発生すること' do
|
120
|
+
Gimei.stub(:names, {
|
121
|
+
'first_name' => { 'male' => [%w[真一 しんいち シンイチ]] },
|
122
|
+
'last_name' => []
|
123
|
+
}) do
|
124
|
+
assert_raises Gimei::RetryLimitExceeded do
|
125
|
+
Gimei.unique.first(:male)
|
126
|
+
Gimei.unique.first(:male)
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
describe '#last' do
|
134
|
+
describe '姓が枯渇していないとき' do
|
135
|
+
it '一意な姓(漢字単位)が返ること' do
|
136
|
+
Gimei.stub(:names, {
|
137
|
+
'first_name' => { 'male' => [], 'female' => [] },
|
138
|
+
'last_name' => [%w[前島 まえしま マエシマ], %w[神谷 かみや カミヤ]]
|
139
|
+
}) do
|
140
|
+
_([Gimei.unique.last.kanji, Gimei.unique.last.kanji].sort).must_equal %w[前島 神谷]
|
141
|
+
end
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
describe '姓が枯渇したとき' do
|
146
|
+
it 'Gimei::RetryLimitExceeded例外が発生すること' do
|
147
|
+
Gimei.stub(:names, {
|
148
|
+
'first_name' => { 'male' => [], 'female' => [] },
|
149
|
+
'last_name' => [%w[前島 まえしま マエシマ]]
|
150
|
+
}) do
|
151
|
+
assert_raises Gimei::RetryLimitExceeded do
|
152
|
+
Gimei.unique.last
|
153
|
+
Gimei.unique.last
|
154
|
+
end
|
155
|
+
end
|
156
|
+
end
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
160
|
+
describe '#kanji' do
|
161
|
+
describe '名前が枯渇していないとき' do
|
162
|
+
it '一意な名前(フルネームの漢字単位)が返ること' do
|
163
|
+
Gimei.stub(:names, {
|
164
|
+
'first_name' => { 'male' => [%w[真一 しんいち シンイチ]] },
|
165
|
+
'last_name' => [%w[前島 まえしま マエシマ], %w[神谷 かみや カミヤ]]
|
166
|
+
}) do
|
167
|
+
_([Gimei.unique.kanji(:male), Gimei.unique.kanji(:male)].sort).must_equal ['前島 真一', '神谷 真一']
|
168
|
+
end
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
describe '名前が枯渇したとき' do
|
173
|
+
it 'Gimei::RetryLimitExceededed例外が発生すること' do
|
174
|
+
Gimei.stub(:names, {
|
175
|
+
'first_name' => { 'male' => [%w[真一 しんいち シンイチ]] },
|
176
|
+
'last_name' => [%w[前島 まえしま マエシマ]]
|
177
|
+
}) do
|
178
|
+
assert_raises Gimei::RetryLimitExceeded do
|
179
|
+
Gimei.unique.kanji(:male)
|
180
|
+
Gimei.unique.kanji(:male)
|
181
|
+
end
|
182
|
+
end
|
183
|
+
end
|
184
|
+
end
|
185
|
+
end
|
186
|
+
|
187
|
+
describe '#hiragana' do
|
188
|
+
describe '名前が枯渇していないとき' do
|
189
|
+
it '一意な名前(フルネームの漢字単位)が返ること' do
|
190
|
+
Gimei.stub(:names, {
|
191
|
+
'first_name' => { 'male' => [%w[真一 しんいち シンイチ]] },
|
192
|
+
'last_name' => [%w[前島 まえしま マエシマ], %w[神谷 かみや カミヤ]]
|
193
|
+
}) do
|
194
|
+
_([Gimei.unique.hiragana(:male), Gimei.unique.hiragana(:male)].sort).must_equal ['かみや しんいち', 'まえしま しんいち']
|
195
|
+
end
|
196
|
+
end
|
197
|
+
end
|
198
|
+
|
199
|
+
describe '名前が枯渇したとき' do
|
200
|
+
it 'Gimei::RetryLimitExceededed例外が発生すること' do
|
201
|
+
Gimei.stub(:names, {
|
202
|
+
'first_name' => { 'male' => [%w[真一 しんいち シンイチ]] },
|
203
|
+
'last_name' => [%w[前島 まえしま マエシマ]]
|
204
|
+
}) do
|
205
|
+
assert_raises Gimei::RetryLimitExceeded do
|
206
|
+
Gimei.unique.hiragana(:male)
|
207
|
+
Gimei.unique.hiragana(:male)
|
208
|
+
end
|
209
|
+
end
|
210
|
+
end
|
211
|
+
end
|
212
|
+
end
|
213
|
+
|
214
|
+
describe '#katakana' do
|
215
|
+
describe '名前が枯渇していないとき' do
|
216
|
+
it '一意な名前(フルネームの漢字単位)が返ること' do
|
217
|
+
Gimei.stub(:names, {
|
218
|
+
'first_name' => { 'male' => [%w[真一 しんいち シンイチ]] },
|
219
|
+
'last_name' => [%w[前島 まえしま マエシマ], %w[神谷 かみや カミヤ]]
|
220
|
+
}) do
|
221
|
+
_([Gimei.unique.katakana(:male), Gimei.unique.katakana(:male)].sort).must_equal ['カミヤ シンイチ', 'マエシマ シンイチ']
|
222
|
+
end
|
223
|
+
end
|
224
|
+
end
|
225
|
+
|
226
|
+
describe '名前が枯渇したとき' do
|
227
|
+
it 'Gimei::RetryLimitExceededed例外が発生すること' do
|
228
|
+
Gimei.stub(:names, {
|
229
|
+
'first_name' => { 'male' => [%w[真一 しんいち シンイチ]] },
|
230
|
+
'last_name' => [%w[前島 まえしま マエシマ]]
|
231
|
+
}) do
|
232
|
+
assert_raises Gimei::RetryLimitExceeded do
|
233
|
+
Gimei.unique.katakana(:male)
|
234
|
+
Gimei.unique.katakana(:male)
|
235
|
+
end
|
236
|
+
end
|
237
|
+
end
|
238
|
+
end
|
239
|
+
end
|
240
|
+
|
241
|
+
describe '#romaji' do
|
242
|
+
describe '名前が枯渇していないとき' do
|
243
|
+
it '一意な名前(フルネームの漢字単位)が返ること' do
|
244
|
+
Gimei.stub(:names, {
|
245
|
+
'first_name' => { 'male' => [%w[真一 しんいち シンイチ]] },
|
246
|
+
'last_name' => [%w[前島 まえしま マエシマ], %w[神谷 かみや カミヤ]]
|
247
|
+
}) do
|
248
|
+
_([Gimei.unique.romaji(:male), Gimei.unique.romaji(:male)].sort).must_equal ['Shinichi Kamiya', 'Shinichi Maeshima']
|
249
|
+
end
|
250
|
+
end
|
251
|
+
end
|
252
|
+
|
253
|
+
describe '名前が枯渇したとき' do
|
254
|
+
it 'Gimei::RetryLimitExceededed例外が発生すること' do
|
255
|
+
Gimei.stub(:names, {
|
256
|
+
'first_name' => { 'male' => [%w[真一 しんいち シンイチ]] },
|
257
|
+
'last_name' => [%w[前島 まえしま マエシマ]]
|
258
|
+
}) do
|
259
|
+
assert_raises Gimei::RetryLimitExceeded do
|
260
|
+
Gimei.unique.romaji(:male)
|
261
|
+
Gimei.unique.romaji(:male)
|
262
|
+
end
|
263
|
+
end
|
264
|
+
end
|
265
|
+
end
|
266
|
+
end
|
267
|
+
|
268
|
+
describe '#address' do
|
269
|
+
describe '住所が枯渇していないとき' do
|
270
|
+
it '一意な住所(漢字単位)が返ること' do
|
271
|
+
Gimei.stub(:addresses, {
|
272
|
+
'addresses' => {
|
273
|
+
'prefecture' => [%w[東京都 とうきょうと トウキョウト]],
|
274
|
+
'city' => [%w[渋谷区 しぶやく シブヤク]],
|
275
|
+
'town' => [%w[恵比寿 えびす エビス], %w[蛭子 えびす エビス]]
|
276
|
+
}
|
277
|
+
}) do
|
278
|
+
_([Gimei.unique.address.kanji, Gimei.unique.address.kanji].sort).must_equal %w[東京都渋谷区恵比寿 東京都渋谷区蛭子]
|
279
|
+
end
|
280
|
+
end
|
281
|
+
end
|
282
|
+
|
283
|
+
describe '住所が枯渇したとき' do
|
284
|
+
it 'Gimei::RetryLimitExceeded例外が発生すること' do
|
285
|
+
Gimei.stub(:addresses, {
|
286
|
+
'addresses' => {
|
287
|
+
'prefecture' => [%w[東京都 とうきょうと トウキョウト]],
|
288
|
+
'city' => [%w[渋谷区 しぶやく シブヤク]],
|
289
|
+
'town' => [%w[恵比寿 えびす エビス]]
|
290
|
+
}
|
291
|
+
}) do
|
292
|
+
assert_raises Gimei::RetryLimitExceeded do
|
293
|
+
Gimei.unique.address
|
294
|
+
Gimei.unique.address
|
295
|
+
end
|
296
|
+
end
|
297
|
+
end
|
298
|
+
end
|
299
|
+
end
|
300
|
+
|
301
|
+
describe '#prefecture' do
|
302
|
+
describe '県が枯渇していないとき' do
|
303
|
+
it '一意な県が返ること' do
|
304
|
+
Gimei.stub(:addresses, {
|
305
|
+
'addresses' => {
|
306
|
+
'prefecture' => [%w[東京都 とうきょうと トウキョウト], %w[静岡県 しずおかけん シズオカケン]],
|
307
|
+
'city' => [],
|
308
|
+
'town' => []
|
309
|
+
}
|
310
|
+
}) do
|
311
|
+
_([Gimei.unique.prefecture.kanji, Gimei.unique.prefecture.kanji].sort).must_equal %w[東京都 静岡県]
|
312
|
+
end
|
313
|
+
end
|
314
|
+
end
|
315
|
+
|
316
|
+
describe '県が枯渇したとき' do
|
317
|
+
it 'Gimei::RetryLimitExceeded例外が発生すること' do
|
318
|
+
Gimei.stub(:addresses, {
|
319
|
+
'addresses' => {
|
320
|
+
'prefecture' => [%w[東京都 とうきょうと トウキョウト]],
|
321
|
+
'city' => [],
|
322
|
+
'town' => []
|
323
|
+
}
|
324
|
+
}) do
|
325
|
+
assert_raises Gimei::RetryLimitExceeded do
|
326
|
+
Gimei.unique.prefecture
|
327
|
+
Gimei.unique.prefecture
|
328
|
+
end
|
329
|
+
end
|
330
|
+
end
|
331
|
+
end
|
332
|
+
end
|
333
|
+
|
334
|
+
describe '#city' do
|
335
|
+
describe '市区町村が枯渇していないとき' do
|
336
|
+
it '一意な市区町村が返ること' do
|
337
|
+
Gimei.stub(:addresses, {
|
338
|
+
'addresses' => {
|
339
|
+
'prefecture' => [],
|
340
|
+
'city' => [%w[渋谷区 しぶやく シブヤク], %w[新宿区 しんじゅくく シンジュクク]],
|
341
|
+
'town' => []
|
342
|
+
}
|
343
|
+
}) do
|
344
|
+
_([Gimei.unique.city.kanji, Gimei.unique.city.kanji].sort).must_equal %w[新宿区 渋谷区]
|
345
|
+
end
|
346
|
+
end
|
347
|
+
end
|
348
|
+
|
349
|
+
describe '市区町村が枯渇したとき' do
|
350
|
+
it 'Gimei::RetryLimitExceeded例外が発生すること' do
|
351
|
+
Gimei.stub(:addresses, {
|
352
|
+
'addresses' => {
|
353
|
+
'prefecture' => [],
|
354
|
+
'city' => [%w[渋谷区 しぶやく シブヤク]],
|
355
|
+
'town' => []
|
356
|
+
}
|
357
|
+
}) do
|
358
|
+
assert_raises Gimei::RetryLimitExceeded do
|
359
|
+
Gimei.unique.city
|
360
|
+
Gimei.unique.city
|
361
|
+
end
|
362
|
+
end
|
363
|
+
end
|
364
|
+
end
|
365
|
+
end
|
366
|
+
|
367
|
+
describe '#town' do
|
368
|
+
describe 'その他住所が枯渇していないとき' do
|
369
|
+
it '一意なその他住所が返ること' do
|
370
|
+
Gimei.stub(:addresses, {
|
371
|
+
'addresses' => {
|
372
|
+
'prefecture' => [],
|
373
|
+
'city' => [],
|
374
|
+
'town' => [%w[恵比寿 えびす エビス], %w[蛭子 えびす エビス]]
|
375
|
+
}
|
376
|
+
}) do
|
377
|
+
_([Gimei.unique.town.kanji, Gimei.unique.town.kanji].sort).must_equal %w[恵比寿 蛭子]
|
378
|
+
end
|
379
|
+
end
|
380
|
+
end
|
381
|
+
|
382
|
+
describe 'その他住所が枯渇したとき' do
|
383
|
+
it 'Gimei::RetryLimitExceeded例外が発生すること' do
|
384
|
+
Gimei.stub(:addresses, {
|
385
|
+
'addresses' => {
|
386
|
+
'prefecture' => [],
|
387
|
+
'city' => [],
|
388
|
+
'town' => [%w[恵比寿 えびす エビス]]
|
389
|
+
}
|
390
|
+
}) do
|
391
|
+
assert_raises Gimei::RetryLimitExceeded do
|
392
|
+
Gimei.unique.town
|
393
|
+
Gimei.unique.town
|
394
|
+
end
|
395
|
+
end
|
396
|
+
end
|
397
|
+
end
|
398
|
+
end
|
399
|
+
end
|