class ObjectTest(TestCase): def setUp(self): db = AllegroBackend("http://localhost:10035/repositories/main") c = Connection(db) self.factory = Factory(c) # 2.2.1. Получение объекта по идентификатору; def test_get_object(self): emma = self.factory.get_object(local.Emma) user = self.factory.get_class(local.User) self.assertEqual(emma.uri, local.Emma) self.assertTrue(hasattr(emma, local.knows)) self.assertTrue(isinstance(emma, user)) # 2.2.2. Получение всех объектов данного класса; def test_get_all(self): user = self.factory.get_class(local.User) emma = self.factory.get_object(local.Emma) elena = self.factory.get_object(local.Elena) sarah = self.factory.get_object(local.Sarah) self.assertItemsEqual([x.uri for x in user.get_objects()], [x.uri for x in [emma, sarah, elena]]) # 2.2.3. Получение всех объектов данного класса, обладающих заданным значением некоторого свойства. def get_filteres_objects(self): kwargs = {local.knows: local.Elena} user = self.factory.get_class(local.User) emma = self.factory.get_object(local.Emma) sarah = self.factory.get_object(local.Sarah) self.assertItemsEqual(user.filter(kwargs), [emma, sarah]) self.assertItemsEqual(user.filter(**kwargs), [emma, sarah])
class PropertyTest(TestCase): def setUp(self): db = AllegroBackend("http://localhost:10035/repositories/main") c = Connection(db) self.factory = Factory(c) # 2.3.1. Получение самих свойств; def test_get_property(self): emma = self.factory.get_object(local.Emma) sarah = self.factory.get_object(local.Sarah) elena = self.factory.get_object(local.Elena) self.assertItemsEqual(getattr(emma, local.knows), [sarah, elena]) self.assertRaises(AttributeError, getattr, emma, local.knowsMe) harry = self.factory.get_object(local.HarryPotter) self.assertEqual(getattr(harry, local.subSectionOf), None) # 2.3.2. Корректная типизация свойств; def test_correct_types(self): emma = self.factory.get_object(local.Emma) user = self.factory.get_class(local.User) self.assertItemsEqual([type(x) for x in getattr(emma, local.knows)], [user, user]) harry = self.factory.get_object(local.HarryPotter) self.assertItemsEqual(getattr(harry, RDFS.label), (Literal(u"Гарри Поттер", lang='ru'), Literal("Harry Potter", lang='en'))) # 2.3.3. Получение области значений и определения для свойства (объект/литерал); def test_range(self): user = self.factory.get_class(local.User) self.assertEqual(getattr(user, local.knows), user) # 2.3.4. Корректная поддержка множественных значений свойств. def test_list_property(self): emma = self.factory.get_object(local.Emma) sarah = self.factory.get_object(local.Sarah) elena = self.factory.get_object(local.Elena) self.assertItemsEqual(getattr(emma, local.knows), [sarah, elena])