~azzar1/unity/add-show-desktop-key

« back to all changes in this revision

Viewing changes to ivle/webapp/urls/test_router.py

  • Committer: William Grant
  • Date: 2009-07-02 09:52:17 UTC
  • mto: (1294.4.2 ui-the-third)
  • mto: This revision was merged to the branch mainline in revision 1353.
  • Revision ID: grantw@unimelb.edu.au-20090702095217-c859e84skcvubqnw
Refactor resolution tests too.

Show diffs side-by-side

added added

removed removed

Lines of Context:
94
94
                                         2009, 1))
95
95
 
96
96
class TestResolution(BaseTest):
 
97
    def setUp(self):
 
98
        super(TestResolution, self).setUp()
 
99
        self.rtr = Router(root=self.r, viewset='browser')
 
100
        self.rtr.add_set_switch('api', 'api')
 
101
        self.rtr.add_forward(Root, None, root_to_subject, 1)
 
102
        self.rtr.add_forward(Subject, None, subject_to_offering, 2)
 
103
        self.rtr.add_view(Subject, '+index', SubjectIndex, viewset='browser')
 
104
        self.rtr.add_view(Subject, '+edit', SubjectEdit, viewset='browser')
 
105
        self.rtr.add_view(Offering, '+index', OfferingIndex, viewset='browser')
 
106
        self.rtr.add_view(Offering, '+index', OfferingAPIIndex, viewset='api')
 
107
 
97
108
    def testOneLevel(self):
98
 
        router = Router(root=self.r)
99
 
        router.add_forward(Root, None, root_to_subject, 1)
100
 
 
101
 
        assert router.resolve('/info1') == (self.r.subjects['info1'], None)
102
 
        assert router.resolve('/info3') == (self.r.subjects['info3'], None)
 
109
        # Don't test view stuff just yet.
 
110
        try:
 
111
            self.rtr.default='not+index'
 
112
            assert_equal(self.rtr.resolve('/info1'),
 
113
                         (self.r.subjects['info1'], None)
 
114
                         )
 
115
            assert_equal(self.rtr.resolve('/info3'),
 
116
                         (self.r.subjects['info3'], None)
 
117
                         )
 
118
        finally:
 
119
            self.rtr.default='+index'
103
120
 
104
121
    def testTwoLevels(self):
105
 
        router = Router(root=self.r)
106
 
        router.add_forward(Root, None, root_to_subject, 1)
107
 
        router.add_forward(Subject, None, subject_to_offering, 2)
108
 
 
109
 
        assert router.resolve('/info1/2009/1') == \
110
 
               (self.r.subjects['info1'].offerings[(2009, 1)], None)
111
 
        assert router.resolve('/info2/2008/2') == \
112
 
               (self.r.subjects['info2'].offerings[(2008, 2)], None)
 
122
        try:
 
123
            self.rtr.default='not+index'
 
124
 
 
125
            assert_equal(self.rtr.resolve('/info1/2009/1'),
 
126
                         (self.r.subjects['info1'].offerings[(2009, 1)], None)
 
127
                         )
 
128
            assert_equal(self.rtr.resolve('/info2/2008/2'),
 
129
                         (self.r.subjects['info2'].offerings[(2008, 2)], None)
 
130
                         )
 
131
        finally:
 
132
            self.rtr.default='+index'
 
133
 
 
134
    def testView(self):
 
135
        assert_equal(self.rtr.resolve('/info1/+edit'),
 
136
                     (self.r.subjects['info1'], SubjectEdit)
 
137
                     )
113
138
 
114
139
    def testDefaultView(self):
115
 
        router = Router(root=self.r, viewset='browser')
116
 
        router.add_set_switch('api', 'api')
117
 
        router.add_forward(Root, None, root_to_subject, 1)
118
 
        router.add_forward(Subject, None, subject_to_offering, 2)
119
 
        router.add_view(Subject, '+index', SubjectIndex, viewset='browser')
120
 
        router.add_view(Subject, '+edit', SubjectEdit, viewset='browser')
121
 
        router.add_view(Offering, '+index', OfferingIndex, viewset='browser')
122
 
        router.add_view(Offering, '+index', OfferingAPIIndex, viewset='api')
123
 
 
124
 
        assert router.resolve('/info1') == \
125
 
               (self.r.subjects['info1'], SubjectIndex)
126
 
 
127
 
        assert router.resolve('/info1/+edit') == \
128
 
               (self.r.subjects['info1'], SubjectEdit)
129
 
 
130
 
        try:
131
 
            router.resolve('/api/info1/+edit')
132
 
        except NotFound:
133
 
            pass
134
 
        else:
135
 
            raise AssertionError("returned view from wrong viewset")
136
 
 
137
 
        assert router.resolve('/info1/2009/1') == \
 
140
        assert_equal(self.rtr.resolve('/info1'),
 
141
                     (self.r.subjects['info1'], SubjectIndex)
 
142
                     )
 
143
 
 
144
    @raises(NotFound)
 
145
    def testViewSetSeparation(self):
 
146
        self.rtr.resolve('/api/info1/+edit')
 
147
 
 
148
    def testAlternateViewSetWithDefault(self):
 
149
        assert_equal(self.rtr.resolve('/info1/2009/1'),
138
150
               (self.r.subjects['info1'].offerings[(2009, 1)], OfferingIndex)
 
151
               )
139
152
 
140
 
        assert router.resolve('/api/info1/2009/1') == \
 
153
        assert_equal(self.rtr.resolve('/api/info1/2009/1'),
141
154
               (self.r.subjects['info1'].offerings[(2009, 1)], OfferingAPIIndex)
142
 
 
143
 
    def testNoDefaultView(self):
144
 
        router = Router(root=self.r)
145
 
        router.add_forward(Root, None, root_to_subject, 1)
146
 
        router.add_view(Subject, '+edit', SubjectEdit)
147
 
 
148
 
        assert router.resolve('/info1/+edit') == \
149
 
               (self.r.subjects['info1'], SubjectEdit)
150
 
 
151
 
        assert router.resolve('/info1') == (self.r.subjects['info1'], None)
152
 
 
153
 
    def testNoRoutesOrViews(self):
154
 
        router = Router(root=self.r)
155
 
        assert router.resolve('/blah') == (self.r, None)
 
155
               )
156
156
 
157
157
class TestGeneration(BaseTest):
158
158
    def setUp(self):