Тесты для sqlalchemy

master
Антон Касимов 2019-02-10 19:57:35 +03:00
parent 348214e2e9
commit a906b6a2fc
4 changed files with 37 additions and 8 deletions

View File

@ -1,6 +1,8 @@
from pyramid.path import AssetResolver
from pathlib import PurePath
from .models import PageModel
def flat(d, path):
structure = []
@ -61,6 +63,7 @@ class Document(object):
self.__name__ = name
self.__parent__ = parent
self.__path__ = path
PageModel(url=name)
class Markdown(Document):

View File

@ -1,3 +1,3 @@
[pytest]
testpaths = flatfilecms
testpaths = tests
python_files = test*.py

7
tests/pages/index.md Normal file
View File

@ -0,0 +1,7 @@
---
title: Заглушка для тестов БД
description: Тестовая страница
template: onepage
---
Hello World!

View File

@ -5,6 +5,7 @@ from pyramid import testing
import transaction
def dummy_request(dbsession):
return testing.DummyRequest(dbsession=dbsession)
@ -14,10 +15,10 @@ class BaseTest(unittest.TestCase):
self.config = testing.setUp(settings={
'sqlalchemy.url': 'sqlite:///:memory:'
})
self.config.include('.models')
self.config.include('flatfilecms.models')
settings = self.config.get_settings()
from .models import (
from flatfilecms.models import (
get_engine,
get_session_factory,
get_tm_session,
@ -29,30 +30,48 @@ class BaseTest(unittest.TestCase):
self.session = get_tm_session(session_factory, transaction.manager)
def init_database(self):
from .models.meta import Base
from flatfilecms.models.meta import Base
Base.metadata.create_all(self.engine)
def tearDown(self):
from .models.meta import Base
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 .models import PageModel
# from flatfilecms.models import PageModel
# model = PageModel(name='one', value=55)
# self.session.add(model)
# def test_passing_view(self):
# from .views.default import my_view
# 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')
@ -61,6 +80,6 @@ class BaseTest(unittest.TestCase):
# class TestMyViewFailureCondition(BaseTest):
# def test_failing_view(self):
# from .views.default import my_view
# from flatfilecms.views.default import my_view
# info = my_view(dummy_request(self.session))
# self.assertEqual(info.status_int, 500)