def test_reverse_path_args(self): """ Helper to return path based on target url by namespace and/or args. """ result = reverse_path_args('ct:ul_teach', '/ct/teach/courses/21/units/33/', ul_id=2) self.assertEqual(result, '/ct/teach/courses/21/units/33/lessons/2/') unit_lesson_object = Mock() unit_lesson_object.pk = 2 result = reverse_path_args('ct:ul_teach', '/ct/teach/courses/21/units/33/', unitLesson=unit_lesson_object) self.assertEqual(result, '/ct/teach/courses/21/units/33/lessons/2/')
def get_path(self, state, request, defaultURL=None, **kwargs): """ Get URL for this page. """ if self.path and self.path.startswith('fsm:fsm_'): # serve fsm node view return reverse(self.path, kwargs=dict(node_id=self.pk)) try: func = self._plugin.get_path except AttributeError: # use self.path with clever reverse() if not self.path: # just use default path if defaultURL: return defaultURL else: raise ValueError('node has no path, and no defaultURL') kwargs.update(state.get_all_state_data()) # pass state data too return reverse_path_args(self.path, request.path, **kwargs) else: # use the plugin return func(self, state, request, defaultURL=defaultURL, **kwargs)
def test_ul_id(self): 'test handling of ID kwargs' url = ct_util.reverse_path_args( 'ct:ul_teach', '/ct/teach/courses/21/units/33/', ul_id=2 ) self.assertEqual(url, reverse('ct:ul_teach', args=(21, 33, 2)))
def test_ul_teach(self): 'check proper extraction of args from path' url = ct_util.reverse_path_args( 'ct:ul_teach', '/ct/teach/courses/21/units/33/errors/2/' ) self.assertEqual(url, reverse('ct:ul_teach', args=(21, 33, 2)))
def test_home(self): 'test trimming of args not needed for target' url = ct_util.reverse_path_args( 'ct:home', '/ct/teach/courses/21/units/33/errors/2/' ) self.assertEqual(url, reverse('ct:home'))
def test_ul_id(self): 'test handling of ID kwargs' url = ct_util.reverse_path_args('ct:ul_teach', '/ct/teach/courses/21/units/33/', ul_id=2) self.assertEqual(url, reverse('ct:ul_teach', args=(21, 33, 2)))
def test_ul_teach(self): 'check proper extraction of args from path' url = ct_util.reverse_path_args( 'ct:ul_teach', '/ct/teach/courses/21/units/33/errors/2/') self.assertEqual(url, reverse('ct:ul_teach', args=(21, 33, 2)))
def test_home(self): 'test trimming of args not needed for target' url = ct_util.reverse_path_args( 'ct:home', '/ct/teach/courses/21/units/33/errors/2/') self.assertEqual(url, reverse('ct:home'))