diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/menu/default.yaml b/tests/data/menu/default.yaml new file mode 100644 index 0000000..e69de29 diff --git a/tests/pages/index.md b/tests/pages/index.md index 5466d95..94a4e9a 100644 --- a/tests/pages/index.md +++ b/tests/pages/index.md @@ -1,7 +1,7 @@ --- title: Заглушка для тестов БД description: Тестовая страница -template: onepage +template: tests:templates/test_markdown --- Hello World! diff --git a/tests/pages/view.md b/tests/pages/view.md new file mode 100644 index 0000000..5291cfe --- /dev/null +++ b/tests/pages/view.md @@ -0,0 +1,8 @@ +--- +title: Тест одиночного view +description: Тесты view +template: tests:templates/test_markdown +view: tests.views.test1 +--- + +Hello World! diff --git a/tests/pages/views.md b/tests/pages/views.md new file mode 100644 index 0000000..d7129b9 --- /dev/null +++ b/tests/pages/views.md @@ -0,0 +1,13 @@ +--- +title: Тест нескольких view с конфигурацией +description: Тесты view +template: tests:templates/test_markdown +view: + - tests.views.test1 + - tests.views.test2 + - tests.views.test3: + a: 1 + b: 2 +--- + +Hello World! diff --git a/tests/templates/test_markdown.jinja2 b/tests/templates/test_markdown.jinja2 new file mode 100644 index 0000000..b92f652 --- /dev/null +++ b/tests/templates/test_markdown.jinja2 @@ -0,0 +1 @@ +{{content}} diff --git a/tests/test_pages.py b/tests/test_pages.py index d8b4067..c095d26 100644 --- a/tests/test_pages.py +++ b/tests/test_pages.py @@ -2,15 +2,55 @@ import pytest @pytest.fixture -def pages(): +def current_directory(): + from pathlib import Path + return Path(__file__).parent + + +@pytest.fixture +def pages(current_directory): from flatfilecms.resources import Root - return Root('../tests/pages', '../tests/data') + return Root( + str(current_directory / 'pages'), + str(current_directory / 'data')) + + +@pytest.fixture +def request(): + from pyramid.testing import DummyRequest + return DummyRequest() + + +@pytest.fixture +def config(current_directory): + from pyramid.testing import testConfig + with testConfig() as config: + config.include('pyramid_jinja2') + yield config def test_loading(pages): assert 'index' in pages -def test_db_contains_pages(pages): +def test_loading_markdown(pages): assert pages['index'].page['title'] == 'Заглушка для тестов БД' - pass + + +def test_generating_markdown(pages, request, config): + from flatfilecms.views.pages import PagesView + view = PagesView(pages['index'], request) + assert view.process_yaml().text == 'Hello World!' + + +def test_view(pages, request, config): + from flatfilecms.views.pages import PagesView + view = PagesView(pages['view'], request) + assert view.process_yaml().text == 'Hello World! View1' + + +def test_views(pages, request, config): + from flatfilecms.views.pages import PagesView + view = PagesView(pages['views'], request) + assert view.process_yaml().text == \ + 'Hello World! View1 View2 View3(a:1, b:2)' diff --git a/tests/views.py b/tests/views.py new file mode 100644 index 0000000..443ca2f --- /dev/null +++ b/tests/views.py @@ -0,0 +1,10 @@ +def test1(self): + self.context.page['content'] += ' View1' + + +def test2(self): + self.context.page['content'] += ' View2' + + +def test3(self, a, b): + self.context.page['content'] += f' View3(a:{a}, b:{b})'