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

1"""Tests for the namespace module""" 

2 

3import gws 

4import gws.test.util as u 

5 

6import gws.lib.xmlx as xmlx 

7 

8 

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': ''} 

16 

17 

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': ''} 

25 

26 

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': ''} 

34 

35 

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': ''} 

43 

44 

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'} 

51 

52 

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'} 

59 

60 

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'} 

68 

69 

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 

76 

77 

78def test_split_name_empty(): 

79 name = '' 

80 assert xmlx.namespace.split_name(name) == ('', '', '') 

81 

82 

83def test_split_name(): 

84 name = '{http://example.com/namespace}element' 

85 assert xmlx.namespace.split_name(name) == ('', 'http://example.com/namespace', 'element') 

86 

87 

88def test_split_name_colon(): 

89 name = 'somens:tag' 

90 assert xmlx.namespace.split_name(name) == ('somens', '', 'tag') 

91 

92 

93def test_split_name_else(): 

94 name = 'name' 

95 assert xmlx.namespace.split_name(name) == ('', '', 'name') 

96 

97 

98def test_parse_name_xmlns(): 

99 ns = 'gco:tag' 

100 assert xmlx.namespace.parse_name(ns) == (xmlx.namespace.get('gco'), 'tag') 

101 

102 

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') 

106 

107 

108def test_parse_name_else(): 

109 name = 'foo' 

110 assert xmlx.namespace.parse_name(name) == (None, 'foo') 

111 

112 

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' 

118 

119 

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' 

124 

125 

126def test_qualify_name_else(): 

127 name = 'foo' 

128 ns = None 

129 assert xmlx.namespace.qualify_name(name, ns) == 'foo' 

130 

131 

132def test_unqualify_name(): 

133 assert xmlx.namespace.unqualify_name('name') == 'name' 

134 

135 

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' 

140 

141 

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' 

146 

147 

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' 

152 

153 

154def test_clarkify_name(): 

155 name = 'gco:tag' 

156 assert xmlx.namespace.clarkify_name(name) == '{http://www.isotc211.org/2005/gco}tag' 

157 

158 

159def test_clarkify_name_else(): 

160 name = 'tag' 

161 assert xmlx.namespace.clarkify_name(name) == 'tag' 

162 

163 

164def test_declarations_empty(): 

165 assert xmlx.namespace.declarations() == {} 

166 

167 

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'} 

171 

172 

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',} 

188 

189 

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',} 

195 

196 

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/',}