def test_clsf_sqla(self): from aiida.orm import Group, User, Computer, Node, Data from aiida.orm import ProcessNode from aiida.backends.sqlalchemy.models.node import DbNode from aiida.backends.sqlalchemy.models.group import DbGroup from aiida.backends.sqlalchemy.models.user import DbUser from aiida.backends.sqlalchemy.models.computer import DbComputer from aiida.orm.querybuilder import QueryBuilder qb = QueryBuilder() for AiidaCls, ORMCls in zip( (Group, User, Computer, Node, Data, ProcessNode), (DbGroup, DbUser, DbComputer, DbNode, DbNode, DbNode)): cls, classifiers = qb._get_ormclass(AiidaCls, None) self.assertEqual(cls, ORMCls)
def test_clsf_sqla(self): """Test SQLA classifiers""" from aiida.orm import Group, User, Computer, Node, Data from aiida.orm import ProcessNode from aiida.backends.sqlalchemy.models.node import DbNode from aiida.backends.sqlalchemy.models.group import DbGroup from aiida.backends.sqlalchemy.models.user import DbUser from aiida.backends.sqlalchemy.models.computer import DbComputer from aiida.orm.querybuilder import QueryBuilder q_b = QueryBuilder() for aiida_cls, orm_cls in zip( (Group, User, Computer, Node, Data, ProcessNode), (DbGroup, DbUser, DbComputer, DbNode, DbNode, DbNode)): cls, _ = q_b._get_ormclass(aiida_cls, None) # pylint: disable=protected-access self.assertEqual(cls, orm_cls)
def test_clsf_sqla(self): from aiida.orm import Group, User, Computer, Node, Data, Calculation from aiida.backends.sqlalchemy.models.node import DbNode from aiida.backends.sqlalchemy.models.group import DbGroup from aiida.backends.sqlalchemy.models.user import DbUser from aiida.backends.sqlalchemy.models.computer import DbComputer from aiida.orm.querybuilder import QueryBuilder qb = QueryBuilder() for AiidaCls, ORMCls, typestr in zip( (Group, User, Computer, Node, Data, Calculation), (DbGroup, DbUser, DbComputer, DbNode, DbNode, DbNode), (None, None, None, Node._query_type_string, Data._query_type_string, Calculation._query_type_string)): cls, clstype, query_type_string = qb._get_ormclass(AiidaCls, None) self.assertEqual(cls, ORMCls) self.assertEqual(query_type_string, typestr)
def test_querybuilder_classifications(self): """ This tests the classifications of the QueryBuilder u. the django backend. """ from aiida.backends.querybuild.dummy_model import ( DbNode, DbUser, DbComputer, DbGroup, ) from aiida.orm.querybuilder import QueryBuilder from aiida.orm.utils import (DataFactory, CalculationFactory) from aiida.orm.data.structure import StructureData from aiida.orm.implementation.django.node import Node from aiida.orm import Group, User, Node, Computer, Data, Calculation from aiida.common.exceptions import InputValidationError qb = QueryBuilder() with self.assertRaises(InputValidationError): qb._get_ormclass(None, 'data') with self.assertRaises(InputValidationError): qb._get_ormclass(None, 'data.Data') with self.assertRaises(InputValidationError): qb._get_ormclass(None, '.') for cls, clstype, query_type_string in ( qb._get_ormclass(StructureData, None), qb._get_ormclass(None, 'data.structure.StructureData.'), ): self.assertEqual(clstype, 'data.structure.StructureData.') self.assertTrue(issubclass(cls, DbNode)) self.assertEqual(clstype, 'data.structure.StructureData.') self.assertEqual(query_type_string, StructureData._query_type_string) for cls, clstype, query_type_string in ( qb._get_ormclass(Node, None), qb._get_ormclass(DbNode, None), qb._get_ormclass(None, '') ): self.assertEqual(clstype, Node._plugin_type_string) self.assertEqual(query_type_string, Node._query_type_string) self.assertTrue(issubclass(cls, DbNode)) for cls, clstype, query_type_string in ( qb._get_ormclass(DbGroup, None), qb._get_ormclass(Group, None), qb._get_ormclass(None, 'group'), qb._get_ormclass(None, 'Group'), ): self.assertEqual(clstype, 'group') self.assertEqual(query_type_string, None) self.assertTrue(issubclass(cls, DbGroup)) for cls, clstype, query_type_string in ( qb._get_ormclass(DbUser, None), qb._get_ormclass(DbUser, None), qb._get_ormclass(None, "user"), qb._get_ormclass(None, "User"), ): self.assertEqual(clstype, 'user') self.assertEqual(query_type_string, None) self.assertTrue(issubclass(cls, DbUser)) for cls, clstype, query_type_string in ( qb._get_ormclass(DbComputer, None), qb._get_ormclass(Computer, None), qb._get_ormclass(None, 'computer'), qb._get_ormclass(None, 'Computer'), ): self.assertEqual(clstype, 'computer') self.assertEqual(query_type_string, None) self.assertTrue(issubclass(cls, DbComputer)) for cls, clstype, query_type_string in ( qb._get_ormclass(Data, None), qb._get_ormclass(None, 'data.Data.'), ): self.assertEqual(clstype, Data._plugin_type_string) self.assertEqual(query_type_string, Data._query_type_string) self.assertTrue(issubclass(cls, DbNode))
def test_classification(self): """ This tests the classifications of the QueryBuilder """ from aiida.orm.querybuilder import QueryBuilder from aiida.orm.utils import (DataFactory, CalculationFactory) from aiida.orm.data.structure import StructureData from aiida.orm import Group, User, Node, Computer, Data, Calculation from aiida.common.exceptions import InputValidationError qb = QueryBuilder() # Asserting that improper declarations of the class type raise an error with self.assertRaises(InputValidationError): qb._get_ormclass(None, 'data') with self.assertRaises(InputValidationError): qb._get_ormclass(None, 'data.Data') with self.assertRaises(InputValidationError): qb._get_ormclass(None, '.') # Asserting that the query type string and plugin type string are returned: for cls, clstype, query_type_string in ( qb._get_ormclass(StructureData, None), qb._get_ormclass(None, 'data.structure.StructureData.'), ): self.assertEqual(clstype, StructureData._plugin_type_string) self.assertEqual(query_type_string, StructureData._query_type_string) for cls, clstype, query_type_string in ( qb._get_ormclass(Node, None), qb._get_ormclass(None, '') ): self.assertEqual(clstype, Node._plugin_type_string) self.assertEqual(query_type_string, Node._query_type_string) for cls, clstype, query_type_string in ( qb._get_ormclass(Group, None), qb._get_ormclass(None, 'group'), qb._get_ormclass(None, 'Group'), ): self.assertEqual(clstype, 'group') self.assertEqual(query_type_string, None) for cls, clstype, query_type_string in ( qb._get_ormclass(User, None), qb._get_ormclass(None, "user"), qb._get_ormclass(None, "User"), ): self.assertEqual(clstype, 'user') self.assertEqual(query_type_string, None) for cls, clstype, query_type_string in ( qb._get_ormclass(Computer, None), qb._get_ormclass(None, 'computer'), qb._get_ormclass(None, 'Computer'), ): self.assertEqual(clstype, 'computer') self.assertEqual(query_type_string, None) for cls, clstype, query_type_string in ( qb._get_ormclass(Data, None), qb._get_ormclass(None, 'data.Data.'), ): self.assertEqual(clstype, Data._plugin_type_string) self.assertEqual(query_type_string, Data._query_type_string)