File: test_breadcrumbs.py

package info (click to toggle)
python-wikkid 0.5-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 728 kB
  • sloc: python: 3,051; makefile: 12
file content (123 lines) | stat: -rw-r--r-- 4,750 bytes parent folder | download | duplicates (2)
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')])