1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
|
#
# Copyright (C) 2010 Wikkid Developers.
#
# This software is licensed under the GNU Affero General Public License
# version 3 (see the file LICENSE).
"""Tests the breadcrumbs for the views."""
from wikkid.tests.factory import ViewTestCase
from wikkid.tests.fakes import TestRequest, TestUser
class TestBreadcrumbs(ViewTestCase):
"""The breadcrumbs lead the user back home."""
# Don't test the breadcrumbs for the root object directly here as it will
# redirect to Home. TODO: add a test browser test for this.
def setUp(self):
super(TestBreadcrumbs, self).setUp()
self.user = TestUser('test@example.com', 'Test User')
self.request = TestRequest()
def assertBreadcrumbs(self, view, expected):
"""Make sure the breadcrumbs from view are the expected ones."""
crumbs = [(crumb.title, crumb.path) for crumb in view.breadcrumbs]
self.assertEqual(expected, crumbs)
def test_home_missing(self):
# If the Home page is selected, but there is no content, the
# breadcrumb is still Home.
factory = self.make_factory()
view = self.get_view(factory, '/Home')
self.assertBreadcrumbs(
view,
[('Home', '/Home')])
def test_page_missing(self):
# If the page is at the root of the tree, but isn't home, then the
# first breadcrumb is home, and the second is the page.
factory = self.make_factory()
view = self.get_view(factory, '/SamplePage')
self.assertBreadcrumbs(
view,
[('Home', '/Home'),
('Sample Page', '/SamplePage')])
def test_nested_page_missing(self):
# If the Home page is selected, but there is no content, the
# breadcrumb is still Home.
factory = self.make_factory()
view = self.get_view(factory, '/SamplePage/SubPage/Next')
self.assertBreadcrumbs(
view,
[('Home', '/Home'),
('Sample Page', '/SamplePage'),
('Sub Page', '/SamplePage/SubPage'),
('Next', '/SamplePage/SubPage/Next')])
def test_source_file_missing(self):
# If a non-wiki style name is selected, the breadcrumbs are as a wiki
# page.
factory = self.make_factory()
view = self.get_view(factory, '/wikkid/views/base.py')
self.assertBreadcrumbs(
view,
[('Home', '/Home'),
('wikkid', '/wikkid'),
('views', '/wikkid/views'),
('base.py', '/wikkid/views/base.py')])
def test_source_file_existing(self):
# If the Home page is selected, but there is no content, the
# breadcrumb is still Home.
factory = self.make_factory([
('wikkid/views/base.py', 'A python file'),
])
view = self.get_view(factory, '/wikkid/views/base.py')
self.assertBreadcrumbs(
view,
[('Home', '/Home'),
('wiki root', '/+listing'),
('wikkid', '/wikkid/+listing'),
('views', '/wikkid/views/+listing'),
('base.py', '/wikkid/views/base.py')])
def test_directory_breadcrumbs_root(self):
# Directory breadcrumbs start with Home, and then list the
# directories, where the urls for the directories are the listing
# urls.
factory = self.make_factory()
view = self.get_view(factory, '/', 'listing')
self.assertBreadcrumbs(
view,
[('Home', '/Home'),
('wiki root', '/+listing')])
def test_directory_breadcrumbs_nested(self):
# For each directory after the root, a listing crumb is added.
# Names are not wiki expanded.
factory = self.make_factory([
('SomePage/SubPage/Nested.txt', 'some text')])
view = self.get_view(factory, '/SomePage/SubPage', 'listing')
self.assertBreadcrumbs(
view,
[('Home', '/Home'),
('wiki root', '/+listing'),
('SomePage', '/SomePage/+listing'),
('SubPage', '/SomePage/SubPage')])
def test_directory_breadcrumbs_nested_with_script_name(self):
# For each directory after the root, a listing crumb is added.
# Names are not wiki expanded.
factory = self.make_factory([
('SomePage/SubPage/Nested.txt', 'some text')])
view = self.get_view(
factory, '/SomePage/SubPage', 'listing', '/p/wiki')
self.assertBreadcrumbs(
view,
[('Home', '/p/wiki/Home'),
('wiki root', '/p/wiki/+listing'),
('SomePage', '/p/wiki/SomePage/+listing'),
('SubPage', '/p/wiki/SomePage/SubPage')])
|