def test_relative_path_from_page_to_sub_page_with_nested_url_style_and_debug_on(): from_page = elements.Page('test 1', 'test1') parent_page = elements.Page('test 2', 'test2') to_page = elements.SubPage('test 3', 'test3') to_page.parent_page = parent_page.file_name relative_path = to_page.get_relative_path(from_page, 'nested', True) assert relative_path == './test2/test3.html'
def test_website_set_parent_pages(): pages = [ elements.Page('Test 1', 'test1', [ elements.SubPage('sp11', 'sp11'), elements.SubPage('sp12', 'sp12') ]), elements.Page('Test 2', 'test2', [ elements.SubPage('sp21', 'sp21'), elements.SubPage('sp22', 'sp22') ]), ] website = elements.Website({ 'root_dir': 'test_root_dir', 'project_name': 'test_project_name', 'pages': pages }) sub_pages = [ page for page in website.pages if type(pages) is elements.SubPage ] for sub_page in sub_pages: assert sub_page.parent_page is None website.set_parent_pages() sub_pages = [ page for page in website.pages if type(pages) is elements.SubPage ] for sub_page in sub_pages: assert sub_page.parent_page in ['test1', 'test2']
def test_set_content_from_md(): page1 = elements.Page('test 1', 'test1') page2 = elements.Page('test 2', 'test2') page3 = elements.Page('home', 'index') all_pages = [page1, page2, page3] page = elements.Page('Test', 'test_page') page.set_content_from_md( all_pages, os.path.join(os.path.dirname(os.path.abspath(__file__)), 'fixtures', 'md'), None, 'flat', False ) assert '<h1>This is a test</h1>' in page.body_content assert '<p>There is nothing to see here</p>' in page.body_content
def test_generate_subpage_nested(): pages = [ elements.Page('Test Page', 'test_page', [elements.SubPage('Test SubPage', 'test_subpage')]) ] website = elements.Website({ 'root_dir': os.path.join(os.path.dirname(os.path.abspath(__file__)), 'fixtures', 'test_project'), 'project_name': 'test_project_name', 'pages': pages, 'url_style': 'nested', }) website.generate_pages() page_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'fixtures', 'test_project', 'test_page.html') subpage_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'fixtures', 'test_project', 'test_page', 'test_subpage.html') assert os.path.exists(page_path) assert os.path.exists(subpage_path) os.remove(page_path) shutil.rmtree( os.path.join(os.path.dirname(os.path.abspath(__file__)), 'fixtures', 'test_project', 'test_page'))
def test_page_generate_content_menu_with_nested_url_style(): page = elements.Page('Test', 'test', [ elements.SubPage('Sub Page 1', 'subpage1'), elements.SubPage('Sub Page 2', 'subpage2'), elements.SubPage('Sub Page 3', 'subpage3'), ]) result_menu = '#Test\n- [Sub Page 1](./test/subpage1.html)\n- [Sub Page 2](./test/subpage2.html)\n- [Sub Page ' \ '3](./test/subpage3.html)\n' assert result_menu == page.generate_content_menu('nested')
def test_set_css_path_with_no_debug(): page = elements.Page('test', 'Test') page.set_css_path() assert page.css_path == '/main.min.css' sub_page = elements.SubPage('test', 'Test') sub_page.set_css_path() assert sub_page.css_path == '/main.min.css' unlinked_page = elements.UnlinkedPage('test', 'Test', ['path', 'to', 'page']) unlinked_page.set_css_path() assert unlinked_page.css_path == '/main.min.css'
def test_website_with_no_defaults(): pages = [elements.Page('Test', 'test')] website = elements.Website({ 'root_dir': 'test_root_dir', 'project_name': 'test_project_name', 'debug': True, 'url_style': 'nested', 'templates_dir': 'test_templates_dir', 'markdown_dir': 'test_markdown_dir', 'markdown_extensions': ['test_markdown_extension'], 'site_dir': 'test_site_dir', 'site_title': 'test_site_title', 'site_subtitle': 'test_site_subtitle', 'description': 'test description', 'author': 'Test Author', 'keywords': 'test keyword', 'pages': pages }) # Test non-optional settings assert website.root_dir == 'test_root_dir' assert website.project_name == 'test_project_name' # Test optional settings assert website.debug is True assert website.url_style == 'nested' assert website.templates_dir == 'test_templates_dir' assert website.markdown_dir == 'test_markdown_dir' assert website.markdown_extensions == ['test_markdown_extension'] assert website.site_dir == 'test_site_dir' assert website.title == 'test_site_title' assert website.subtitle == 'test_site_subtitle' assert website.description == 'test description' assert website.author == 'Test Author' assert website.keywords == 'test keyword' assert website.pages == pages
def test_generate_empty_page(): pages = [elements.Page('Test', 'test_page')] website = elements.Website({ 'root_dir': os.path.join(os.path.dirname(os.path.abspath(__file__)), 'fixtures', 'test_project'), 'project_name': 'test_project_name', 'pages': pages }) website.generate_pages() assert os.path.exists( os.path.join(os.path.dirname(os.path.abspath(__file__)), 'fixtures', 'test_project', 'test_page.html')) os.remove( os.path.join(os.path.dirname(os.path.abspath(__file__)), 'fixtures', 'test_project', 'test_page.html'))
def test_page_title_printed_to_the_page(): pages = [elements.Page('Test', 'test_page')] website = elements.Website({ 'root_dir': os.path.join(os.path.dirname(os.path.abspath(__file__)), 'fixtures', 'test_project'), 'project_name': 'test_project_name', 'pages': pages, 'site_title': 'Site Title', }) website.generate_pages() page_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'fixtures', 'test_project', 'test_page.html') with open(page_path, 'r') as f: page_content = f.read() assert '<title>Site Title - Test</title>' in page_content os.remove(page_path)
def test_generate_page_with_markdown(): pages = [elements.Page('Test', 'test_page')] website = elements.Website({ 'root_dir': os.path.join(os.path.dirname(os.path.abspath(__file__)), 'fixtures', 'test_project'), 'project_name': 'test_project_name', 'pages': pages, 'markdown_dir': (os.path.join(os.path.dirname(os.path.abspath(__file__)), 'fixtures', 'md')), }) website.generate_pages() page_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'fixtures', 'test_project', 'test_page.html') with open(page_path, 'r') as f: page_content = f.read() assert '<h1>This is a test</h1>' in page_content assert '<p>There is nothing to see here</p>' in page_content os.remove(page_path)
def test_relative_path_from_unlinked_page_to_page_with_debug_on(): to_page = elements.Page('test 1', 'test2') from_page = elements.UnlinkedPage('test 2', 'test2', ['path', 'to', 'the', 'page']) relative_path = to_page.get_relative_path(from_page, 'flat', True) assert relative_path == '../../../../test2.html'
def test_page_with_sub_pages(): sub_page = elements.SubPage('Sub Test', 'subtest') page = elements.Page('Test', 'test', [sub_page]) assert page.title == 'Test' assert page.file_name == 'test' assert page.sub_pages == [sub_page]
def test_relative_path_from_page_to_page_with_debug_off(): from_page = elements.Page('test 1', 'test1') to_page = elements.Page('test 2', 'test2') relative_path = to_page.get_relative_path(from_page, 'flat', False) assert relative_path == '/test2'
def test_page(): page = elements.Page('Test', 'test') assert page.title == 'Test' assert page.file_name == 'test' assert page.sub_pages == []
def test_relative_path_from_page_to_page_with_debug_on(): from_page = elements.Page('test 1', 'test1') to_page = elements.Page('test 2', 'test2') relative_path = to_page.get_relative_path(from_page, 'flat', True) assert relative_path == './test2.html'
def test_page_render_html(): templates_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'fixtures') page = elements.Page('index', 'index') page.render_html({'test_content': 'This is a test.'}, templates_dir, 'flat', False) assert page.html == 'This is a test.'
def test_page_casting_to_string(): page = elements.Page('Test', 'test') assert str(page) == 'Test'
def test_relative_path_from_sub_page_to_page_with_flat_url_style_and_debug_on(): from_page = elements.SubPage('test 3', 'test3') to_page = elements.Page('test 1', 'test1') relative_path = to_page.get_relative_path(from_page, 'flat', True) assert relative_path == './test1.html'
def test_relative_path_from_subpage_to_page_with_nested_url_style_and_debug_on(): from_page = elements.SubPage('test 1', 'test2') to_page = elements.Page('test 2', 'test2') relative_path = to_page.get_relative_path(from_page, 'nested', True) assert relative_path == '../test2.html'
def test_relative_path_of_index_page_with_debug_off(): from_page = elements.SubPage('test 1', 'test2') to_page = elements.Page('Home', 'index') relative_path = to_page.get_relative_path(from_page) assert relative_path == '/'
def test_page_raises_error_if_sub_page_is_not_a_sub_page(): with pytest.raises(errors.PageError): elements.Page('Test', 'test', [elements.Page('Fail', 'fail')])
def test_relative_path_from_page_to_unlinked_page_with_debug_off(): from_page = elements.Page('test 1', 'test1') to_page = elements.UnlinkedPage('test 2', 'test2', ['path', 'to', 'page']) relative_path = to_page.get_relative_path(from_page, 'flat', False) assert relative_path == '/path/to/page/test2'
import os from zorn import elements DEBUG = True # General PROJECT_NAME = 'docs' SITE_TITLE = 'Zorn' AUTHOR = 'Daniel Matias Ferrer' # Directories ROOT_DIR = os.path.dirname(os.path.abspath(__file__)) # Navigation PAGES = [ elements.Page('Home', 'index'), ]
def test_set_css_path_of_page(): page = elements.Page('test', 'Test') page.set_css_path(True) assert page.css_path == './main.css'