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
|