Brian S. Stephan
7cf11986c5
cookies, template rendering with different CSS files via default or request param or cookie, etc.
101 lines
4.0 KiB
Python
101 lines
4.0 KiB
Python
"""Unit test helper methods."""
|
|
from werkzeug.http import dump_cookie
|
|
|
|
from incorporealcms.pages import generate_parent_navs, is_file_path_actually_dir_path, render, resolve_page_file
|
|
|
|
|
|
def test_resolve_page_file_dir_to_index():
|
|
"""Test that a request to a directory path results in the dir's index.md."""
|
|
assert resolve_page_file('foo/') == 'pages/foo/index.md'
|
|
|
|
|
|
def test_resolve_page_file_subdir_to_index():
|
|
"""Test that a request to a dir's subdir path results in the subdir's index.md."""
|
|
assert resolve_page_file('foo/bar/') == 'pages/foo/bar/index.md'
|
|
|
|
|
|
def test_resolve_page_file_other_requests_fine():
|
|
"""Test that a request to non-dir path results in a Markdown file."""
|
|
assert resolve_page_file('foo/baz') == 'pages/foo/baz.md'
|
|
|
|
|
|
def test_generate_page_navs_index(app):
|
|
"""Test that the index page has navs to the root (itself)."""
|
|
with app.app_context():
|
|
assert generate_parent_navs('/') == [('incorporeal.org', '/')]
|
|
|
|
|
|
def test_generate_page_navs_alternate_index(app):
|
|
"""Test that the index page (as a page, not a path) also has navs only to the root (by path)."""
|
|
with app.app_context():
|
|
assert generate_parent_navs('index') == [('incorporeal.org', '/')]
|
|
|
|
|
|
def test_generate_page_navs_subdir_index(app):
|
|
"""Test that dir pages have navs to the root and themselves."""
|
|
with app.app_context():
|
|
assert generate_parent_navs('subdir/') == [('incorporeal.org', '/'), ('/subdir/', '/subdir/')]
|
|
|
|
|
|
def test_generate_page_navs_subdir_real_page(app):
|
|
"""Test that real pages have navs to the root, their parent, and themselves."""
|
|
with app.app_context():
|
|
assert generate_parent_navs('subdir/page') == [('incorporeal.org', '/'), ('/subdir/', '/subdir/'),
|
|
('Page', '/subdir/page')]
|
|
|
|
|
|
def test_generate_page_navs_subdir_with_title_parsing_real_page(app):
|
|
"""Test that title metadata is used in the nav text."""
|
|
with app.app_context():
|
|
assert generate_parent_navs('subdir-with-title/page') == [
|
|
('incorporeal.org', '/'),
|
|
('SUB!', '/subdir-with-title/'),
|
|
('/subdir-with-title/page', '/subdir-with-title/page')
|
|
]
|
|
|
|
|
|
def test_is_file_path_actually_dir_path_valid_file_is_yes(app):
|
|
"""Test that a file request for what's actually a directory is detected as such."""
|
|
with app.app_context():
|
|
assert is_file_path_actually_dir_path('/subdir')
|
|
|
|
|
|
def test_is_file_path_actually_dir_path_valid_dir_is_no(app):
|
|
"""Test that a directory request is still a directory request."""
|
|
with app.app_context():
|
|
assert not is_file_path_actually_dir_path('/subdir/')
|
|
|
|
|
|
def test_is_file_path_actually_dir_path_nonsense_file_is_no(app):
|
|
"""Test that requests to nonsense file-looking paths aren't treated as dirs."""
|
|
with app.app_context():
|
|
assert not is_file_path_actually_dir_path('/antphnathpnthapnthsnthax')
|
|
|
|
|
|
def test_is_file_path_actually_dir_path_nonsense_dir_is_no(app):
|
|
"""Test that a directory request is a directory request even if the dir doesn't exist."""
|
|
with app.app_context():
|
|
assert not is_file_path_actually_dir_path('/antphnathpnthapnthsnthax/')
|
|
|
|
|
|
def test_render_with_user_dark_theme(app):
|
|
"""Test that a request with the dark theme selected renders the dark theme."""
|
|
cookie = dump_cookie("user-style", 'dark')
|
|
with app.test_request_context(headers={'COOKIE': cookie}):
|
|
assert b'dark.css' in render('base.html').data
|
|
assert b'light.css' not in render('base.html').data
|
|
|
|
|
|
def test_render_with_user_light_theme(app):
|
|
"""Test that a request with the light theme selected renders the light theme."""
|
|
with app.test_request_context():
|
|
assert b'light.css' in render('base.html').data
|
|
assert b'dark.css' not in render('base.html').data
|
|
|
|
|
|
def test_render_with_no_user_theme(app):
|
|
"""Test that a request with no theme set renders the light theme."""
|
|
with app.test_request_context():
|
|
assert b'light.css' in render('base.html').data
|
|
assert b'dark.css' not in render('base.html').data
|