diff options
| author | Ryan Kaskel | 2013-05-18 14:17:50 +0100 | 
|---|---|---|
| committer | Ryan Kaskel | 2013-05-18 14:17:50 +0100 | 
| commit | 22874e441dd71101296a656e753bfc17907b5cca (patch) | |
| tree | 6ebf7971e5bf8d40c6d60fa857cbe0c04fc91372 /rest_framework/tests/routers.py | |
| parent | b5640bb77843c50f42a649982b9b9592113c6f59 (diff) | |
| parent | a0e3c44c99a61a6dc878308bdf0890fbb10c41e4 (diff) | |
| download | django-rest-framework-22874e441dd71101296a656e753bfc17907b5cca.tar.bz2 | |
Merge latest changes from master.
Diffstat (limited to 'rest_framework/tests/routers.py')
| -rw-r--r-- | rest_framework/tests/routers.py | 55 | 
1 files changed, 55 insertions, 0 deletions
diff --git a/rest_framework/tests/routers.py b/rest_framework/tests/routers.py new file mode 100644 index 00000000..4e4765cb --- /dev/null +++ b/rest_framework/tests/routers.py @@ -0,0 +1,55 @@ +from __future__ import unicode_literals +from django.test import TestCase +from django.test.client import RequestFactory +from rest_framework import status +from rest_framework.response import Response +from rest_framework import viewsets +from rest_framework.decorators import link, action +from rest_framework.routers import SimpleRouter +import copy + +factory = RequestFactory() + + +class BasicViewSet(viewsets.ViewSet): +    def list(self, request, *args, **kwargs): +        return Response({'method': 'list'}) + +    @action() +    def action1(self, request, *args, **kwargs): +        return Response({'method': 'action1'}) + +    @action() +    def action2(self, request, *args, **kwargs): +        return Response({'method': 'action2'}) + +    @link() +    def link1(self, request, *args, **kwargs): +        return Response({'method': 'link1'}) + +    @link() +    def link2(self, request, *args, **kwargs): +        return Response({'method': 'link2'}) + + +class TestSimpleRouter(TestCase): +    def setUp(self): +        self.router = SimpleRouter() + +    def test_link_and_action_decorator(self): +        routes = self.router.get_routes(BasicViewSet) +        decorator_routes = routes[2:] +        # Make sure all these endpoints exist and none have been clobbered +        for i, endpoint in enumerate(['action1', 'action2', 'link1', 'link2']): +            route = decorator_routes[i] +            # check url listing +            self.assertEqual(route.url, +                             '^{{prefix}}/{{lookup}}/{0}/$'.format(endpoint)) +            # check method to function mapping +            if endpoint.startswith('action'): +                method_map = 'post' +            else: +                method_map = 'get' +            self.assertEqual(route.mapping[method_map], endpoint) + +  | 
