def test_didl_comparisons(self): didl_object_1 = data_structures.DidlObject( title='a_title', parent_id='pid', item_id='iid', creator='a_creator') didl_object_2 = data_structures.DidlObject( title='a_title', parent_id='pid', item_id='iid', creator='a_creator') # should be not the same, but equal! assert didl_object_1 is not didl_object_2 assert didl_object_1 == didl_object_2 didl_object_3 = data_structures.DidlObject( title='a_title', parent_id='pid', item_id='iid', creator='a__different_creator') assert didl_object_3 != didl_object_1
def test_didl_resource_eq(self): res = data_structures.DidlResource("a%20uri", "a:protocol:info:xx") assert res != data_structures.DidlObject( title="a_title", parent_id="pid", item_id="iid" ) assert res is not None assert res == res
def test_didl_object_to_dict_resources_remove_nones(self): resources_list = [ data_structures.DidlResource("a%20uri", "a:protocol:info:xx") ] didl_object = data_structures.DidlObject( title="a_title", parent_id="pid", item_id="iid", creator="a_creator", resources=resources_list, ) the_dict = { "title": "a_title", "parent_id": "pid", "item_id": "iid", "creator": "a_creator", "restricted": True, "desc": "RINCON_AssociatedZPUDN", "resources": [ resource.to_dict(remove_nones=True) for resource in resources_list ], } assert didl_object.to_dict(remove_nones=True) == the_dict
def test_create_didl_object_with_disallowed_params(self): with pytest.raises(ValueError) as excinfo: didl_object = data_structures.DidlObject(title="a_title", parent_id="pid", item_id="iid", bad_args="other") assert "not allowed" in str(excinfo.value)
def test_didl_comparisons(self): didl_object_1 = data_structures.DidlObject( title="a_title", parent_id="pid", item_id="iid", creator="a_creator" ) didl_object_2 = data_structures.DidlObject( title="a_title", parent_id="pid", item_id="iid", creator="a_creator" ) # should be not the same, but equal! assert didl_object_1 is not didl_object_2 assert didl_object_1 == didl_object_2 didl_object_3 = data_structures.DidlObject( title="a_title", parent_id="pid", item_id="iid", creator="a__different_creator", ) assert didl_object_3 != didl_object_1
def test_create_didl_object_with_good_params(self): didl_object = data_structures.DidlObject( title='a_title', parent_id='pid', item_id='iid', creator='a_creator', desc="dummy") assert didl_object is not None assert didl_object.title == 'a_title' assert didl_object.parent_id == 'pid' assert didl_object.item_id == 'iid' assert didl_object.creator == 'a_creator' assert didl_object.resources == [] assert didl_object.desc == "dummy"
def test_create_didl_object_with_good_params(self): didl_object = data_structures.DidlObject( title="a_title", parent_id="pid", item_id="iid", creator="a_creator", desc="dummy", ) assert didl_object is not None assert didl_object.title == "a_title" assert didl_object.parent_id == "pid" assert didl_object.item_id == "iid" assert didl_object.creator == "a_creator" assert didl_object.resources == [] assert didl_object.desc == "dummy"
def test_didl_object_to_element(self): didl_object = data_structures.DidlObject( title='a_title', parent_id='pid', item_id='iid', creator='a_creator') # we seem to have to go through this to get ElementTree to deal # with namespaces properly! elt = XML.fromstring(XML.tostring(didl_object.to_element(True))) elt2 = XML.fromstring( '<dummy xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" ' + 'xmlns:dc="http://purl.org/dc/elements/1.1/" ' + 'xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/">' + '<item id="iid" parentID="pid" restricted="true">' + '<dc:title>a_title</dc:title>' + '<dc:creator>a_creator</dc:creator>' + '<upnp:class>object</upnp:class><desc id="cdudn" ' + 'nameSpace="urn:schemas-rinconnetworks-com:metadata-1-0/">' + 'RINCON_AssociatedZPUDN</desc></item></dummy>')[0] assert_xml_equal(elt2, elt)
def test_didl_object_to_dict(self): didl_object = data_structures.DidlObject( title='a_title', parent_id='pid', item_id='iid', creator='a_creator') the_dict = { 'title': 'a_title', 'parent_id': 'pid', 'item_id': 'iid', 'creator': 'a_creator', 'restricted': True, 'desc': 'RINCON_AssociatedZPUDN' } assert didl_object.to_dict() == the_dict # adding in an attibute not in _translation should make no difference didl_object.other = 'other' assert didl_object.to_dict() == the_dict # but changing on the other should didl_object.creator = 'another' assert didl_object.to_dict() != the_dict
def test_didl_object_to_dict_resources(self): resources_list = [data_structures.DidlResource('a%20uri', 'a:protocol:info:xx')] didl_object = data_structures.DidlObject(title='a_title', parent_id='pid', item_id='iid', creator='a_creator', resources=resources_list) the_dict = { 'title': 'a_title', 'parent_id': 'pid', 'item_id': 'iid', 'creator': 'a_creator', 'restricted': True, 'desc': 'RINCON_AssociatedZPUDN', 'resources': [resource.to_dict() for resource in resources_list] } assert didl_object.to_dict() == the_dict
def test_didl_object_to_dict(self): didl_object = data_structures.DidlObject( title="a_title", parent_id="pid", item_id="iid", creator="a_creator" ) the_dict = { "title": "a_title", "parent_id": "pid", "item_id": "iid", "creator": "a_creator", "restricted": True, "desc": "RINCON_AssociatedZPUDN", } assert didl_object.to_dict() == the_dict # adding in an attibute not in _translation should make no difference didl_object.other = "other" assert didl_object.to_dict() == the_dict # but changing on the other should didl_object.creator = "another" assert didl_object.to_dict() != the_dict
def test_didl_object_from_dict_resources(self): resources_list = [data_structures.DidlResource("a%20uri", "a:protocol:info:xx")] didl_object = data_structures.DidlObject( title="a_title", parent_id="pid", item_id="iid", creator="a_creator", desc="dummy", resources=resources_list, ) the_dict = { "title": "a_title", "parent_id": "pid", "item_id": "iid", "creator": "a_creator", "restricted": True, "desc": "dummy", "resources": [resource.to_dict() for resource in resources_list], } assert data_structures.DidlObject.from_dict(the_dict) == didl_object
def test_didl_object_from_dict_resources_remove_nones(self): resources_list = [data_structures.DidlResource('a%20uri', 'a:protocol:info:xx')] didl_object = data_structures.DidlObject(title='a_title', parent_id='pid', item_id='iid', creator='a_creator', desc='dummy', resources=resources_list) the_dict = { 'title': 'a_title', 'parent_id': 'pid', 'item_id': 'iid', 'creator': 'a_creator', 'restricted': True, 'desc': 'dummy', 'resources': [resource.to_dict(remove_nones=True) for resource in resources_list] } assert data_structures.DidlObject.from_dict(the_dict) == didl_object
def test_didl_object_from_dict(self): didl_object = data_structures.DidlObject( title="a_title", parent_id="pid", item_id="iid", creator="a_creator", desc="dummy", ) the_dict = { "title": "a_title", "parent_id": "pid", "item_id": "iid", "creator": "a_creator", "restricted": True, "desc": "dummy", } assert data_structures.DidlObject.from_dict(the_dict) == didl_object # adding in an attibute not in _translation should make no difference the_dict["creator"] = "another_creator" assert data_structures.DidlObject.from_dict(the_dict) != didl_object # round trip assert data_structures.DidlObject.from_dict(the_dict).to_dict() == the_dict
def test_didl_object_from_dict(self): didl_object = data_structures.DidlObject( title='a_title', parent_id='pid', item_id='iid', creator='a_creator', desc='dummy') the_dict = { 'title': 'a_title', 'parent_id': 'pid', 'item_id': 'iid', 'creator': 'a_creator', 'restricted': True, 'desc': 'dummy' } assert data_structures.DidlObject.from_dict(the_dict) == didl_object # adding in an attibute not in _translation should make no difference the_dict['creator'] = 'another_creator' assert data_structures.DidlObject.from_dict(the_dict) != didl_object # round trip assert data_structures.DidlObject.from_dict(the_dict).to_dict() == \ the_dict
def test_didl_resource_eq(self): res = data_structures.DidlResource('a%20uri', 'a:protocol:info:xx') assert res != data_structures.DidlObject( title='a_title', parent_id='pid', item_id='iid') assert res is not None assert res == res
def test_create_didl_object_with_disallowed_params(self): with pytest.raises(ValueError) as excinfo: didl_object = data_structures.DidlObject( title='a_title', parent_id='pid', item_id='iid', bad_args='other') assert 'not allowed' in str(excinfo.value)
def test_create_didl_object_with_no_params(self): with pytest.raises(TypeError): didl_object = data_structures.DidlObject()