tests.py 1.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import unittest
  2. import transaction
  3. from pyramid import testing
  4. def dummy_request(dbsession):
  5. return testing.DummyRequest(dbsession=dbsession)
  6. class BaseTest(unittest.TestCase):
  7. def setUp(self):
  8. self.config = testing.setUp(settings={
  9. 'sqlalchemy.url': 'sqlite:///:memory:'
  10. })
  11. self.config.include('.models')
  12. settings = self.config.get_settings()
  13. from .models import (
  14. get_engine,
  15. get_session_factory,
  16. get_tm_session,
  17. )
  18. self.engine = get_engine(settings)
  19. session_factory = get_session_factory(self.engine)
  20. self.session = get_tm_session(session_factory, transaction.manager)
  21. def init_database(self):
  22. from .models.meta import Base
  23. Base.metadata.create_all(self.engine)
  24. def tearDown(self):
  25. from .models.meta import Base
  26. testing.tearDown()
  27. transaction.abort()
  28. Base.metadata.drop_all(self.engine)
  29. class TestMyViewSuccessCondition(BaseTest):
  30. def setUp(self):
  31. super(TestMyViewSuccessCondition, self).setUp()
  32. self.init_database()
  33. from .models import MyModel
  34. model = MyModel(name='one', value=55)
  35. self.session.add(model)
  36. def test_passing_view(self):
  37. from .views.default import my_view
  38. info = my_view(dummy_request(self.session))
  39. self.assertEqual(info['one'].name, 'one')
  40. self.assertEqual(info['project'], 'tracim')
  41. class TestMyViewFailureCondition(BaseTest):
  42. def test_failing_view(self):
  43. from .views.default import my_view
  44. info = my_view(dummy_request(self.session))
  45. self.assertEqual(info.status_int, 500)