          initkwargs = match.func.initkwargs
  
          assert initkwargs['suffix'] == 'List'
  
      def test_basename(self):
          match = resolve('/example/notes/')
          initkwargs = match.func.initkwargs
  
          assert initkwargs['basename'] == 'routertestmodel'
 
</s> remove         @detail_route(methods=['options', 'get'])
 </s> add         @action(methods=['options', 'get'], detail=True) </s> remove                     description=desc
 </s> add                     description=desc_1 </s> remove         return ret
 </s> add         return routes

    def _get_dynamic_route(self, route, action):
        initkwargs = route.initkwargs.copy()
        initkwargs.update(action.kwargs)

        url_path = escape_curly_brackets(action.url_path)

        return Route(
            url=route.url.replace('{url_path}', url_path),
            mapping={http_method: action.__name__
                     for http_method in action.bind_to_methods},
            name=route.name.replace('{url_name}', action.url_name),
            detail=route.detail,
            initkwargs=initkwargs,
        ) </s> remove     @list_route(methods=['post', 'get'], serializer_class=EmptySerializer)
 </s> add     @action(methods=['post', 'get'], detail=False, serializer_class=EmptySerializer)
    def test_detail(self):
        match = resolve('/example/notes/')
        initkwargs = match.func.initkwargs

        assert not initkwargs['detail']

          initkwargs = match.func.initkwargs
  
          assert initkwargs['suffix'] == 'List'
  
    def test_detail(self):
        match = resolve('/example/notes/')
        initkwargs = match.func.initkwargs

        assert not initkwargs['detail']

      def test_basename(self):
          match = resolve('/example/notes/')
          initkwargs = match.func.initkwargs
  
          assert initkwargs['basename'] == 'routertestmodel'
keep keep keep add keep keep keep keep keep
 Rework dynamic list/detail actions (#5705)

* Merge list/detail route decorators into 'action'

* Merge dynamic routes, add 'detail' attribute

* Add 'ViewSet.get_extra_actions()'

* Refactor dynamic route checking & collection

* Refactor dynamic route generation

* Add 'ViewSet.detail' initkwarg

* Fixup schema test

* Add release notes for dynamic action changes

* Replace list/detail route decorators in tests

* Convert tabs to spaces in router docs

* Update docs

* Make 'detail' a required argument of 'action'

* Improve router docs 
tests/test_routers.py