diff --git a/tests/db/orm/sqlalchemy/base.py b/tests/db/orm/sqlalchemy/base.py new file mode 100644 index 0000000..d243f07 --- /dev/null +++ b/tests/db/orm/sqlalchemy/base.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +import unittest + +from sqlalchemy.ext.declarative import declarative_base +from tests.fixtures.sqlalchemy import ENGINE + +Base = declarative_base() + + +class SQLAlchemyUnitTest(unittest.TestCase): + + tables = [] + + @classmethod + def setUpClass(cls): + super(SQLAlchemyUnitTest, cls).setUpClass() + Base.metadata.create_all(ENGINE, tables=cls.tables) + + @classmethod + def tearDownClass(cls): + super(SQLAlchemyUnitTest, cls).tearDownClass() + for table in cls.tables: + Base.metadata.remove(table) diff --git a/tests/db/orm/sqlalchemy/test_field_mapping.py b/tests/db/orm/sqlalchemy/test_field_mapping.py index 33b21e6..4478962 100644 --- a/tests/db/orm/sqlalchemy/test_field_mapping.py +++ b/tests/db/orm/sqlalchemy/test_field_mapping.py @@ -6,14 +6,12 @@ get_url_kwargs from aiorest_ws.utils.structures import RelationInfo -from tests.fixtures.sqlalchemy import ENGINE, SESSION +from tests.db.orm.sqlalchemy.base import Base, SQLAlchemyUnitTest +from tests.fixtures.sqlalchemy import SESSION from sqlalchemy import Column, Integer, String, Enum, ForeignKey -from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import validates -Base = declarative_base() - # Only for the TestGetRelationKwargs test cases @@ -43,7 +41,7 @@ class TestModel(object): ) -class TestGetFieldKwargs(unittest.TestCase): +class TestGetFieldKwargs(SQLAlchemyUnitTest): class TestGetFieldKwargsModel(Base): __tablename__ = 'test_get_field_kwargs' @@ -58,12 +56,11 @@ def validate_email(self, key, address): assert '@' in address, '@ must be in email address' return address + tables = [TestGetFieldKwargsModel.__table__, ] + @classmethod def setUpClass(cls): super(TestGetFieldKwargs, cls).setUpClass() - Base.metadata.create_all( - ENGINE, tables=[cls.TestGetFieldKwargsModel.__table__, ] - ) session = SESSION() session.add_all([ cls.TestGetFieldKwargsModel( @@ -87,11 +84,6 @@ def setUpClass(cls): ]) session.commit() - @classmethod - def tearDownClass(cls): - super(TestGetFieldKwargs, cls).tearDownClass() - Base.metadata.remove(cls.TestGetFieldKwargsModel.__table__) - def test_get_field_kwargs_for_primary_key_field(self): field_kwargs = get_field_kwargs( 'id', self.TestGetFieldKwargsModel.id, self.TestGetFieldKwargsModel diff --git a/tests/db/orm/sqlalchemy/test_mixins.py b/tests/db/orm/sqlalchemy/test_mixins.py index 7973db5..10f7db7 100644 --- a/tests/db/orm/sqlalchemy/test_mixins.py +++ b/tests/db/orm/sqlalchemy/test_mixins.py @@ -1,43 +1,36 @@ # -*- coding: utf-8 -*- -import unittest - from aiorest_ws.db.orm.sqlalchemy.mixins import ORMSessionMixin, \ SQLAlchemyMixin from aiorest_ws.test.utils import override_settings -from tests.fixtures.sqlalchemy import ENGINE, SESSION - from sqlalchemy import Column, Integer, String -from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm.session import Session from sqlalchemy.orm.query import Query +from tests.db.orm.sqlalchemy.base import Base, SQLAlchemyUnitTest +from tests.fixtures.sqlalchemy import SESSION -Base = declarative_base() - -class TestORMSessionMixin(unittest.TestCase): +class TestORMSessionMixin(SQLAlchemyUnitTest): settings = {'SQLALCHEMY_SESSION': SESSION} class TableForORMSessionMixin(Base): __tablename__ = 'test_orm_session_mixin' id = Column(Integer, primary_key=True) + tables = [TableForORMSessionMixin.__table__, ] + @classmethod def setUpClass(cls): - super(TestORMSessionMixin, cls).setUpClass() cls._cls_overridden_context = override_settings(**cls.settings) cls._cls_overridden_context.enable() - Base.metadata.create_all( - ENGINE, tables=[cls.TableForORMSessionMixin.__table__, ] - ) + super(TestORMSessionMixin, cls).setUpClass() cls.session = SESSION() @classmethod def tearDownClass(cls): - super(TestORMSessionMixin, cls).tearDownClass() cls._cls_overridden_context.disable() - Base.metadata.remove(cls.TableForORMSessionMixin.__table__) + super(TestORMSessionMixin, cls).tearDownClass() def test_get_session(self): mixin = ORMSessionMixin() @@ -58,7 +51,7 @@ def test_get_queryset_returns_has_closed_session_and_returns_new_qs(self): self.assertEqual(mixin.queryset, queryset) -class TestSQLAlchemyMixin(unittest.TestCase): +class TestSQLAlchemyMixin(SQLAlchemyUnitTest): settings = {'SQLALCHEMY_SESSION': SESSION} class TableForSQLAlchemyMixin(Base): @@ -66,23 +59,21 @@ class TableForSQLAlchemyMixin(Base): id = Column(Integer, primary_key=True) login = Column(String, nullable=False) + tables = [TableForSQLAlchemyMixin.__table__, ] + @classmethod def setUpClass(cls): - super(TestSQLAlchemyMixin, cls).setUpClass() cls._cls_overridden_context = override_settings(**cls.settings) cls._cls_overridden_context.enable() - Base.metadata.create_all( - ENGINE, tables=[cls.TableForSQLAlchemyMixin.__table__, ] - ) + super(TestSQLAlchemyMixin, cls).setUpClass() cls.session = SESSION() cls.session.add_all([cls.TableForSQLAlchemyMixin(login='user'), ]) cls.session.commit() @classmethod def tearDownClass(cls): - super(TestSQLAlchemyMixin, cls).tearDownClass() cls._cls_overridden_context.disable() - Base.metadata.remove(cls.TableForSQLAlchemyMixin.__table__) + super(TestSQLAlchemyMixin, cls).tearDownClass() def test_get_filter_args(self): mixin = SQLAlchemyMixin() diff --git a/tests/db/orm/sqlalchemy/test_model_meta.py b/tests/db/orm/sqlalchemy/test_model_meta.py index 88ab2c6..39590c4 100644 --- a/tests/db/orm/sqlalchemy/test_model_meta.py +++ b/tests/db/orm/sqlalchemy/test_model_meta.py @@ -1,24 +1,18 @@ # -*- coding: utf-8 -*- -import unittest - from aiorest_ws.db.orm.sqlalchemy.model_meta import _get_pk, _get_fields, \ _get_relations, _get_to_field, _get_forward_relationships, \ _get_reverse_relationships, _merge_fields_and_pk, _merge_relationships, \ get_field_info, is_abstract_model, get_relations_data, model_pk -from tests.fixtures.sqlalchemy import ENGINE - from sqlalchemy import Column, Integer, String, Enum, ForeignKey, Table, \ DateTime -from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import relationship from sqlalchemy.orm.interfaces import ONETOMANY +from tests.db.orm.sqlalchemy.base import Base, SQLAlchemyUnitTest -Base = declarative_base() - -class TestGetPkFunction(unittest.TestCase): +class TestGetPkFunction(SQLAlchemyUnitTest): class TestGetPkWithSinglePkModel(Base): __tablename__ = 'test_get_pk_with_single_pk_model' @@ -34,17 +28,6 @@ class TestGetPkWithCompositePkModel(Base): TestGetPkWithCompositePkModel.__table__ ] - @classmethod - def setUpClass(cls): - super(TestGetPkFunction, cls).setUpClass() - Base.metadata.create_all(ENGINE, tables=cls.tables) - - @classmethod - def tearDownClass(cls): - super(TestGetPkFunction, cls).tearDownClass() - for table in cls.tables: - Base.metadata.remove(table) - def test_get_single_pk_from_model(self): mapper = self.TestGetPkWithSinglePkModel.__mapper__ @@ -62,7 +45,7 @@ def test_get_composite_pk_from_model(self): ) -class TestGetFieldsFunction(unittest.TestCase): +class TestGetFieldsFunction(SQLAlchemyUnitTest): class TestGetFieldsFunctionModel(Base): __tablename__ = 'test_get_fields_function_model' @@ -76,17 +59,6 @@ class TestGetFieldsFunctionModel(Base): TestGetFieldsFunctionModel.__table__, ] - @classmethod - def setUpClass(cls): - super(TestGetFieldsFunction, cls).setUpClass() - Base.metadata.create_all(ENGINE, tables=cls.tables) - - @classmethod - def tearDownClass(cls): - super(TestGetFieldsFunction, cls).tearDownClass() - for table in cls.tables: - Base.metadata.remove(table) - def test_get_fields_from_model(self): mapper = self.TestGetFieldsFunctionModel.__mapper__ @@ -96,7 +68,7 @@ def test_get_fields_from_model(self): ) -class TestGetRelationsFunction(unittest.TestCase): +class TestGetRelationsFunction(SQLAlchemyUnitTest): class TestGetRelationsParentModel(Base): __tablename__ = 'test_get_relations_parent_model' @@ -116,17 +88,6 @@ class TestGetRelationsChildModel(Base): TestGetRelationsChildModel.__table__ ] - @classmethod - def setUpClass(cls): - super(TestGetRelationsFunction, cls).setUpClass() - Base.metadata.create_all(ENGINE, tables=cls.tables) - - @classmethod - def tearDownClass(cls): - super(TestGetRelationsFunction, cls).tearDownClass() - for table in cls.tables: - Base.metadata.remove(table) - def test_get_relations(self): mapper = self.TestGetRelationsParentModel.__mapper__ @@ -136,7 +97,7 @@ def test_get_relations(self): ) -class TestGetToFieldFunction(unittest.TestCase): +class TestGetToFieldFunction(SQLAlchemyUnitTest): class TestGetToFieldParentModel(Base): __tablename__ = 'test_get_to_field_parent_model' @@ -160,17 +121,6 @@ class TestGetToFieldChildModel(Base): TestGetToFieldChildModel.__table__ ] - @classmethod - def setUpClass(cls): - super(TestGetToFieldFunction, cls).setUpClass() - Base.metadata.create_all(ENGINE, tables=cls.tables) - - @classmethod - def tearDownClass(cls): - super(TestGetToFieldFunction, cls).tearDownClass() - for table in cls.tables: - Base.metadata.remove(table) - def test_get_to_field(self): mapper = self.TestGetToFieldParentModel.__mapper__ relation_field = mapper.relationships.items()[0][1] @@ -184,7 +134,7 @@ def test_get_to_field_returns_none(self): self.assertIsNone(_get_to_field(non_relation_field)) -class TestGetForwardRelationsFunction(unittest.TestCase): +class TestGetForwardRelationsFunction(SQLAlchemyUnitTest): class TestGetForwardRelationsParentModel(Base): __tablename__ = 'test_forward_rel_parent_model' @@ -208,17 +158,6 @@ class TestGetForwardRelationsChildModel(Base): TestGetForwardRelationsChildModel.__table__ ] - @classmethod - def setUpClass(cls): - super(TestGetForwardRelationsFunction, cls).setUpClass() - Base.metadata.create_all(ENGINE, tables=cls.tables) - - @classmethod - def tearDownClass(cls): - super(TestGetForwardRelationsFunction, cls).tearDownClass() - for table in cls.tables: - Base.metadata.remove(table) - def test_get_forward_relations(self): mapper = self.TestGetForwardRelationsParentModel.__mapper__ @@ -241,7 +180,7 @@ def test_get_forward_relations(self): ) -class TestGetReverseRelationsFunction(unittest.TestCase): +class TestGetReverseRelationsFunction(SQLAlchemyUnitTest): class TestGetReverseRelationsFkParentModel(Base): __tablename__ = 'test_get_reverse_relations_fk_parent_model' @@ -287,17 +226,6 @@ class TestGetReverseRelationsChildModel(Base): TestGetReverseRelationsChildModel.__table__ ] - @classmethod - def setUpClass(cls): - super(TestGetReverseRelationsFunction, cls).setUpClass() - Base.metadata.create_all(ENGINE, tables=cls.tables) - - @classmethod - def tearDownClass(cls): - super(TestGetReverseRelationsFunction, cls).tearDownClass() - for table in cls.tables: - Base.metadata.remove(table) - def test_get_reverse_relations_for_many_to_one(self): mapper = self.TestGetReverseRelationsFkParentModel.__mapper__ @@ -315,7 +243,7 @@ def test_get_reverse_relations_for_many_to_many(self): ) -class TestMergeFieldAndPkFunction(unittest.TestCase): +class TestMergeFieldAndPkFunction(SQLAlchemyUnitTest): class TestMergeFieldAndPkModel(Base): __tablename__ = 'test_merge_fields_and_pk_model' @@ -324,17 +252,7 @@ class TestMergeFieldAndPkModel(Base): address = Column(String(50), nullable=True) email = Column(String(50), unique=True) - @classmethod - def setUpClass(cls): - super(TestMergeFieldAndPkFunction, cls).setUpClass() - Base.metadata.create_all( - ENGINE, tables=[cls.TestMergeFieldAndPkModel.__table__, ] - ) - - @classmethod - def tearDownClass(cls): - super(TestMergeFieldAndPkFunction, cls).tearDownClass() - Base.metadata.remove(cls.TestMergeFieldAndPkModel.__table__) + tables = [TestMergeFieldAndPkModel.__table__, ] def test_merge_field_and_pk(self): mapper = self.TestMergeFieldAndPkModel.__mapper__ @@ -361,7 +279,7 @@ def test_merge_field_and_pk(self): ) -class TestMergeRelationsFunction(unittest.TestCase): +class TestMergeRelationsFunction(SQLAlchemyUnitTest): class TestMergeRelationsCatalogModel(Base): __tablename__ = 'test_merge_relations_catalog_model' @@ -410,17 +328,6 @@ class TestMergeRelationsLinkModel(Base): TestMergeRelationsLinkModel.__table__ ] - @classmethod - def setUpClass(cls): - super(TestMergeRelationsFunction, cls).setUpClass() - Base.metadata.create_all(ENGINE, tables=cls.tables) - - @classmethod - def tearDownClass(cls): - super(TestMergeRelationsFunction, cls).tearDownClass() - for table in cls.tables: - Base.metadata.remove(table) - def test_merge_relations(self): mapper = self.TestMergeRelationsFileModel.__mapper__ forward_relations = _get_forward_relationships(mapper) @@ -433,7 +340,7 @@ def test_merge_relations(self): ) -class TestFieldInfoFunction(unittest.TestCase): +class TestFieldInfoFunction(SQLAlchemyUnitTest): class TestFieldInfoParentModel(Base): __tablename__ = 'test_field_info_parent_model' @@ -457,17 +364,6 @@ class TestFieldInfoChildModel(Base): TestFieldInfoChildModel.__table__, ] - @classmethod - def setUpClass(cls): - super(TestFieldInfoFunction, cls).setUpClass() - Base.metadata.create_all(ENGINE, tables=cls.tables) - - @classmethod - def tearDownClass(cls): - super(TestFieldInfoFunction, cls).tearDownClass() - for table in cls.tables: - Base.metadata.remove(table) - def test_field_info(self): self.assertEqual( set(get_field_info(self.TestFieldInfoParentModel)._fields), @@ -476,7 +372,7 @@ def test_field_info(self): ) -class TestIsAbstractModelFunction(unittest.TestCase): +class TestIsAbstractModelFunction(SQLAlchemyUnitTest): class TestIsAbstractModel(Base): __tablename__ = 'test_is_abstract_model' @@ -491,17 +387,6 @@ class TestIsNotAbstractModel(Base): TestIsNotAbstractModel.__table__ ] - @classmethod - def setUpClass(cls): - super(TestIsAbstractModelFunction, cls).setUpClass() - Base.metadata.create_all(ENGINE, tables=cls.tables) - - @classmethod - def tearDownClass(cls): - super(TestIsAbstractModelFunction, cls).tearDownClass() - for table in cls.tables: - Base.metadata.remove(table) - def test_is_abstract_model_returns_true(self): self.assertTrue(is_abstract_model(self.TestIsAbstractModel)) @@ -509,7 +394,7 @@ def test_is_abstract_model_return_false(self): self.assertFalse(is_abstract_model(self.TestIsNotAbstractModel)) -class TestGetRelationsDataFunction(unittest.TestCase): +class TestGetRelationsDataFunction(SQLAlchemyUnitTest): class TestGetRelationsDataUserModel(Base): __tablename__ = 'test_get_relations_data_users_model' @@ -537,17 +422,6 @@ class TestGetRelationsDataAddressModel(Base): TestGetRelationsDataAddressModel.__table__, ] - @classmethod - def setUpClass(cls): - super(TestGetRelationsDataFunction, cls).setUpClass() - Base.metadata.create_all(ENGINE, tables=cls.tables) - - @classmethod - def tearDownClass(cls): - super(TestGetRelationsDataFunction, cls).tearDownClass() - for table in cls.tables: - Base.metadata.remove(table) - def test_get_relations_data_returns_empty_dict(self): data = { "id": 1, @@ -576,7 +450,7 @@ def test_get_relations_data_returns_filled_dict(self): ) -class TestModelPkFunction(unittest.TestCase): +class TestModelPkFunction(SQLAlchemyUnitTest): class TestModelPkWithSinglePkModel(Base): __tablename__ = 'test_model_pk_with_single_pk_model' @@ -592,17 +466,6 @@ class TestModelPkWithCompositePkModel(Base): TestModelPkWithCompositePkModel.__table__ ] - @classmethod - def setUpClass(cls): - super(TestModelPkFunction, cls).setUpClass() - Base.metadata.create_all(ENGINE, tables=cls.tables) - - @classmethod - def tearDownClass(cls): - super(TestModelPkFunction, cls).tearDownClass() - for table in cls.tables: - Base.metadata.remove(table) - def test_model_pk_from_model_with_one_pk(self): self.assertEqual( set(model_pk(self.TestModelPkWithSinglePkModel)), diff --git a/tests/db/orm/sqlalchemy/test_relations.py b/tests/db/orm/sqlalchemy/test_relations.py index ad21574..0f41fd4 100644 --- a/tests/db/orm/sqlalchemy/test_relations.py +++ b/tests/db/orm/sqlalchemy/test_relations.py @@ -1,6 +1,4 @@ # -*- coding: utf-8 -*- -import unittest - from aiorest_ws.exceptions import ImproperlyConfigured from aiorest_ws.db.orm.relations import RelatedField as BaseRelatedField, \ PKOnlyObject @@ -12,18 +10,15 @@ from aiorest_ws.test.utils import override_settings from aiorest_ws.urls.base import set_urlconf -from tests.fixtures.fakes import FakeView -from tests.fixtures.sqlalchemy import SESSION, ENGINE - from sqlalchemy import Column, Integer, String, ForeignKey -from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import relationship - -Base = declarative_base() +from tests.fixtures.fakes import FakeView +from tests.fixtures.sqlalchemy import SESSION +from tests.db.orm.sqlalchemy.base import Base, SQLAlchemyUnitTest -class TestManyRelatedField(unittest.TestCase): +class TestManyRelatedField(SQLAlchemyUnitTest): class FakeRelatedField(BaseRelatedField): @@ -57,17 +52,6 @@ class TestManyRelatedFieldAddressModel(Base): TestManyRelatedFieldAddressModel.__table__ ] - @classmethod - def setUpClass(cls): - super(TestManyRelatedField, cls).setUpClass() - Base.metadata.create_all(ENGINE, tables=cls.tables) - - @classmethod - def tearDownClass(cls): - super(TestManyRelatedField, cls).tearDownClass() - for table in cls.tables: - Base.metadata.remove(table) - def test_get_attribute_returns_relation(self): child_instance = self.FakeRelatedField(read_only=True) instance = ManyRelatedField(child_relation=child_instance) @@ -121,7 +105,7 @@ def test_deepcopy_field(self): ) -class TestRelatedField(unittest.TestCase): +class TestRelatedField(SQLAlchemyUnitTest): class RelatedWithOptimization(RelatedField): @@ -155,8 +139,6 @@ class TestRelatedFieldAddressModel(Base): @classmethod def setUpClass(cls): super(TestRelatedField, cls).setUpClass() - Base.metadata.create_all(ENGINE, tables=cls.tables) - session = SESSION() user = cls.TestRelatedFieldUserModel(name='admin') address = cls.TestRelatedFieldAddressModel( @@ -168,12 +150,6 @@ def setUpClass(cls): session.commit() session.close() - @classmethod - def tearDownClass(cls): - super(TestRelatedField, cls).tearDownClass() - for table in cls.tables: - Base.metadata.remove(table) - def test_get_attribute_returns_attribute(self): instance = RelatedField(read_only=True) instance.bind('user', self) @@ -221,7 +197,7 @@ def test_deepcopy_field(self): self.assertNotEqual(instance, instance_copy) -class TestPrimaryKeyRelatedField(unittest.TestCase): +class TestPrimaryKeyRelatedField(SQLAlchemyUnitTest): class TestPrimaryKeyRelatedFieldUserModel(Base): __tablename__ = 'test_pk_related_field_users_model' @@ -250,8 +226,6 @@ class TestPrimaryKeyRelatedFieldAddressModel(Base): @classmethod def setUpClass(cls): super(TestPrimaryKeyRelatedField, cls).setUpClass() - Base.metadata.create_all(ENGINE, tables=cls.tables) - session = SESSION() user = cls.TestPrimaryKeyRelatedFieldUserModel(name='admin') address = cls.TestPrimaryKeyRelatedFieldAddressModel( @@ -263,12 +237,6 @@ def setUpClass(cls): session.commit() session.close() - @classmethod - def tearDownClass(cls): - super(TestPrimaryKeyRelatedField, cls).tearDownClass() - for table in cls.tables: - Base.metadata.remove(table) - @override_settings(SQLALCHEMY_SESSION=SESSION) def test_to_internal_value_returns_object(self): session = SESSION() @@ -356,7 +324,7 @@ def test_to_representation_returns_object_primary_key_via_pk_field(self): session.close() -class TestHyperlinkedRelatedField(unittest.TestCase): +class TestHyperlinkedRelatedField(SQLAlchemyUnitTest): class TestHyperlinkedRelatedFieldUserModel(Base): __tablename__ = 'test_hyperlink_related_field_users_model' @@ -391,8 +359,6 @@ class TestHyperlinkedRelatedFieldCompositePkModel(Base): @classmethod def setUpClass(cls): super(TestHyperlinkedRelatedField, cls).setUpClass() - Base.metadata.create_all(ENGINE, tables=cls.tables) - session = SESSION() user = cls.TestHyperlinkedRelatedFieldUserModel(name='admin') address = cls.TestHyperlinkedRelatedFieldAddressModel( @@ -418,12 +384,6 @@ def setUpClass(cls): } set_urlconf(cls.data) - @classmethod - def tearDownClass(cls): - super(TestHyperlinkedRelatedField, cls).tearDownClass() - for table in cls.tables: - Base.metadata.remove(table) - def test_use_pk_only_optimization_returns_true(self): instance = HyperlinkedRelatedField(view_name='user-detail') self.assertTrue(instance.use_pk_only_optimization()) diff --git a/tests/db/orm/sqlalchemy/test_serializers.py b/tests/db/orm/sqlalchemy/test_serializers.py index 9eed41c..99dc42a 100644 --- a/tests/db/orm/sqlalchemy/test_serializers.py +++ b/tests/db/orm/sqlalchemy/test_serializers.py @@ -13,16 +13,13 @@ from aiorest_ws.db.orm.sqlalchemy import fields, serializers from aiorest_ws.test.utils import override_settings +from tests.db.orm.sqlalchemy.base import Base, SQLAlchemyUnitTest from tests.fixtures.sqlalchemy import SESSION, ENGINE from sqlalchemy import Column, Integer, String, Enum, ForeignKey -from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import relationship, Query -Base = declarative_base() - - class TestGetValidationErrorDetailFunction(unittest.TestCase): def test_function_raises_assert_error_for_invalid_exception_type(self): @@ -134,7 +131,7 @@ class Meta: ) -class TestModelSerializer(unittest.TestCase): +class TestModelSerializer(SQLAlchemyUnitTest): class TestModelSerializerUserModel(Base): __tablename__ = 'test_model_serializer_users_model' @@ -165,17 +162,6 @@ class TestModelSerializerAddressModel(Base): TestModelSerializerAddressModel.__table__ ] - @classmethod - def setUpClass(cls): - super(TestModelSerializer, cls).setUpClass() - Base.metadata.create_all(ENGINE, tables=cls.tables) - - @classmethod - def tearDownClass(cls): - super(TestModelSerializer, cls).tearDownClass() - for table in cls.tables: - Base.metadata.remove(table) - def create_table(self, table): Base.metadata.create_all(ENGINE, tables=[table, ]) @@ -642,7 +628,7 @@ class Meta: serializer_fields = instance.fields # NOQA -class TestHyperlinkModelSerializer(unittest.TestCase): +class TestHyperlinkModelSerializer(SQLAlchemyUnitTest): class TestHyperlinkModelSerializerUserModel(Base): __tablename__ = 'test_hyperlink_model_serializer_users_model' @@ -672,17 +658,6 @@ class TestHyperlinkModelSerializerAddressModel(Base): TestHyperlinkModelSerializerAddressModel.__table__ ] - @classmethod - def setUpClass(cls): - super(TestHyperlinkModelSerializer, cls).setUpClass() - Base.metadata.create_all(ENGINE, tables=cls.tables) - - @classmethod - def tearDownClass(cls): - super(TestHyperlinkModelSerializer, cls).tearDownClass() - for table in cls.tables: - Base.metadata.remove(table) - def test_build_nested_field(self): class UserSerializer(HyperlinkedModelSerializer): diff --git a/tests/db/orm/sqlalchemy/test_validators.py b/tests/db/orm/sqlalchemy/test_validators.py index 9c87b30..4a8adcc 100644 --- a/tests/db/orm/sqlalchemy/test_validators.py +++ b/tests/db/orm/sqlalchemy/test_validators.py @@ -7,13 +7,10 @@ from aiorest_ws.db.orm.exceptions import ValidationError from aiorest_ws.test.utils import override_settings -from tests.fixtures.sqlalchemy import ENGINE, SESSION - from sqlalchemy import Column, Integer, String -from sqlalchemy.ext.declarative import declarative_base - -Base = declarative_base() +from tests.fixtures.sqlalchemy import SESSION +from tests.db.orm.sqlalchemy.base import Base, SQLAlchemyUnitTest class TestORMFieldValidator(unittest.TestCase): @@ -42,21 +39,19 @@ def test_validation_raises_validation_error(self): validator('wrong email address') -class TestUniqueORMValidator(unittest.TestCase): +class TestUniqueORMValidator(SQLAlchemyUnitTest): class TableWithUniqueName(Base): __tablename__ = 'test_unique_field' id = Column(Integer, primary_key=True) name = Column(String(50), unique=True) + tables = [TableWithUniqueName.__table__, ] + @classmethod def setUpClass(cls): super(TestUniqueORMValidator, cls).setUpClass() - Base.metadata.create_all( - ENGINE, tables=[cls.TableWithUniqueName.__table__, ] - ) cls.session = SESSION() - cls.session.add_all([ cls.TableWithUniqueName(name='Adam'), cls.TableWithUniqueName(name='Bob'), @@ -64,11 +59,6 @@ def setUpClass(cls): ]) cls.session.commit() - @classmethod - def tearDownClass(cls): - super(TestUniqueORMValidator, cls).tearDownClass() - Base.metadata.remove(cls.TableWithUniqueName.__table__) - def test_filter_queryset(self): validator = UniqueORMValidator( self.TableWithUniqueName, 'name'