Skip to content

Commit

Permalink
Merge pull request #73 from Relrin/update-sqlalchemy-tests
Browse files Browse the repository at this point in the history
Refactored tests for serializing SQLAlchemy ORM models
  • Loading branch information
Relrin committed Nov 25, 2016
2 parents beb573d + 7d8b877 commit f20db6f
Show file tree
Hide file tree
Showing 7 changed files with 69 additions and 275 deletions.
23 changes: 23 additions & 0 deletions tests/db/orm/sqlalchemy/base.py
Original file line number Diff line number Diff line change
@@ -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)
18 changes: 5 additions & 13 deletions tests/db/orm/sqlalchemy/test_field_mapping.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -43,7 +41,7 @@ class TestModel(object):
)


class TestGetFieldKwargs(unittest.TestCase):
class TestGetFieldKwargs(SQLAlchemyUnitTest):

class TestGetFieldKwargsModel(Base):
__tablename__ = 'test_get_field_kwargs'
Expand All @@ -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(
Expand All @@ -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
Expand Down
33 changes: 12 additions & 21 deletions tests/db/orm/sqlalchemy/test_mixins.py
Original file line number Diff line number Diff line change
@@ -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()
Expand All @@ -58,31 +51,29 @@ 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):
__tablename__ = 'test_sqlalchemy_orm_mixin'
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()
Expand Down
Loading

0 comments on commit f20db6f

Please sign in to comment.