Coverage for gws-app/gws/lib/xmlx/_test/namespace_test.py: 100%
97 statements
« prev ^ index » next coverage.py v7.8.0, created at 2025-04-17 01:37 +0200
« prev ^ index » next coverage.py v7.8.0, created at 2025-04-17 01:37 +0200
1"""Tests for the namespace module"""
3import gws
4import gws.test.util as u
6import gws.lib.xmlx as xmlx
9def test_find_by_uri():
10 uri = 'http://www.isotc211.org/2005/gco'
11 assert xmlx.namespace.find_by_uri(uri).__dict__ == {'uid': 'gco',
12 'xmlns': 'gco',
13 'uri': 'http://www.isotc211.org/2005/gco',
14 'schemaLocation': 'http://schemas.opengis.net/iso/19139/20070417/gco/gco.xsd',
15 'version': ''}
18def test_find_by_uri_versioned():
19 uri = 'http://www.isotc211.org/2005/gco'
20 assert xmlx.namespace.find_by_uri(uri).__dict__ == {'uid': 'gco',
21 'xmlns': 'gco',
22 'uri': 'http://www.isotc211.org/2005/gco',
23 'schemaLocation': 'http://schemas.opengis.net/iso/19139/20070417/gco/gco.xsd',
24 'version': ''}
27def test_find_by_uri_versioned2():
28 uri = 'http://www.isotc211.org/2005/gco/9999'
29 assert xmlx.namespace.find_by_uri(uri).__dict__ == {'uid': 'gco',
30 'xmlns': 'gco',
31 'uri': 'http://www.isotc211.org/2005/gco',
32 'schemaLocation': 'http://schemas.opengis.net/iso/19139/20070417/gco/gco.xsd',
33 'version': ''}
36def test_find_by_xmlns():
37 xmlns = 'gco'
38 assert xmlx.namespace.find_by_xmlns(xmlns).__dict__ == {'uid': 'gco',
39 'xmlns': 'gco',
40 'uri': 'http://www.isotc211.org/2005/gco',
41 'schemaLocation': 'http://schemas.opengis.net/iso/19139/20070417/gco/gco.xsd',
42 'version': ''}
45def test_get_uid():
46 assert xmlx.namespace.get('csw').__dict__ == {'uid': 'csw',
47 'xmlns': 'csw',
48 'uri': 'http://www.opengis.net/cat/csw',
49 'schemaLocation': 'http://schemas.opengis.net/csw/2.0.2/csw.xsd',
50 'version': '2.0.2'}
53def test_get_xmlns():
54 assert xmlx.namespace.get('gco').__dict__ == {'schemaLocation': 'http://schemas.opengis.net/iso/19139/20070417/gco/gco.xsd',
55 'uid': 'gco',
56 'uri': 'http://www.isotc211.org/2005/gco',
57 'version': '',
58 'xmlns': 'gco'}
61def test_get_uri():
62 assert xmlx.namespace.get('http://www.isotc211.org/2005/srv').__dict__ == {
63 'schemaLocation': 'http://schemas.opengis.net/iso/19139/20070417/srv/1.0/srv.xsd',
64 'uid': 'srv',
65 'uri': 'http://www.isotc211.org/2005/srv',
66 'version': '',
67 'xmlns': 'srv'}
70def test_register():
71 ns = gws.XmlNamespace(uid='foo', xmlns='bar', uri='http://www.foobar.de')
72 xmlx.namespace.register(ns)
73 assert ns.uid in xmlx.namespace._INDEX.uid
74 assert ns.xmlns in xmlx.namespace._INDEX.xmlns
75 assert ns.uri in xmlx.namespace._INDEX.uri
78def test_split_name_empty():
79 name = ''
80 assert xmlx.namespace.split_name(name) == ('', '', '')
83def test_split_name():
84 name = '{http://example.com/namespace}element'
85 assert xmlx.namespace.split_name(name) == ('', 'http://example.com/namespace', 'element')
88def test_split_name_colon():
89 name = 'somens:tag'
90 assert xmlx.namespace.split_name(name) == ('somens', '', 'tag')
93def test_split_name_else():
94 name = 'name'
95 assert xmlx.namespace.split_name(name) == ('', '', 'name')
98def test_parse_name_xmlns():
99 ns = 'gco:tag'
100 assert xmlx.namespace.parse_name(ns) == (xmlx.namespace.get('gco'), 'tag')
103def test_parse_name_uri():
104 uri = '{http://www.isotc211.org/2005/gco}tag'
105 assert xmlx.namespace.parse_name(uri) == (xmlx.namespace.get('http://www.isotc211.org/2005/gco'), 'tag')
108def test_parse_name_else():
109 name = 'foo'
110 assert xmlx.namespace.parse_name(name) == (None, 'foo')
113# cant deal with clark notation
114def test_qualify_name():
115 name = 'gco:foo'
116 ns = xmlx.namespace.find_by_xmlns('soap')
117 assert xmlx.namespace.qualify_name(name, ns, replace=False) == 'gco:foo'
120def test_qualify_name_replace():
121 name = 'gco:foo'
122 ns = xmlx.namespace.find_by_xmlns('soap')
123 assert xmlx.namespace.qualify_name(name, ns, replace=True) == 'soap:foo'
126def test_qualify_name_else():
127 name = 'foo'
128 ns = None
129 assert xmlx.namespace.qualify_name(name, ns) == 'foo'
132def test_unqualify_name():
133 assert xmlx.namespace.unqualify_name('name') == 'name'
136def test_unqualify_default_uri():
137 name = '{http://www.isotc211.org/2005/gco}tag'
138 d_ns = xmlx.namespace.find_by_uri('http://www.isotc211.org/2005/gco')
139 assert xmlx.namespace.unqualify_default(name, d_ns) == 'tag'
142def test_unqualify_default_xmlx():
143 name = 'gco:tag'
144 d_ns = xmlx.namespace.find_by_xmlns('gco')
145 assert xmlx.namespace.unqualify_default(name, d_ns) == 'tag'
148def test_unqualify_default_else():
149 name = 'gco:tag'
150 d_ns = xmlx.namespace.find_by_xmlns('soap')
151 assert xmlx.namespace.unqualify_default(name, d_ns) == 'gco:tag'
154def test_clarkify_name():
155 name = 'gco:tag'
156 assert xmlx.namespace.clarkify_name(name) == '{http://www.isotc211.org/2005/gco}tag'
159def test_clarkify_name_else():
160 name = 'tag'
161 assert xmlx.namespace.clarkify_name(name) == 'tag'
164def test_declarations_empty():
165 assert xmlx.namespace.declarations() == {}
168def test_declarations_default():
169 d_ns = xmlx.namespace.find_by_xmlns('soap')
170 assert xmlx.namespace.declarations(d_ns) == {'xmlns': 'http://www.w3.org/2003/05/soap-envelope'}
173def test_declarations_element():
174 d_ns = xmlx.namespace.find_by_xmlns('soap')
175 xml_str = '''
176 <root
177 xmlns:gco="http://www.isotc211.org/2005/gco"
178 >
179 <gco:a test="gml1"/>
180 <a test="just"/>
181 <a test="another"/>
182 <gco:a test="gml2"/>
183 </root>
184 '''
185 ixmlelement = xmlx.parser.from_string(xml_str)
186 assert xmlx.namespace.declarations(d_ns, ixmlelement) == {'xmlns': 'http://www.w3.org/2003/05/soap-envelope',
187 'xmlns:gco': 'http://www.isotc211.org/2005/gco',}
190def test_declarations_extra():
191 d_ns = xmlx.namespace.find_by_xmlns('soap')
192 extra = [xmlx.namespace.find_by_xmlns('gco')]
193 assert xmlx.namespace.declarations(d_ns,extra_ns=extra) == {'xmlns': 'http://www.w3.org/2003/05/soap-envelope',
194 'xmlns:gco': 'http://www.isotc211.org/2005/gco',}
197def test_declarations_schema():
198 d_ns = xmlx.namespace.find_by_xmlns('soap')
199 assert xmlx.namespace.declarations(d_ns, with_schema_locations=True) == { 'xmlns': 'http://www.w3.org/2003/05/soap-envelope',
200 'xmlns:xsi': 'http://www.w3.org/2001/XMLSchema-instance',
201 'xsi:schemaLocation': 'http://www.w3.org/2003/05/soap-envelope http://https://www.w3.org/2003/05/soap-envelope/',}