icu_utils 1.1.1 → 1.2.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 +7 -0
- data/.rspec +1 -1
- data/.ruby-version +1 -0
- data/Gemfile.lock +16 -12
- data/README.md +1 -1
- data/icu_utils.gemspec +1 -1
- data/lib/icu_utils/date.rb +72 -0
- data/lib/icu_utils/version.rb +1 -1
- data/lib/icu_utils.rb +1 -0
- data/spec/date_spec.rb +174 -0
- data/spec/federation_spec.rb +68 -68
- metadata +21 -33
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: f97cfbd598b1e453a7e2dcf3de583f60ba462d75
|
4
|
+
data.tar.gz: 525cbf547ee580ada1da81cbf4da119361a0c353
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: cfa42575c3b40cec0f6aa7f531f6db3192009dd44599ab600ef800ca196d65c6b147b1c3825e4daf9799276f699464ec945ba0afdbfc463b6fd5919849fb13ec
|
7
|
+
data.tar.gz: eb0da907423c6d21a4b44c2ca4a8be8de670b4758b06947709dbaa8aadd55fb0a9b272a118376807524ab2c34f58e2a9e442c6f3e00ddea0befbd795f9989c93
|
data/.rspec
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
--colour
|
2
|
-
--format
|
2
|
+
--format doc
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.0.0-p353
|
data/Gemfile.lock
CHANGED
@@ -1,30 +1,34 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
icu_utils (1.
|
4
|
+
icu_utils (1.2.0)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
8
8
|
specs:
|
9
9
|
diff-lcs (1.2.5)
|
10
10
|
json (1.8.1)
|
11
|
-
rake (10.
|
12
|
-
rdoc (4.
|
11
|
+
rake (10.3.2)
|
12
|
+
rdoc (4.1.1)
|
13
13
|
json (~> 1.4)
|
14
|
-
rspec (
|
15
|
-
rspec-core (~>
|
16
|
-
rspec-expectations (~>
|
17
|
-
rspec-mocks (~>
|
18
|
-
rspec-core (
|
19
|
-
|
20
|
-
|
21
|
-
|
14
|
+
rspec (3.0.0)
|
15
|
+
rspec-core (~> 3.0.0)
|
16
|
+
rspec-expectations (~> 3.0.0)
|
17
|
+
rspec-mocks (~> 3.0.0)
|
18
|
+
rspec-core (3.0.4)
|
19
|
+
rspec-support (~> 3.0.0)
|
20
|
+
rspec-expectations (3.0.4)
|
21
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
22
|
+
rspec-support (~> 3.0.0)
|
23
|
+
rspec-mocks (3.0.4)
|
24
|
+
rspec-support (~> 3.0.0)
|
25
|
+
rspec-support (3.0.4)
|
22
26
|
|
23
27
|
PLATFORMS
|
24
28
|
ruby
|
25
29
|
|
26
30
|
DEPENDENCIES
|
27
|
-
bundler
|
31
|
+
bundler
|
28
32
|
icu_utils!
|
29
33
|
rake
|
30
34
|
rdoc
|
data/README.md
CHANGED
data/icu_utils.gemspec
CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |s|
|
|
18
18
|
s.test_files = s.files.grep(%r{^(spec)/})
|
19
19
|
s.require_paths = ["lib"]
|
20
20
|
|
21
|
-
s.add_development_dependency "bundler"
|
21
|
+
s.add_development_dependency "bundler"
|
22
22
|
s.add_development_dependency "rake"
|
23
23
|
s.add_development_dependency "rspec"
|
24
24
|
s.add_development_dependency "rdoc"
|
@@ -0,0 +1,72 @@
|
|
1
|
+
module ICU
|
2
|
+
# Reproduce some of the functionality of validates_timeliness, a gem no longer maintained.
|
3
|
+
class Date
|
4
|
+
attr_reader :date, :reasons
|
5
|
+
|
6
|
+
def initialize(date, constraints={})
|
7
|
+
@reasons = []
|
8
|
+
if @date = to_date(date)
|
9
|
+
@constraints = constraints.each_with_object({}) do |(k,v), h|
|
10
|
+
if %i[after on_or_after before on_or_before].include?(k)
|
11
|
+
unless h[k] = to_date(v)
|
12
|
+
raise ArgumentError.new("invalid date specified for #{k} constraint")
|
13
|
+
end
|
14
|
+
else
|
15
|
+
raise ArgumentError.new("invalid date constraint #{k}")
|
16
|
+
end
|
17
|
+
end
|
18
|
+
else
|
19
|
+
@reasons.push "errors.messages.invalid_date"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def valid?
|
24
|
+
valid = true
|
25
|
+
if @date
|
26
|
+
if valid && @constraints[:after] && @date <= @constraints[:after]
|
27
|
+
valid = false
|
28
|
+
@reasons.push "errors.messages.after"
|
29
|
+
@reasons.push restriction: @constraints[:after].to_s
|
30
|
+
end
|
31
|
+
if valid && @constraints[:before] && @date >= @constraints[:before]
|
32
|
+
valid = false
|
33
|
+
@reasons.push "errors.messages.before"
|
34
|
+
@reasons.push restriction: @constraints[:before].to_s
|
35
|
+
end
|
36
|
+
if valid && @constraints[:on_or_after] && @date < @constraints[:on_or_after]
|
37
|
+
valid = false
|
38
|
+
@reasons.push "errors.messages.on_or_after"
|
39
|
+
@reasons.push restriction: @constraints[:on_or_after].to_s
|
40
|
+
end
|
41
|
+
if valid && @constraints[:on_or_before] && @date > @constraints[:on_or_before]
|
42
|
+
valid = false
|
43
|
+
@reasons.push "errors.messages.on_or_before"
|
44
|
+
@reasons.push restriction: @constraints[:on_or_before].to_s
|
45
|
+
end
|
46
|
+
else
|
47
|
+
valid = false
|
48
|
+
end
|
49
|
+
valid
|
50
|
+
end
|
51
|
+
|
52
|
+
# after: must be after %{restriction}
|
53
|
+
# before: must be before %{restriction}
|
54
|
+
# invalid: invalid
|
55
|
+
# invalid_date: invalid date
|
56
|
+
# on_or_after: must be on or after %{restriction}
|
57
|
+
# on_or_before: must be on or before %{restriction}
|
58
|
+
|
59
|
+
private
|
60
|
+
|
61
|
+
def to_date(thing)
|
62
|
+
if thing.is_a?(Date)
|
63
|
+
thing.dup
|
64
|
+
else
|
65
|
+
thing = ::Date.parse(thing.to_s)
|
66
|
+
end
|
67
|
+
thing
|
68
|
+
rescue
|
69
|
+
nil
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
data/lib/icu_utils/version.rb
CHANGED
data/lib/icu_utils.rb
CHANGED
data/spec/date_spec.rb
ADDED
@@ -0,0 +1,174 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
+
|
3
|
+
module ICU
|
4
|
+
describe Date do
|
5
|
+
context "no constraints" do
|
6
|
+
it "today" do
|
7
|
+
today = ICU::Date.new(::Date.today)
|
8
|
+
expect(today).to be_valid
|
9
|
+
expect(today.date).to eq ::Date.today
|
10
|
+
expect(today.reasons).to be_empty
|
11
|
+
end
|
12
|
+
|
13
|
+
it "now" do
|
14
|
+
now = ICU::Date.new(Time.now)
|
15
|
+
expect(now).to be_valid
|
16
|
+
expect(now.date).to eq ::Date.today
|
17
|
+
expect(now.reasons).to be_empty
|
18
|
+
end
|
19
|
+
|
20
|
+
it "human" do
|
21
|
+
now = ICU::Date.new("9th November 1955")
|
22
|
+
expect(now).to be_valid
|
23
|
+
expect(now.date).to eq ::Date.new(1955, 11, 9)
|
24
|
+
expect(now.reasons).to be_empty
|
25
|
+
end
|
26
|
+
|
27
|
+
it "abbreviated" do
|
28
|
+
now = ICU::Date.new("June 16 1986")
|
29
|
+
expect(now).to be_valid
|
30
|
+
expect(now.date).to eq ::Date.new(1986, 6, 16)
|
31
|
+
expect(now.reasons).to be_empty
|
32
|
+
end
|
33
|
+
|
34
|
+
it "invalid" do
|
35
|
+
invalid = ICU::Date.new("rubbish")
|
36
|
+
expect(invalid).to_not be_valid
|
37
|
+
expect(invalid.reasons).to_not be_empty
|
38
|
+
expect(invalid.reasons.size).to eq 1
|
39
|
+
expect(invalid.reasons.first).to eq "errors.messages.invalid_date"
|
40
|
+
end
|
41
|
+
|
42
|
+
it "impossible" do
|
43
|
+
invalid = ICU::Date.new("2014-02-30")
|
44
|
+
expect(invalid).to_not be_valid
|
45
|
+
expect(invalid.reasons).to_not be_empty
|
46
|
+
expect(invalid.reasons.size).to eq 1
|
47
|
+
expect(invalid.reasons.first).to eq "errors.messages.invalid_date"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
context "after" do
|
52
|
+
it "today/yesterday" do
|
53
|
+
d = ICU::Date.new(::Date.today, after: ::Date.today - 1)
|
54
|
+
expect(d).to be_valid
|
55
|
+
expect(d.date).to eq ::Date.today
|
56
|
+
expect(d.reasons).to be_empty
|
57
|
+
end
|
58
|
+
|
59
|
+
it "yesterday/today" do
|
60
|
+
d = ICU::Date.new(::Date.today - 1, after: ::Date.today)
|
61
|
+
expect(d).to_not be_valid
|
62
|
+
expect(d.date).to eq ::Date.today - 1
|
63
|
+
expect(d.reasons[0]).to eq "errors.messages.after"
|
64
|
+
expect(d.reasons[1]).to eq restriction: ::Date.today.to_s
|
65
|
+
end
|
66
|
+
|
67
|
+
it "today/today" do
|
68
|
+
d = ICU::Date.new(::Date.today, after: ::Date.today)
|
69
|
+
expect(d).to_not be_valid
|
70
|
+
expect(d.date).to eq ::Date.today
|
71
|
+
expect(d.reasons[0]).to eq "errors.messages.after"
|
72
|
+
expect(d.reasons[1]).to eq restriction: ::Date.today.to_s
|
73
|
+
end
|
74
|
+
|
75
|
+
it "invalid" do
|
76
|
+
expect{ICU::Date.new(::Date.today, after: "rubbish")}.to raise_error(/invalid/)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
context "on or after" do
|
81
|
+
it "today/yesterday" do
|
82
|
+
d = ICU::Date.new(::Date.today, on_or_after: ::Date.today - 1)
|
83
|
+
expect(d).to be_valid
|
84
|
+
expect(d.date).to eq ::Date.today
|
85
|
+
expect(d.reasons).to be_empty
|
86
|
+
end
|
87
|
+
|
88
|
+
it "yesterday/today" do
|
89
|
+
d = ICU::Date.new(::Date.today - 1, on_or_after: ::Date.today)
|
90
|
+
expect(d).to_not be_valid
|
91
|
+
expect(d.date).to eq ::Date.today - 1
|
92
|
+
expect(d.reasons[0]).to eq "errors.messages.on_or_after"
|
93
|
+
expect(d.reasons[1]).to eq restriction: ::Date.today.to_s
|
94
|
+
end
|
95
|
+
|
96
|
+
it "today/today" do
|
97
|
+
d = ICU::Date.new(::Date.today, on_or_after: ::Date.today)
|
98
|
+
expect(d).to be_valid
|
99
|
+
expect(d.date).to eq ::Date.today
|
100
|
+
expect(d.reasons).to be_empty
|
101
|
+
end
|
102
|
+
|
103
|
+
it "impossible" do
|
104
|
+
expect{ICU::Date.new(::Date.today, on_or_after: ::Date.new(1955, 2, 29))}.to raise_error(/invalid/)
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
context "before" do
|
109
|
+
it "yesterday/today" do
|
110
|
+
d = ICU::Date.new(::Date.today - 1, before: ::Date.today)
|
111
|
+
expect(d).to be_valid
|
112
|
+
expect(d.date).to eq ::Date.today - 1
|
113
|
+
expect(d.reasons).to be_empty
|
114
|
+
end
|
115
|
+
|
116
|
+
it "today/yesterday" do
|
117
|
+
d = ICU::Date.new(::Date.today, before: ::Date.today - 1)
|
118
|
+
expect(d).to_not be_valid
|
119
|
+
expect(d.date).to eq ::Date.today
|
120
|
+
expect(d.reasons[0]).to eq "errors.messages.before"
|
121
|
+
expect(d.reasons[1]).to eq restriction: (::Date.today - 1).to_s
|
122
|
+
end
|
123
|
+
|
124
|
+
it "today/today" do
|
125
|
+
d = ICU::Date.new(::Date.today, before: ::Date.today.to_s)
|
126
|
+
expect(d).to_not be_valid
|
127
|
+
expect(d.date).to eq ::Date.today
|
128
|
+
expect(d.reasons[0]).to eq "errors.messages.before"
|
129
|
+
expect(d.reasons[1]).to eq restriction: ::Date.today.to_s
|
130
|
+
end
|
131
|
+
|
132
|
+
it "invalid" do
|
133
|
+
expect{ICU::Date.new(::Date.today, before: "")}.to raise_error(/invalid/)
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
context "on or before" do
|
138
|
+
it "yesterday/today" do
|
139
|
+
d = ICU::Date.new(::Date.today - 1, on_or_before: ::Date.today.to_s)
|
140
|
+
expect(d).to be_valid
|
141
|
+
expect(d.date).to eq ::Date.today - 1
|
142
|
+
expect(d.reasons).to be_empty
|
143
|
+
end
|
144
|
+
|
145
|
+
it "today/yesterday" do
|
146
|
+
d = ICU::Date.new(::Date.today, on_or_before: ::Date.today - 1)
|
147
|
+
expect(d).to_not be_valid
|
148
|
+
expect(d.date).to eq ::Date.today
|
149
|
+
expect(d.reasons[0]).to eq "errors.messages.on_or_before"
|
150
|
+
expect(d.reasons[1]).to eq restriction: (::Date.today - 1).to_s
|
151
|
+
end
|
152
|
+
|
153
|
+
it "today/today" do
|
154
|
+
d = ICU::Date.new(::Date.today, on_or_before: ::Date.today)
|
155
|
+
expect(d).to be_valid
|
156
|
+
expect(d.date).to eq ::Date.today
|
157
|
+
expect(d.reasons).to be_empty
|
158
|
+
end
|
159
|
+
|
160
|
+
it "impossible" do
|
161
|
+
expect{ICU::Date.new(::Date.today, on_or_before: "2014-06-31")}.to raise_error(/invalid/)
|
162
|
+
end
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
166
|
+
context "multiple constraints" do
|
167
|
+
it "today/today" do
|
168
|
+
d = ICU::Date.new(::Date.today, on_or_after: ::Date.today.to_s, on_or_before: ::Date.today)
|
169
|
+
expect(d).to be_valid
|
170
|
+
expect(d.date).to eq ::Date.today
|
171
|
+
expect(d.reasons).to be_empty
|
172
|
+
end
|
173
|
+
end
|
174
|
+
end
|
data/spec/federation_spec.rb
CHANGED
@@ -7,185 +7,185 @@ module ICU
|
|
7
7
|
context "#find using codes" do
|
8
8
|
it "should find a federation given a valid code" do
|
9
9
|
fed = Federation.find('IRL')
|
10
|
-
fed.code.
|
11
|
-
fed.name.
|
10
|
+
expect(fed.code).to eq('IRL')
|
11
|
+
expect(fed.name).to eq('Ireland')
|
12
12
|
end
|
13
13
|
|
14
14
|
it "should find a federation from code case insensitively" do
|
15
15
|
fed = Federation.find('rUs')
|
16
|
-
fed.code.
|
17
|
-
fed.name.
|
16
|
+
expect(fed.code).to eq('RUS')
|
17
|
+
expect(fed.name).to eq('Russia')
|
18
18
|
end
|
19
19
|
|
20
20
|
it "should find a federation despite irrelevant whitespace" do
|
21
21
|
fed = Federation.find(' mex ')
|
22
|
-
fed.code.
|
23
|
-
fed.name.
|
22
|
+
expect(fed.code).to eq('MEX')
|
23
|
+
expect(fed.name).to eq('Mexico')
|
24
24
|
end
|
25
25
|
|
26
26
|
it "should return nil for an invalid code" do
|
27
|
-
Federation.find('XYZ').
|
27
|
+
expect(Federation.find('XYZ')).to be_nil
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
31
|
context "#find using names" do
|
32
32
|
it "should find a federation given a valid name" do
|
33
33
|
fed = Federation.find('England')
|
34
|
-
fed.code.
|
35
|
-
fed.name.
|
34
|
+
expect(fed.code).to eq('ENG')
|
35
|
+
expect(fed.name).to eq('England')
|
36
36
|
end
|
37
37
|
|
38
38
|
it "should find a federation from name case insensitively" do
|
39
39
|
fed = Federation.find('franCE')
|
40
|
-
fed.code.
|
41
|
-
fed.name.
|
40
|
+
expect(fed.code).to eq('FRA')
|
41
|
+
expect(fed.name).to eq('France')
|
42
42
|
end
|
43
43
|
|
44
44
|
it "should not be fooled by irrelevant whitespace" do
|
45
45
|
fed = Federation.find(' united states of america ')
|
46
|
-
fed.code.
|
47
|
-
fed.name.
|
46
|
+
expect(fed.code).to eq('USA')
|
47
|
+
expect(fed.name).to eq('United States of America')
|
48
48
|
end
|
49
49
|
|
50
50
|
it "should return nil for an invalid name" do
|
51
|
-
Federation.find('Mordor').
|
51
|
+
expect(Federation.find('Mordor')).to be_nil
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
55
55
|
context "#find using parts of names" do
|
56
56
|
it "should find a federation given a substring which is unique and at least 4 characters" do
|
57
57
|
fed = Federation.find('bosni')
|
58
|
-
fed.code.
|
59
|
-
fed.name.
|
58
|
+
expect(fed.code).to eq('BIH')
|
59
|
+
expect(fed.name).to eq('Bosnia and Herzegovina')
|
60
60
|
end
|
61
61
|
|
62
62
|
it "should not be fooled by irrelevant whitespace" do
|
63
63
|
fed = Federation.find(' arab EMIRATES ')
|
64
|
-
fed.code.
|
65
|
-
fed.name.
|
64
|
+
expect(fed.code).to eq('UAE')
|
65
|
+
expect(fed.name).to eq('United Arab Emirates')
|
66
66
|
end
|
67
67
|
|
68
68
|
it "should not find a federation if the substring matches more than one" do
|
69
|
-
Federation.find('land').
|
69
|
+
expect(Federation.find('land')).to be_nil
|
70
70
|
end
|
71
71
|
|
72
72
|
it "should return nil for any string smaller in length than 3" do
|
73
|
-
Federation.find('ze').
|
73
|
+
expect(Federation.find('ze')).to be_nil
|
74
74
|
end
|
75
75
|
end
|
76
76
|
|
77
77
|
context "#find federations with alternative names" do
|
78
78
|
it "should find Macedonia multiple ways" do
|
79
|
-
Federation.find('MKD').name.
|
80
|
-
Federation.find('FYROM').name.
|
81
|
-
Federation.find('macedoni').name.
|
82
|
-
Federation.find('Macedonia').name.
|
83
|
-
Federation.find('former YUG Rep').name.
|
84
|
-
Federation.find('Republic of Macedonia').name.
|
85
|
-
Federation.find('former yugoslav republic').name.
|
79
|
+
expect(Federation.find('MKD').name).to eq('Macedonia')
|
80
|
+
expect(Federation.find('FYROM').name).to eq('Macedonia')
|
81
|
+
expect(Federation.find('macedoni').name).to eq('Macedonia')
|
82
|
+
expect(Federation.find('Macedonia').name).to eq('Macedonia')
|
83
|
+
expect(Federation.find('former YUG Rep').name).to eq('Macedonia')
|
84
|
+
expect(Federation.find('Republic of Macedonia').name).to eq('Macedonia')
|
85
|
+
expect(Federation.find('former yugoslav republic').name).to eq('Macedonia')
|
86
86
|
end
|
87
87
|
end
|
88
88
|
|
89
89
|
context "#find from common code errors" do
|
90
90
|
it "should find IRL from ICU" do
|
91
|
-
Federation.find('ICU').code.
|
92
|
-
Federation.find('SPA').code.
|
93
|
-
Federation.find('WAL').code.
|
91
|
+
expect(Federation.find('ICU').code).to eq('IRL')
|
92
|
+
expect(Federation.find('SPA').code).to eq('ESP')
|
93
|
+
expect(Federation.find('WAL').code).to eq('WLS')
|
94
94
|
end
|
95
95
|
end
|
96
96
|
|
97
97
|
context "#find with alternative inputs" do
|
98
98
|
it "should behave robustly with completely invalid inputs" do
|
99
|
-
Federation.find().
|
100
|
-
Federation.find(nil).
|
101
|
-
Federation.find('').
|
102
|
-
Federation.find(1).
|
99
|
+
expect(Federation.find()).to be_nil
|
100
|
+
expect(Federation.find(nil)).to be_nil
|
101
|
+
expect(Federation.find('')).to be_nil
|
102
|
+
expect(Federation.find(1)).to be_nil
|
103
103
|
end
|
104
104
|
end
|
105
105
|
|
106
106
|
context "#new is private" do
|
107
107
|
it "#new cannot be called directly" do
|
108
|
-
|
108
|
+
expect { Federation.new('IRL', 'Ireland') }.to raise_error(/private method/)
|
109
109
|
end
|
110
110
|
end
|
111
111
|
|
112
112
|
context "documentation examples" do
|
113
113
|
it "should all be correct for valid input" do
|
114
|
-
Federation.find('IRL').name.
|
115
|
-
Federation.find('IRL').code.
|
116
|
-
Federation.find('rUs').code.
|
117
|
-
Federation.find('ongoli').name.
|
118
|
-
Federation.find(' united states ').code.
|
114
|
+
expect(Federation.find('IRL').name).to eq('Ireland')
|
115
|
+
expect(Federation.find('IRL').code).to eq('IRL')
|
116
|
+
expect(Federation.find('rUs').code).to eq('RUS')
|
117
|
+
expect(Federation.find('ongoli').name).to eq('Mongolia')
|
118
|
+
expect(Federation.find(' united states ').code).to eq('USA')
|
119
119
|
end
|
120
120
|
|
121
121
|
it "should return nil for invalid input" do
|
122
|
-
Federation.find('ZYX').
|
123
|
-
Federation.find('land').
|
122
|
+
expect(Federation.find('ZYX')).to be_nil
|
123
|
+
expect(Federation.find('land')).to be_nil
|
124
124
|
end
|
125
125
|
end
|
126
126
|
|
127
127
|
context "#menu" do
|
128
128
|
it "should return array of name-code pairs in order of name by default" do
|
129
129
|
menu = Federation.menu
|
130
|
-
menu.
|
130
|
+
expect(menu.size).to eq(total)
|
131
131
|
names = menu.map{|m| m.first}.join(',')
|
132
132
|
codes = menu.map{|m| m.last}.join(',')
|
133
|
-
names.index('Afghanistan').
|
134
|
-
names.index('Iraq,Ireland,Israel').
|
135
|
-
codes.index('AFG').
|
136
|
-
codes.index('IRQ,IRL,ISR').
|
133
|
+
expect(names.index('Afghanistan')).to eq(0)
|
134
|
+
expect(names.index('Iraq,Ireland,Israel')).not_to be_nil
|
135
|
+
expect(codes.index('AFG')).to eq(0)
|
136
|
+
expect(codes.index('IRQ,IRL,ISR')).not_to be_nil
|
137
137
|
end
|
138
138
|
|
139
139
|
it "should be configuarble to order the list by codes" do
|
140
140
|
menu = Federation.menu(:order => "code")
|
141
|
-
menu.
|
141
|
+
expect(menu.size).to eq(total)
|
142
142
|
names = menu.map{|m| m.first}.join(',')
|
143
143
|
codes = menu.map{|m| m.last}.join(',')
|
144
|
-
names.index('Afghanistan').
|
145
|
-
names.index('Ireland,Iraq,Iceland').
|
146
|
-
codes.index('AFG').
|
147
|
-
codes.index('IRL,IRQ,ISL').
|
144
|
+
expect(names.index('Afghanistan')).to eq(0)
|
145
|
+
expect(names.index('Ireland,Iraq,Iceland')).not_to be_nil
|
146
|
+
expect(codes.index('AFG')).to eq(0)
|
147
|
+
expect(codes.index('IRL,IRQ,ISL')).not_to be_nil
|
148
148
|
end
|
149
149
|
|
150
150
|
it "should be configuarble to have a selected country at the top" do
|
151
151
|
menu = Federation.menu(:top => 'IRL')
|
152
|
-
menu.
|
152
|
+
expect(menu.size).to eq(total)
|
153
153
|
names = menu.map{|m| m.first}.join(',')
|
154
154
|
codes = menu.map{|m| m.last}.join(',')
|
155
|
-
names.index('Ireland,Afghanistan').
|
156
|
-
names.index('Iraq,Israel').
|
157
|
-
codes.index('IRL,AFG').
|
158
|
-
codes.index('IRQ,ISR').
|
155
|
+
expect(names.index('Ireland,Afghanistan')).to eq(0)
|
156
|
+
expect(names.index('Iraq,Israel')).not_to be_nil
|
157
|
+
expect(codes.index('IRL,AFG')).to eq(0)
|
158
|
+
expect(codes.index('IRQ,ISR')).not_to be_nil
|
159
159
|
end
|
160
160
|
|
161
161
|
it "should be configuarble to have 'None' entry at the top" do
|
162
162
|
menu = Federation.menu(:none => 'None')
|
163
|
-
menu.
|
163
|
+
expect(menu.size).to eq(total + 1)
|
164
164
|
names = menu.map{|m| m.first}.join(',')
|
165
165
|
codes = menu.map{|m| m.last}.join(',')
|
166
|
-
names.index('None,Afghanistan').
|
167
|
-
codes.index(',AFG').
|
166
|
+
expect(names.index('None,Afghanistan')).to eq(0)
|
167
|
+
expect(codes.index(',AFG')).to eq(0)
|
168
168
|
end
|
169
169
|
|
170
170
|
it "should be able to handle multiple configuarations" do
|
171
171
|
menu = Federation.menu(:top => 'IRL', :order => 'code', :none => 'None')
|
172
|
-
menu.
|
172
|
+
expect(menu.size).to eq(total + 1)
|
173
173
|
names = menu.map{|m| m.first}.join(',')
|
174
174
|
codes = menu.map{|m| m.last}.join(',')
|
175
|
-
names.index('None,Ireland,Afghanistan').
|
176
|
-
names.index('Iraq,Iceland').
|
177
|
-
codes.index(',IRL,AFG').
|
178
|
-
codes.index('IRQ,ISL').
|
175
|
+
expect(names.index('None,Ireland,Afghanistan')).to eq(0)
|
176
|
+
expect(names.index('Iraq,Iceland')).not_to be_nil
|
177
|
+
expect(codes.index(',IRL,AFG')).to eq(0)
|
178
|
+
expect(codes.index('IRQ,ISL')).not_to be_nil
|
179
179
|
end
|
180
180
|
end
|
181
181
|
|
182
182
|
context "#codes" do
|
183
183
|
it "should return array of codes ordered alphabetically" do
|
184
184
|
codes = Federation.codes
|
185
|
-
codes.
|
185
|
+
expect(codes.size).to eq(total)
|
186
186
|
all = codes.join(',')
|
187
|
-
all.index('AFG').
|
188
|
-
all.index('INA,IND,IRI,IRL,IRQ,ISL,ISR,ISV,ITA,IVB').
|
187
|
+
expect(all.index('AFG')).to eq(0)
|
188
|
+
expect(all.index('INA,IND,IRI,IRL,IRQ,ISL,ISR,ISV,ITA,IVB')).not_to be_nil
|
189
189
|
end
|
190
190
|
end
|
191
191
|
|
metadata
CHANGED
@@ -1,78 +1,69 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: icu_utils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
5
|
-
prerelease:
|
4
|
+
version: 1.2.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Mark Orr
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-08-20 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: bundler
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
|
-
version: '
|
19
|
+
version: '0'
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - '>='
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version: '
|
26
|
+
version: '0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rake
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - '>='
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - '>='
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: rspec
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - '>='
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - '>='
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: rdoc
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - '>='
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '0'
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - '>='
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: '0'
|
78
69
|
description: A place for shared utilities for sharing between the various ICU apps
|
@@ -87,6 +78,7 @@ extra_rdoc_files:
|
|
87
78
|
files:
|
88
79
|
- .gitignore
|
89
80
|
- .rspec
|
81
|
+
- .ruby-version
|
90
82
|
- Gemfile
|
91
83
|
- Gemfile.lock
|
92
84
|
- Icon.png
|
@@ -99,41 +91,37 @@ files:
|
|
99
91
|
- bin/rspec
|
100
92
|
- icu_utils.gemspec
|
101
93
|
- lib/icu_utils.rb
|
94
|
+
- lib/icu_utils/date.rb
|
102
95
|
- lib/icu_utils/federation.rb
|
103
96
|
- lib/icu_utils/version.rb
|
97
|
+
- spec/date_spec.rb
|
104
98
|
- spec/federation_spec.rb
|
105
99
|
- spec/spec_helper.rb
|
106
100
|
homepage: http://github.com/sanichi/icu_utils
|
107
101
|
licenses:
|
108
102
|
- MIT
|
103
|
+
metadata: {}
|
109
104
|
post_install_message:
|
110
105
|
rdoc_options: []
|
111
106
|
require_paths:
|
112
107
|
- lib
|
113
108
|
required_ruby_version: !ruby/object:Gem::Requirement
|
114
|
-
none: false
|
115
109
|
requirements:
|
116
|
-
- -
|
110
|
+
- - '>='
|
117
111
|
- !ruby/object:Gem::Version
|
118
112
|
version: '0'
|
119
|
-
segments:
|
120
|
-
- 0
|
121
|
-
hash: -1389679885683086703
|
122
113
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
123
|
-
none: false
|
124
114
|
requirements:
|
125
|
-
- -
|
115
|
+
- - '>='
|
126
116
|
- !ruby/object:Gem::Version
|
127
117
|
version: '0'
|
128
|
-
segments:
|
129
|
-
- 0
|
130
|
-
hash: -1389679885683086703
|
131
118
|
requirements: []
|
132
119
|
rubyforge_project:
|
133
|
-
rubygems_version: 1.
|
120
|
+
rubygems_version: 2.1.11
|
134
121
|
signing_key:
|
135
|
-
specification_version:
|
122
|
+
specification_version: 4
|
136
123
|
summary: Shared ICU utilities
|
137
124
|
test_files:
|
125
|
+
- spec/date_spec.rb
|
138
126
|
- spec/federation_spec.rb
|
139
127
|
- spec/spec_helper.rb
|