          assert result is None
  
  
  class AdminRendererTests(TestCase):
  
      def setUp(self):
          self.renderer = AdminRenderer()
  
 
</s> remove class BrowsableAPIRendererTests(TestCase):
 </s> add class BrowsableAPIRendererTests(URLPatternsTestCase):
    class ExampleViewSet(ViewSet):
        def list(self, request):
            return Response()

        @action(detail=False, name="Extra list action")
        def list_action(self, request):
            raise NotImplementedError

    router = SimpleRouter()
    router.register('examples', ExampleViewSet, base_name='example')
    urlpatterns = [url(r'^api/', include(router.urls))] </s> remove class TestSimpleRouter(TestCase):
 </s> add  </s> remove     @action(detail=True)
    def link2(self, request, *args, **kwargs):
        return Response({'method': 'link2'})
 </s> add 
    def test_extra_actions_dropdown(self):
        resp = self.client.get('/api/examples/', HTTP_ACCEPT='text/html')
        assert 'id="extra-actions-menu"' in resp.content.decode('utf-8')
        assert '/api/examples/list_action/' in resp.content.decode('utf-8')
        assert '>Extra list action<' in resp.content.decode('utf-8')

          assert result is None
  
    def test_extra_actions_dropdown(self):
        resp = self.client.get('/api/examples/', HTTP_ACCEPT='text/html')
        assert 'id="extra-actions-menu"' in resp.content.decode('utf-8')
        assert '/api/examples/list_action/' in resp.content.decode('utf-8')
        assert '>Extra list action<' in resp.content.decode('utf-8')

  
  class AdminRendererTests(TestCase):
  
      def setUp(self):
          self.renderer = AdminRenderer()
  
keep add keep keep keep keep keep keep
 Improvements to ViewSet extra actions (#5605)

* View suffix already set by initializer

* Add 'name' and 'description' attributes to ViewSet

ViewSets may now provide their `name` and `description` attributes
directly, instead of relying on view introspection to derive them.
These attributes may also be provided with the view's initkwargs.

The ViewSet `name` and `suffix` initkwargs are mutually exclusive.

The `action` decorator now provides the `name` and `description` to
the view's initkwargs. By default, these values are derived from the
method name and its docstring. The `name` may be overridden by providing
it as an argument to the decorator.

The `get_view_name` and `get_view_description` hooks now provide the
view instance to the handler, instead of the view class. The default
implementations of these handlers now respect the `name`/`description`.

* Add 'extra actions' to ViewSet & browsable APIs

* Update simple router tests

Removed old test logic around link/action decorators from `v2.3`. Also
simplified the test by making the results explicit instead of computed.

* Add method mapping to ViewSet actions

* Document extra action method mapping 
tests/test_renderers.py