|
23 | 23 | from .unitutil import class_mock, initializer_mock, method_mock |
24 | 24 |
|
25 | 25 |
|
| 26 | +@pytest.fixture |
| 27 | +def oxml_fromstring(request): |
| 28 | + _patch = patch('opc.pkgreader.oxml_fromstring') |
| 29 | + request.addfinalizer(_patch.stop) |
| 30 | + return _patch.start() |
| 31 | + |
| 32 | + |
26 | 33 | class DescribePackageReader(object): |
27 | 34 |
|
28 | 35 | @pytest.fixture |
@@ -181,6 +188,49 @@ def it_can_retrieve_srels_for_a_source_uri( |
181 | 188 | assert retval == srels |
182 | 189 |
|
183 | 190 |
|
| 191 | +class Describe_ContentTypeMap(object): |
| 192 | + |
| 193 | + def it_can_construct_from_types_xml(self, oxml_fromstring): |
| 194 | + # test data -------------------- |
| 195 | + content_types = ( |
| 196 | + 'app/vnd.type1', 'app/vnd.type2', 'app/vnd.type3', |
| 197 | + 'app/vnd.type4', |
| 198 | + ) |
| 199 | + content_types_xml = '<DontCare/>' |
| 200 | + extensions = ('rels', 'xml') |
| 201 | + exts = tuple(['.%s' % extension for extension in extensions]) |
| 202 | + partnames = ('/part/name1.xml', '/part/name2.xml') |
| 203 | + # mockery ---------------------- |
| 204 | + overrides = ( |
| 205 | + Mock(name='override_elm_1', partname=partnames[0], |
| 206 | + content_type=content_types[0]), |
| 207 | + Mock(name='override_elm_2', partname=partnames[1], |
| 208 | + content_type=content_types[1]), |
| 209 | + ) |
| 210 | + defaults = ( |
| 211 | + Mock(name='default_elm_1', extension=extensions[0], |
| 212 | + content_type=content_types[2]), |
| 213 | + Mock(name='default_elm_2', extension=extensions[1], |
| 214 | + content_type=content_types[3]), |
| 215 | + ) |
| 216 | + types_elm = Mock( |
| 217 | + name='types_elm', overrides=overrides, defaults=defaults |
| 218 | + ) |
| 219 | + oxml_fromstring.return_value = types_elm |
| 220 | + # exercise --------------------- |
| 221 | + ct_map = _ContentTypeMap.from_xml(content_types_xml) |
| 222 | + # verify ----------------------- |
| 223 | + expected_overrides = { |
| 224 | + partnames[0]: content_types[0], partnames[1]: content_types[1] |
| 225 | + } |
| 226 | + expected_defaults = { |
| 227 | + exts[0]: content_types[2], exts[1]: content_types[3] |
| 228 | + } |
| 229 | + oxml_fromstring.assert_called_once_with(content_types_xml) |
| 230 | + assert ct_map._overrides == expected_overrides |
| 231 | + assert ct_map._defaults == expected_defaults |
| 232 | + |
| 233 | + |
184 | 234 | class Describe_SerializedRelationship(object): |
185 | 235 |
|
186 | 236 | def it_remembers_construction_values(self): |
|
0 commit comments