import unittest from pyramid import testing import transaction 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('flatfilecms.models') settings = self.config.get_settings() from flatfilecms.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 flatfilecms.models.meta import Base Base.metadata.create_all(self.engine) def tearDown(self): from flatfilecms.models.meta import Base testing.tearDown() transaction.abort() Base.metadata.drop_all(self.engine) class TestRootLoadSuccessCondition(BaseTest): def setUp(self): super(TestRootLoadSuccessCondition, self).setUp() from flatfilecms.resources import Root self.pages = Root('../tests/pages') def test_loaded_structure(self): assert 'index' in self.pages def test_db_contains_pages(self): from flatfilecms.models import PageModel index = self.session.query(PageModel).get('/') assert index.title == 'Заглушка для тестов БД' # class TestMyViewSuccessCondition(BaseTest): # def setUp(self): # super(TestMyViewSuccessCondition, self).setUp() # self.init_database() # from flatfilecms.models import PageModel # model = PageModel(name='one', value=55) # self.session.add(model) # def test_passing_view(self): # from flatfilecms.views.default import my_view # info = my_view(dummy_request(self.session)) # self.assertEqual(info['one'].name, 'one') # self.assertEqual(info['project'], 'db') # class TestMyViewFailureCondition(BaseTest): # def test_failing_view(self): # from flatfilecms.views.default import my_view # info = my_view(dummy_request(self.session)) # self.assertEqual(info.status_int, 500)