Michael Merickel
2018-10-15 81576ee51564c49d5ff3c1c07f214f22a8438231
commit | author | age
296ee2 1 import unittest
c96ca8 2 import transaction
CM 3
296ee2 4 from pyramid import testing
CM 5
414b67 6
MM 7 def dummy_request(dbsession):
8     return testing.DummyRequest(dbsession=dbsession)
296ee2 9
877eeb 10
414b67 11 class BaseTest(unittest.TestCase):
296ee2 12     def setUp(self):
414b67 13         self.config = testing.setUp(settings={
MM 14             'sqlalchemy.url': 'sqlite:///:memory:'
15         })
67f733 16         self.config.include('.models')
414b67 17         settings = self.config.get_settings()
MM 18
67f733 19         from .models import (
414b67 20             get_engine,
f4e1ca 21             get_session_factory,
a6d08e 22             get_tm_session,
c96ca8 23             )
414b67 24
MM 25         self.engine = get_engine(settings)
f4e1ca 26         session_factory = get_session_factory(self.engine)
414b67 27
f4e1ca 28         self.session = get_tm_session(session_factory, transaction.manager)
414b67 29
MM 30     def init_database(self):
798e85 31         from .models.meta import Base
414b67 32         Base.metadata.create_all(self.engine)
296ee2 33
CM 34     def tearDown(self):
414b67 35         from .models.meta import Base
MM 36
296ee2 37         testing.tearDown()
414b67 38         transaction.abort()
13846e 39         Base.metadata.drop_all(self.engine)
414b67 40
MM 41
42 class TestMyViewSuccessCondition(BaseTest):
43
44     def setUp(self):
45         super(TestMyViewSuccessCondition, self).setUp()
46         self.init_database()
47
13846e 48         from .models import MyModel
414b67 49
MM 50         model = MyModel(name='one', value=55)
51         self.session.add(model)
dab78d 52
ec1618 53     def test_passing_view(self):
414b67 54         from .views.default import my_view
MM 55         info = my_view(dummy_request(self.session))
25b8a9 56         self.assertEqual(info['one'].name, 'one')
818f8c 57         self.assertEqual(info['project'], '{{project}}')
ec1618 58
JA 59
414b67 60 class TestMyViewFailureCondition(BaseTest):
ec1618 61
JA 62     def test_failing_view(self):
414b67 63         from .views.default import my_view
MM 64         info = my_view(dummy_request(self.session))
65         self.assertEqual(info.status_int, 500)