You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.7 KiB
65 lines
1.7 KiB
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)
|
|
|