Holger Frey
7 years ago
5 changed files with 53 additions and 71 deletions
@ -1,65 +0,0 @@ |
|||||||
import unittest |
|
||||||
import transaction |
|
||||||
|
|
||||||
from pyramid import testing |
|
||||||
|
|
||||||
|
|
||||||
def dummy_request(dbsession): |
|
||||||
return testing.DummyRequest(dbsession=dbsession) |
|
||||||
|
|
||||||
|
|
||||||
class BaseTest(unittest.TestCase): |
|
||||||
def setUp(self): |
|
||||||
self.config = testing.setUp(settings={ |
|
||||||
'sqlalchemy.url': 'sqlite:///:memory:' |
|
||||||
}) |
|
||||||
self.config.include('.models') |
|
||||||
settings = self.config.get_settings() |
|
||||||
|
|
||||||
from .models import ( |
|
||||||
get_engine, |
|
||||||
get_session_factory, |
|
||||||
get_tm_session, |
|
||||||
) |
|
||||||
|
|
||||||
self.engine = get_engine(settings) |
|
||||||
session_factory = get_session_factory(self.engine) |
|
||||||
|
|
||||||
self.session = get_tm_session(session_factory, transaction.manager) |
|
||||||
|
|
||||||
def init_database(self): |
|
||||||
from .models.meta import Base |
|
||||||
Base.metadata.create_all(self.engine) |
|
||||||
|
|
||||||
def tearDown(self): |
|
||||||
from .models.meta import Base |
|
||||||
|
|
||||||
testing.tearDown() |
|
||||||
transaction.abort() |
|
||||||
Base.metadata.drop_all(self.engine) |
|
||||||
|
|
||||||
|
|
||||||
class TestMyViewSuccessCondition(BaseTest): |
|
||||||
|
|
||||||
def setUp(self): |
|
||||||
super(TestMyViewSuccessCondition, self).setUp() |
|
||||||
self.init_database() |
|
||||||
|
|
||||||
from .models import MyModel |
|
||||||
|
|
||||||
model = MyModel(name='one', value=55) |
|
||||||
self.session.add(model) |
|
||||||
|
|
||||||
def test_passing_view(self): |
|
||||||
from .views.default import my_view |
|
||||||
info = my_view(None, dummy_request(self.session)) |
|
||||||
self.assertEqual(info['one'].name, 'one') |
|
||||||
self.assertEqual(info['project'], 'Ordr') |
|
||||||
|
|
||||||
|
|
||||||
class TestMyViewFailureCondition(BaseTest): |
|
||||||
|
|
||||||
def test_failing_view(self): |
|
||||||
from .views.default import my_view |
|
||||||
info = my_view(None, dummy_request(self.session)) |
|
||||||
self.assertEqual(info.status_int, 500) |
|
@ -0,0 +1,51 @@ |
|||||||
|
import pytest |
||||||
|
import transaction |
||||||
|
|
||||||
|
from pyramid import testing |
||||||
|
|
||||||
|
|
||||||
|
APP_SETTINGS = { |
||||||
|
'sqlalchemy.url': 'sqlite:///:memory:', |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture(scope='session') |
||||||
|
def app_config(): |
||||||
|
''' fixture for tests requiring a pyramid.testing setup ''' |
||||||
|
with testing.testConfig(settings=APP_SETTINGS) as config: |
||||||
|
config.include('pyramid_jinja2') |
||||||
|
config.include('pyramid_listing') |
||||||
|
yield config |
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture(scope='session') |
||||||
|
def dbsession(app_config): |
||||||
|
''' fixture for testing with database connection ''' |
||||||
|
from ordr.models.meta import Base |
||||||
|
from ordr.models import ( |
||||||
|
get_engine, |
||||||
|
get_session_factory, |
||||||
|
get_tm_session |
||||||
|
) |
||||||
|
|
||||||
|
settings = app_config.get_settings() |
||||||
|
engine = get_engine(settings) |
||||||
|
session_factory = get_session_factory(engine) |
||||||
|
session = get_tm_session(session_factory, transaction.manager) |
||||||
|
Base.metadata.create_all(engine) |
||||||
|
|
||||||
|
yield session |
||||||
|
|
||||||
|
transaction.abort() |
||||||
|
Base.metadata.drop_all(engine) |
||||||
|
|
||||||
|
|
||||||
|
def test_passing_view(dbsession): |
||||||
|
from ordr.views.default import my_view |
||||||
|
from ordr.models import MyModel |
||||||
|
model = MyModel(name='one', value=55) |
||||||
|
dbsession.add(model) |
||||||
|
info = my_view(None, testing.DummyRequest(dbsession=dbsession)) |
||||||
|
assert info['one'].name == 'one' |
||||||
|
assert info['project'] == 'Ordr' |
||||||
|
|
Reference in new issue