worlddb-models 2.2.2 → 2.3.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/Manifest.txt +31 -13
- data/README.md +7 -7
- data/Rakefile +1 -1
- data/lib/worlddb/deleter.rb +6 -1
- data/lib/worlddb/helpers/value_helper.rb +117 -0
- data/lib/worlddb/matcher.rb +99 -135
- data/lib/worlddb/matcher_adm.rb +82 -0
- data/lib/worlddb/models/city.rb +30 -208
- data/lib/worlddb/models/city_base.rb +220 -0
- data/lib/worlddb/models/continent.rb +9 -0
- data/lib/worlddb/models/country.rb +21 -4
- data/lib/worlddb/models/forward.rb +25 -9
- data/lib/worlddb/models/lang.rb +6 -0
- data/lib/worlddb/models/place.rb +1 -1
- data/lib/worlddb/models/state.rb +83 -0
- data/lib/worlddb/models/{region.rb → state_base.rb} +52 -36
- data/lib/worlddb/models/tagdb/tag.rb +1 -1
- data/lib/worlddb/models.rb +11 -8
- data/lib/worlddb/patterns.rb +4 -4
- data/lib/worlddb/reader.rb +68 -39
- data/lib/worlddb/reader_file.rb +36 -3
- data/lib/worlddb/reader_zip.rb +33 -3
- data/lib/worlddb/readers/base.rb +149 -0
- data/lib/worlddb/readers/city.rb +2 -65
- data/lib/worlddb/readers/country.rb +2 -63
- data/lib/worlddb/readers/lang.rb +3 -68
- data/lib/worlddb/readers/state.rb +61 -0
- data/lib/worlddb/readers/state_tree.rb +118 -0
- data/lib/worlddb/readers/usage.rb +2 -65
- data/lib/worlddb/schema.rb +142 -43
- data/lib/worlddb/stats.rb +7 -4
- data/lib/worlddb/tree_reader.rb +97 -0
- data/lib/worlddb/version.rb +2 -2
- data/test/adm/test_fixture_matcher_adm2.rb +73 -0
- data/test/{test_fixture_matcher_adm3.rb → adm/test_fixture_matcher_adm3.rb} +6 -6
- data/test/adm/test_fixture_matcher_tree.rb +52 -0
- data/test/{test_read_adm.rb → adm/test_read_adm.rb} +13 -20
- data/test/adm/test_read_tree.rb +63 -0
- data/test/data/at-austria/2--n-niederoesterreich/counties.txt +6 -4
- data/test/data/at-austria/orte.txt +23 -0
- data/test/data/at-austria/setups/tree.txt +9 -0
- data/test/data/de-deutschland/3--by-bayern/4--oberfranken/counties.txt +14 -13
- data/test/data/de-deutschland/3--by-bayern/4--oberfranken/orte.txt +104 -0
- data/test/data/de-deutschland/3--by-bayern/4--oberfranken/orte_ii.txt +17 -0
- data/test/data/de-deutschland/3--by-bayern/{districts.txt → parts.txt} +1 -1
- data/test/data/de-deutschland/orte.txt +12 -0
- data/test/data/de-deutschland/setups/adm.txt +1 -1
- data/test/data/de-deutschland/setups/tree.txt +9 -0
- data/test/helper.rb +8 -1
- data/test/test_fixture_matchers.rb +9 -10
- data/test/test_fixture_matchers_ii.rb +20 -19
- data/test/test_model_city.rb +26 -9
- data/test/{test_model_comp.rb → test_model_compat.rb} +15 -13
- data/test/test_model_country.rb +1 -1
- data/test/test_model_state.rb +54 -0
- data/test/test_model_states_at.rb +111 -0
- data/test/test_model_states_de.rb +147 -0
- data/test/test_models.rb +10 -3
- data/test/test_parse_city.rb +70 -0
- data/test/test_parse_country.rb +56 -0
- data/test/test_parse_state.rb +46 -0
- data/test/test_state_tree_reader_at.rb +54 -0
- data/test/test_state_tree_reader_de.rb +71 -0
- data/test/test_tree_reader.rb +39 -0
- metadata +50 -22
- data/lib/worlddb/models/city_compat.rb +0 -27
- data/lib/worlddb/models/continent_compat.rb +0 -24
- data/lib/worlddb/models/country_compat.rb +0 -35
- data/lib/worlddb/models/lang_compat.rb +0 -23
- data/lib/worlddb/models/region_compat.rb +0 -26
- data/lib/worlddb/readers/region.rb +0 -79
- data/test/test_fixture_matcher_adm2.rb +0 -62
- data/test/test_model_region.rb +0 -50
@@ -0,0 +1,111 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
###
|
4
|
+
# to run use
|
5
|
+
# ruby -I ./lib -I ./test test/test_model_states_at.rb
|
6
|
+
|
7
|
+
|
8
|
+
require 'helper'
|
9
|
+
|
10
|
+
class TestModelStatesAt < MiniTest::Test
|
11
|
+
|
12
|
+
def setup
|
13
|
+
# delete all countries, states, cities in in-memory only db
|
14
|
+
WorldDb.delete!
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
def test_n # country > state > county > muni
|
19
|
+
|
20
|
+
at = Country.create!( key: 'at',
|
21
|
+
name: 'Austria',
|
22
|
+
code: 'AUT',
|
23
|
+
pop: 1,
|
24
|
+
area: 1 )
|
25
|
+
|
26
|
+
n = State.create!( key: 'n',
|
27
|
+
name: 'Niederösterreich',
|
28
|
+
country_id: at.id,
|
29
|
+
pop: 1,
|
30
|
+
area: 1 )
|
31
|
+
|
32
|
+
n2 = State.find_by_key!( 'n' )
|
33
|
+
assert_equal n.id, n2.id
|
34
|
+
|
35
|
+
assert_equal 'Niederösterreich', n.name
|
36
|
+
assert_equal 1, n.area
|
37
|
+
assert_equal at.id, n.country_id
|
38
|
+
assert_equal 1, n.level
|
39
|
+
assert_equal 'ADM1', n.place_kind
|
40
|
+
|
41
|
+
### test place
|
42
|
+
assert_equal 'Niederösterreich', n.place.name
|
43
|
+
|
44
|
+
## test assocs
|
45
|
+
assert_equal 'Austria', n.country.name
|
46
|
+
assert_equal 0, n.parts.count
|
47
|
+
assert_equal 0, n.counties.count
|
48
|
+
assert_equal 0, n.munis.count
|
49
|
+
assert_equal 0, n.cities.count
|
50
|
+
|
51
|
+
#############################
|
52
|
+
# County (Landkreis, Bezirk, etc.)
|
53
|
+
|
54
|
+
tu = County.create!( key: 'tu',
|
55
|
+
name: 'Tulln',
|
56
|
+
state_id: n.id,
|
57
|
+
pop: 1,
|
58
|
+
area: 1 )
|
59
|
+
|
60
|
+
tu2 = County.find_by_key!( 'tu' )
|
61
|
+
assert_equal tu.id, tu2.id
|
62
|
+
|
63
|
+
assert_equal 'Tulln', tu.name
|
64
|
+
assert_equal 1, tu.area
|
65
|
+
assert_equal n.id, tu.state_id
|
66
|
+
assert_equal 2, tu.level
|
67
|
+
assert_equal 'ADM2', tu.place_kind
|
68
|
+
|
69
|
+
### test place
|
70
|
+
assert_equal 'Tulln', tu.place.name
|
71
|
+
|
72
|
+
## test assocs
|
73
|
+
assert_equal 'Niederösterreich', tu.state.name
|
74
|
+
assert_equal 0, tu.munis.count
|
75
|
+
assert_equal 0, tu.cities.count
|
76
|
+
assert_equal 1, n.counties.count
|
77
|
+
assert_equal 'Tulln', n.counties.first.name
|
78
|
+
|
79
|
+
#############################
|
80
|
+
# Muni (Gemeinde - Markt, Stadt, etc.)
|
81
|
+
|
82
|
+
gr = Muni.create!( key: 'grafenwoerth',
|
83
|
+
name: 'Grafenwörth',
|
84
|
+
state_id: n.id,
|
85
|
+
county_id: tu.id,
|
86
|
+
pop: 1,
|
87
|
+
area: 1 )
|
88
|
+
|
89
|
+
gr2 = Muni.find_by_key!( 'grafenwoerth' )
|
90
|
+
assert_equal gr.id, gr2.id
|
91
|
+
|
92
|
+
assert_equal 'Grafenwörth', gr.name
|
93
|
+
assert_equal 1, gr.area
|
94
|
+
assert_equal n.id, gr.state_id
|
95
|
+
assert_equal tu.id, gr.county_id
|
96
|
+
assert_equal 3, gr.level
|
97
|
+
assert_equal 'ADM3', gr.place_kind
|
98
|
+
|
99
|
+
### test place
|
100
|
+
assert_equal 'Grafenwörth', gr.place.name
|
101
|
+
|
102
|
+
## test assocs
|
103
|
+
assert_equal 'Niederösterreich', gr.county.state.name
|
104
|
+
assert_equal 0, gr.cities.count
|
105
|
+
assert_equal 1, n.munis.count
|
106
|
+
assert_equal 1, tu.munis.count
|
107
|
+
assert_equal 'Grafenwörth', n.munis.first.name
|
108
|
+
assert_equal 'Grafenwörth', tu.munis.first.name
|
109
|
+
end
|
110
|
+
|
111
|
+
end # class TestModelStatesAt
|
@@ -0,0 +1,147 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
###
|
4
|
+
# to run use
|
5
|
+
# ruby -I ./lib -I ./test test/test_model_states_de.rb
|
6
|
+
|
7
|
+
|
8
|
+
require 'helper'
|
9
|
+
|
10
|
+
class TestModelStatesDe < MiniTest::Test
|
11
|
+
|
12
|
+
def setup
|
13
|
+
# delete all countries, states, cities in in-memory only db
|
14
|
+
WorldDb.delete!
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
def test_bayern # country > state > part > county > muni
|
19
|
+
|
20
|
+
de = Country.create!( key: 'de',
|
21
|
+
name: 'Deutschland',
|
22
|
+
code: 'DEU',
|
23
|
+
pop: 1,
|
24
|
+
area: 1 )
|
25
|
+
|
26
|
+
by = State.create!( key: 'by',
|
27
|
+
name: 'Bayern',
|
28
|
+
country_id: de.id,
|
29
|
+
pop: 1,
|
30
|
+
area: 1 )
|
31
|
+
|
32
|
+
by2 = State.find_by_key!( 'by' )
|
33
|
+
assert_equal by.id, by2.id
|
34
|
+
|
35
|
+
assert_equal 'Bayern', by.name
|
36
|
+
assert_equal 1, by.area
|
37
|
+
assert_equal de.id, by.country_id
|
38
|
+
assert_equal 1, by.level
|
39
|
+
assert_equal 'ADM1', by.place_kind
|
40
|
+
|
41
|
+
### test place
|
42
|
+
assert_equal 'Bayern', by.place.name
|
43
|
+
|
44
|
+
## test assocs
|
45
|
+
assert_equal 'Deutschland', by.country.name
|
46
|
+
assert_equal 0, by.parts.count
|
47
|
+
assert_equal 0, by.counties.count
|
48
|
+
assert_equal 0, by.munis.count
|
49
|
+
assert_equal 0, by.cities.count
|
50
|
+
|
51
|
+
############
|
52
|
+
# Part
|
53
|
+
|
54
|
+
ob = Part.create!( key: 'ob',
|
55
|
+
name: 'Oberbayern',
|
56
|
+
state_id: by.id,
|
57
|
+
pop: 1,
|
58
|
+
area: 1 )
|
59
|
+
|
60
|
+
ob2 = Part.find_by_key!( 'ob' )
|
61
|
+
assert_equal ob.id, ob2.id
|
62
|
+
|
63
|
+
assert_equal 'Oberbayern', ob.name
|
64
|
+
assert_equal 1, ob.area
|
65
|
+
assert_equal by.id, ob.state_id
|
66
|
+
assert_equal 2, ob.level
|
67
|
+
assert_equal 'ADM2', ob.place_kind
|
68
|
+
|
69
|
+
### test place
|
70
|
+
assert_equal 'Oberbayern', ob.place.name
|
71
|
+
|
72
|
+
## test assocs
|
73
|
+
assert_equal 'Bayern', ob.state.name
|
74
|
+
assert_equal 0, ob.counties.count
|
75
|
+
assert_equal 0, ob.cities.count
|
76
|
+
assert_equal 1, by.parts.count
|
77
|
+
assert_equal 'Oberbayern', by.parts.first.name
|
78
|
+
|
79
|
+
#############################
|
80
|
+
# County (Landkreis, Bezirk, etc.)
|
81
|
+
|
82
|
+
fs = County.create!( key: 'fs',
|
83
|
+
name: 'Freising',
|
84
|
+
state_id: by.id,
|
85
|
+
part_id: ob.id,
|
86
|
+
pop: 1,
|
87
|
+
area: 1,
|
88
|
+
level: 3 )
|
89
|
+
|
90
|
+
fs2 = County.find_by_key!( 'fs' )
|
91
|
+
assert_equal fs.id, fs2.id
|
92
|
+
|
93
|
+
assert_equal 'Freising', fs.name
|
94
|
+
assert_equal 1, fs.area
|
95
|
+
assert_equal by.id, fs.state_id
|
96
|
+
assert_equal ob.id, fs.part_id
|
97
|
+
assert_equal 3, fs.level
|
98
|
+
assert_equal 'ADM3', fs.place_kind
|
99
|
+
|
100
|
+
### test place
|
101
|
+
assert_equal 'Freising', fs.place.name
|
102
|
+
|
103
|
+
## test assocs
|
104
|
+
assert_equal 'Bayern', fs.state.name
|
105
|
+
assert_equal 'Oberbayern', fs.part.name
|
106
|
+
assert_equal 0, fs.munis.count
|
107
|
+
assert_equal 0, fs.cities.count
|
108
|
+
assert_equal 1, by.counties.count
|
109
|
+
assert_equal 1, ob.counties.count
|
110
|
+
assert_equal 'Freising', by.counties.first.name
|
111
|
+
assert_equal 'Freising', ob.counties.first.name
|
112
|
+
|
113
|
+
#############################
|
114
|
+
# Muni (Gemeinde - Markt, Stadt, etc.)
|
115
|
+
|
116
|
+
au = Muni.create!( key: 'auidhallertau',
|
117
|
+
name: 'Au i.d. Hallertau',
|
118
|
+
state_id: by.id,
|
119
|
+
county_id: fs.id,
|
120
|
+
pop: 1,
|
121
|
+
area: 1,
|
122
|
+
level: 4 )
|
123
|
+
|
124
|
+
au2 = Muni.find_by_key!( 'auidhallertau' )
|
125
|
+
assert_equal au.id, au2.id
|
126
|
+
|
127
|
+
assert_equal 'Au i.d. Hallertau', au.name
|
128
|
+
assert_equal 1, au.area
|
129
|
+
assert_equal by.id, au.state_id
|
130
|
+
assert_equal fs.id, au.county_id
|
131
|
+
assert_equal 4, au.level
|
132
|
+
assert_equal 'ADM4', au.place_kind
|
133
|
+
|
134
|
+
### test place
|
135
|
+
assert_equal 'Au i.d. Hallertau', au.place.name
|
136
|
+
|
137
|
+
## test assocs
|
138
|
+
assert_equal 'Bayern', au.county.state.name
|
139
|
+
assert_equal 'Oberbayern', au.county.part.name
|
140
|
+
assert_equal 0, au.cities.count
|
141
|
+
assert_equal 1, by.munis.count
|
142
|
+
assert_equal 1, fs.munis.count
|
143
|
+
assert_equal 'Au i.d. Hallertau', by.munis.first.name
|
144
|
+
assert_equal 'Au i.d. Hallertau', fs.munis.first.name
|
145
|
+
end
|
146
|
+
|
147
|
+
end # class TestModelStatesDe
|
data/test/test_models.rb
CHANGED
@@ -6,7 +6,7 @@ require 'helper'
|
|
6
6
|
class TestModels < MiniTest::Test
|
7
7
|
|
8
8
|
def setup
|
9
|
-
# delete all countries,
|
9
|
+
# delete all countries, states, cities in in-memory only db
|
10
10
|
WorldDb.delete!
|
11
11
|
end
|
12
12
|
|
@@ -15,8 +15,15 @@ class TestModels < MiniTest::Test
|
|
15
15
|
assert_equal 0, Place.count
|
16
16
|
assert_equal 0, Continent.count
|
17
17
|
assert_equal 0, Country.count
|
18
|
-
|
18
|
+
|
19
|
+
assert_equal 0, State.count
|
20
|
+
assert_equal 0, Part.count
|
21
|
+
assert_equal 0, County.count
|
22
|
+
assert_equal 0, Muni.count
|
23
|
+
|
24
|
+
assert_equal 0, Metro.count
|
19
25
|
assert_equal 0, City.count
|
26
|
+
assert_equal 0, District.count
|
20
27
|
|
21
28
|
assert_equal 0, Lang.count
|
22
29
|
assert_equal 0, Usage.count
|
@@ -27,7 +34,7 @@ class TestModels < MiniTest::Test
|
|
27
34
|
def test_place_assoc_counts
|
28
35
|
# assert_equal 0, Continent.new.place.count
|
29
36
|
# assert_equal 0, Country.new.place.count
|
30
|
-
# assert_equal 0,
|
37
|
+
# assert_equal 0, State.new.place.count
|
31
38
|
# assert_equal 0, City.new.place.count
|
32
39
|
end
|
33
40
|
|
@@ -0,0 +1,70 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
###
|
4
|
+
# to run use
|
5
|
+
# ruby -I ./lib -I ./test test/test_parse_city.rb
|
6
|
+
|
7
|
+
require 'helper'
|
8
|
+
|
9
|
+
class TestParseCity < MiniTest::Test
|
10
|
+
|
11
|
+
def setup
|
12
|
+
# delete all countries, states, cities in in-memory only db
|
13
|
+
WorldDb.delete!
|
14
|
+
end
|
15
|
+
|
16
|
+
|
17
|
+
def test_at
|
18
|
+
|
19
|
+
at = Country.parse( 'at',
|
20
|
+
'Austria',
|
21
|
+
'AUT',
|
22
|
+
'83_871 km²',
|
23
|
+
'8_414_638' )
|
24
|
+
|
25
|
+
w = State.parse( 'w',
|
26
|
+
'Wien',
|
27
|
+
country_id: at.id )
|
28
|
+
|
29
|
+
c = City.parse( 'wien',
|
30
|
+
'Wien',
|
31
|
+
'W',
|
32
|
+
'1_731_236',
|
33
|
+
'm:1_724_000',
|
34
|
+
country_id: at.id )
|
35
|
+
|
36
|
+
c2 = City.find_by!( key: 'wien' )
|
37
|
+
assert_equal c2.id, c.id
|
38
|
+
|
39
|
+
assert_equal 'Wien', c.name
|
40
|
+
assert_equal 1_731_236, c.pop
|
41
|
+
assert_equal w.id, c.state_id
|
42
|
+
assert_equal at.id, c.country_id
|
43
|
+
|
44
|
+
### test place
|
45
|
+
assert_equal 'Wien', c.place.name
|
46
|
+
|
47
|
+
## test assocs
|
48
|
+
assert_equal 'Wien', c.state.name
|
49
|
+
assert_equal 'Austria', c.state.country.name
|
50
|
+
assert_equal 'Austria', c.country.name
|
51
|
+
|
52
|
+
|
53
|
+
#####
|
54
|
+
# check (auto-)added metro record
|
55
|
+
|
56
|
+
m = Metro.find_by!( key: 'wien' )
|
57
|
+
assert_equal 'Wien', m.name
|
58
|
+
assert_equal 1_724_000, m.pop
|
59
|
+
assert_equal at.id, m.country_id
|
60
|
+
|
61
|
+
## test assocs
|
62
|
+
assert_equal 1, m.cities.count
|
63
|
+
assert_equal 'Wien', m.cities.first.name
|
64
|
+
assert_equal 'Austria', m.country.name
|
65
|
+
|
66
|
+
assert_equal 'Wien', c.metro.name
|
67
|
+
assert_equal m.id, c.metro.id
|
68
|
+
end
|
69
|
+
|
70
|
+
end # class TestParseCity
|
@@ -0,0 +1,56 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
###
|
4
|
+
# to run use
|
5
|
+
# ruby -I ./lib -I ./test test/test_parse_country.rb
|
6
|
+
|
7
|
+
|
8
|
+
require 'helper'
|
9
|
+
|
10
|
+
class TestParseCountry < MiniTest::Test
|
11
|
+
|
12
|
+
def setup
|
13
|
+
# delete all countries, states, cities in in-memory only db
|
14
|
+
WorldDb.delete!
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_to_path
|
18
|
+
eu = Continent.create!( key: 'eu', name: 'Europe' )
|
19
|
+
|
20
|
+
assert_equal 'europe', eu.slug
|
21
|
+
|
22
|
+
at = Country.parse( 'at',
|
23
|
+
'Austria',
|
24
|
+
'AUT',
|
25
|
+
'83_871 km²',
|
26
|
+
'8_414_638',
|
27
|
+
continent: eu )
|
28
|
+
|
29
|
+
assert_equal 'austria', at.slug
|
30
|
+
assert_equal 'europe/at-austria', at.to_path
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_at
|
34
|
+
|
35
|
+
c = Country.parse( 'at',
|
36
|
+
'Austria',
|
37
|
+
'AUT',
|
38
|
+
'83_871 km²',
|
39
|
+
'8_414_638',
|
40
|
+
'un|fifa|uefa|eu|euro|schengen|central_europe|western_europe' )
|
41
|
+
|
42
|
+
c2 = Country.find_by!( key: 'at' )
|
43
|
+
assert_equal c.id, c2.id
|
44
|
+
|
45
|
+
assert_equal 'Austria', c.name
|
46
|
+
assert_equal 8_414_638, c.pop
|
47
|
+
assert_equal 83_871, c.area
|
48
|
+
## todo: assert tag count; add supra:eu etc.
|
49
|
+
|
50
|
+
### test place
|
51
|
+
assert_equal 'Austria', c.place.name
|
52
|
+
end
|
53
|
+
|
54
|
+
|
55
|
+
end # class TestParseCountry
|
56
|
+
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
###
|
4
|
+
# to run use
|
5
|
+
# ruby -I ./lib -I ./test test/test_parse_state.rb
|
6
|
+
|
7
|
+
|
8
|
+
require 'helper'
|
9
|
+
|
10
|
+
class TestParseState < MiniTest::Test
|
11
|
+
|
12
|
+
def setup
|
13
|
+
# delete all countries, states, cities in in-memory only db
|
14
|
+
WorldDb.delete!
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_at
|
18
|
+
|
19
|
+
at = Country.parse( 'at',
|
20
|
+
'Austria',
|
21
|
+
'AUT',
|
22
|
+
'8_414_638 km²',
|
23
|
+
'83_871' )
|
24
|
+
|
25
|
+
w = State.parse( 'w',
|
26
|
+
'Wien',
|
27
|
+
'415 km²',
|
28
|
+
'eastern austria',
|
29
|
+
country_id: at.id )
|
30
|
+
|
31
|
+
w2 = State.find_by!( key: 'w' )
|
32
|
+
assert_equal w.id, w2.id
|
33
|
+
|
34
|
+
assert_equal 'Wien', w.name
|
35
|
+
assert_equal 415, w.area
|
36
|
+
assert_equal at.id, w.country_id
|
37
|
+
|
38
|
+
### test place
|
39
|
+
assert_equal 'Wien', w.place.name
|
40
|
+
|
41
|
+
## test assocs
|
42
|
+
assert_equal 'Austria', w.country.name
|
43
|
+
end
|
44
|
+
|
45
|
+
end # class TestParseState
|
46
|
+
|
@@ -0,0 +1,54 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
###
|
4
|
+
# to run use
|
5
|
+
# ruby -I ./lib -I ./test test/test_state_tree_reader_at.rb
|
6
|
+
|
7
|
+
|
8
|
+
require 'helper'
|
9
|
+
|
10
|
+
class TestStateTreeReaderAt < MiniTest::Test
|
11
|
+
|
12
|
+
def setup
|
13
|
+
# delete all countries, states, cities in in-memory only db
|
14
|
+
WorldDb.delete!
|
15
|
+
|
16
|
+
Country.create!( key: 'at',
|
17
|
+
name: 'Austria',
|
18
|
+
code: 'AUT',
|
19
|
+
pop: 0,
|
20
|
+
area: 0 )
|
21
|
+
|
22
|
+
reader = WorldDb::Reader.new( "#{WorldDb.root}/test/data/at-austria" )
|
23
|
+
reader.load_setup( 'setups/adm' )
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_orte
|
27
|
+
at = Country.find_by!( key: 'at' )
|
28
|
+
more_attribs = { country_id: at.id }
|
29
|
+
reader = WorldDb::StateTreeReader.from_file( "#{WorldDb.root}/test/data/at-austria/orte.txt",
|
30
|
+
more_attribs )
|
31
|
+
reader.read
|
32
|
+
|
33
|
+
n = State.find_by!( key: 'n' )
|
34
|
+
assert_equal 'Niederösterreich [Lower Austria]', n.name
|
35
|
+
assert_equal 25, n.counties.count
|
36
|
+
|
37
|
+
ks = County.find_by!( key: 'ks' )
|
38
|
+
assert_equal 'Krems an der Donau (Stadt)', ks.name
|
39
|
+
assert_equal 1, ks.munis.count
|
40
|
+
|
41
|
+
k = Muni.find_by!( key: 'kremsanderdonau' ) ## Statutarstadt (Gemeinde)
|
42
|
+
assert_equal 'Krems an der Donau', k.name
|
43
|
+
assert_equal 12, k.cities.count
|
44
|
+
assert_equal 'Krems an der Donau (Stadt)', k.county.name
|
45
|
+
|
46
|
+
gneixendorf = City.find_by!( key: 'gneixendorf' )
|
47
|
+
assert_equal 'Gneixendorf', gneixendorf.name
|
48
|
+
assert_equal 'Krems an der Donau', gneixendorf.muni.name
|
49
|
+
assert_equal 'Krems an der Donau (Stadt)', gneixendorf.muni.county.name
|
50
|
+
assert_equal 'Niederösterreich [Lower Austria]', gneixendorf.muni.county.state.name
|
51
|
+
end
|
52
|
+
|
53
|
+
end # class TestStateTreeReaderAt
|
54
|
+
|
@@ -0,0 +1,71 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
###
|
4
|
+
# to run use
|
5
|
+
# ruby -I ./lib -I ./test test/test_state_tree_reader_de.rb
|
6
|
+
|
7
|
+
|
8
|
+
require 'helper'
|
9
|
+
|
10
|
+
class TestStateTreeReaderDe < MiniTest::Test
|
11
|
+
|
12
|
+
def setup
|
13
|
+
# delete all countries, states, cities in in-memory only db
|
14
|
+
WorldDb.delete!
|
15
|
+
|
16
|
+
Country.create!( key: 'de',
|
17
|
+
name: 'Germany',
|
18
|
+
code: 'GER',
|
19
|
+
pop: 0,
|
20
|
+
area: 0 )
|
21
|
+
|
22
|
+
reader = WorldDb::Reader.new( "#{WorldDb.root}/test/data/de-deutschland" )
|
23
|
+
reader.load_setup( 'setups/adm' )
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_oberfranken_ii ## small (short) version
|
27
|
+
de = Country.find_by!( key: 'de' )
|
28
|
+
more_attribs = { country_id: de.id }
|
29
|
+
reader = WorldDb::StateTreeReader.from_file( "#{WorldDb.root}/test/data/de-deutschland/3--by-bayern/4--oberfranken/orte_ii.txt",
|
30
|
+
more_attribs )
|
31
|
+
reader.read
|
32
|
+
|
33
|
+
ofr = Part.find_by!( key: 'ofr' )
|
34
|
+
assert_equal 'Oberfranken', ofr.name
|
35
|
+
assert_equal 13, ofr.counties.count
|
36
|
+
|
37
|
+
ba = County.find_by!( key: 'ba' )
|
38
|
+
assert_equal 'Bamberg (Stadt)', ba.name
|
39
|
+
assert_equal 1, ba.munis.count
|
40
|
+
|
41
|
+
baland = County.find_by!( key: 'baland' )
|
42
|
+
assert_equal 'Bamberg (Land)', baland.name
|
43
|
+
assert_equal 2, baland.munis.count
|
44
|
+
|
45
|
+
hallstadt = Muni.find_by!( key: 'hallstadt' )
|
46
|
+
assert_equal 'Hallstadt', hallstadt.name
|
47
|
+
assert_equal 2, hallstadt.cities.count
|
48
|
+
assert_equal 'Bamberg (Land)', hallstadt.county.name
|
49
|
+
|
50
|
+
doerfleins = City.find_by!( key: 'doerfleins' )
|
51
|
+
assert_equal 'Dörfleins', doerfleins.name
|
52
|
+
assert_equal 'Hallstadt', doerfleins.muni.name
|
53
|
+
assert_equal 'Bamberg (Land)', doerfleins.muni.county.name
|
54
|
+
assert_equal 'Oberfranken', doerfleins.muni.county.part.name
|
55
|
+
end
|
56
|
+
|
57
|
+
|
58
|
+
def test_oberfranken
|
59
|
+
de = Country.find_by!( key: 'de' )
|
60
|
+
more_attribs = { country_id: de.id }
|
61
|
+
reader = WorldDb::StateTreeReader.from_file( "#{WorldDb.root}/test/data/de-deutschland/3--by-bayern/4--oberfranken/orte.txt",
|
62
|
+
more_attribs )
|
63
|
+
reader.read
|
64
|
+
|
65
|
+
ba = County.find_by!( key: 'ba' )
|
66
|
+
assert_equal 'Bamberg (Stadt)', ba.name
|
67
|
+
assert_equal 1, ba.munis.count
|
68
|
+
end
|
69
|
+
|
70
|
+
end # class TestStateTreeReaderDe
|
71
|
+
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
###
|
4
|
+
# to run use
|
5
|
+
# ruby -I ./lib -I ./test test/test_tree_reader.rb
|
6
|
+
|
7
|
+
|
8
|
+
require 'helper'
|
9
|
+
|
10
|
+
class TestTreeReader < MiniTest::Test
|
11
|
+
|
12
|
+
def setup
|
13
|
+
# delete all countries, states, cities in in-memory only db
|
14
|
+
WorldDb.delete!
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
def test_oberfranken
|
19
|
+
reader = TreeReader.from_file( "#{WorldDb.root}/test/data/de-deutschland/3--by-bayern/4--oberfranken/orte.txt" )
|
20
|
+
|
21
|
+
reader.each_line do |_|
|
22
|
+
## do nothing for now
|
23
|
+
end
|
24
|
+
|
25
|
+
assert true ## assume everything ok if we get here
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_de
|
29
|
+
reader = TreeReader.from_file( "#{WorldDb.root}/test/data/de-deutschland/orte.txt" )
|
30
|
+
|
31
|
+
reader.each_line do |_|
|
32
|
+
## do nothing for now
|
33
|
+
end
|
34
|
+
|
35
|
+
assert true ## assume everything ok if we get here
|
36
|
+
end
|
37
|
+
|
38
|
+
end # class TestTreeReader
|
39
|
+
|