96
96
class TestResolution(BaseTest):
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')
97
108
def testOneLevel(self):
98
router = Router(root=self.r)
99
router.add_forward(Root, None, root_to_subject, 1)
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.
111
self.rtr.default='not+index'
112
assert_equal(self.rtr.resolve('/info1'),
113
(self.r.subjects['info1'], None)
115
assert_equal(self.rtr.resolve('/info3'),
116
(self.r.subjects['info3'], None)
119
self.rtr.default='+index'
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)
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)
123
self.rtr.default='not+index'
125
assert_equal(self.rtr.resolve('/info1/2009/1'),
126
(self.r.subjects['info1'].offerings[(2009, 1)], None)
128
assert_equal(self.rtr.resolve('/info2/2008/2'),
129
(self.r.subjects['info2'].offerings[(2008, 2)], None)
132
self.rtr.default='+index'
135
assert_equal(self.rtr.resolve('/info1/+edit'),
136
(self.r.subjects['info1'], SubjectEdit)
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')
124
assert router.resolve('/info1') == \
125
(self.r.subjects['info1'], SubjectIndex)
127
assert router.resolve('/info1/+edit') == \
128
(self.r.subjects['info1'], SubjectEdit)
131
router.resolve('/api/info1/+edit')
135
raise AssertionError("returned view from wrong viewset")
137
assert router.resolve('/info1/2009/1') == \
140
assert_equal(self.rtr.resolve('/info1'),
141
(self.r.subjects['info1'], SubjectIndex)
145
def testViewSetSeparation(self):
146
self.rtr.resolve('/api/info1/+edit')
148
def testAlternateViewSetWithDefault(self):
149
assert_equal(self.rtr.resolve('/info1/2009/1'),
138
150
(self.r.subjects['info1'].offerings[(2009, 1)], OfferingIndex)
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)
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)
148
assert router.resolve('/info1/+edit') == \
149
(self.r.subjects['info1'], SubjectEdit)
151
assert router.resolve('/info1') == (self.r.subjects['info1'], None)
153
def testNoRoutesOrViews(self):
154
router = Router(root=self.r)
155
assert router.resolve('/blah') == (self.r, None)
157
157
class TestGeneration(BaseTest):