diff --git a/tests/interactive_doc/__init__.py b/tests/interactive_doc/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/tests/interactive_doc/data.py b/tests/interactive_doc/data.py
new file mode 100644
index 000000000..e8b26a672
--- /dev/null
+++ b/tests/interactive_doc/data.py
@@ -0,0 +1,18 @@
+from django.db import models
+from rest_framework import serializers, viewsets
+
+
+class DummyModel(models.Model):
+ pass
+
+
+class DummySerializer(serializers.ModelSerializer):
+
+ class Meta:
+ model = DummyModel
+ fields = ('id', )
+
+
+class DummyViewSet(viewsets.ModelViewSet):
+ serializer_class = DummySerializer
+ queryset = DummyModel.objects.all()
diff --git a/tests/interactive_doc/test_recursive_url.py b/tests/interactive_doc/test_recursive_url.py
new file mode 100644
index 000000000..67055c78a
--- /dev/null
+++ b/tests/interactive_doc/test_recursive_url.py
@@ -0,0 +1,38 @@
+from __future__ import unicode_literals
+
+import re
+
+from django.test import TestCase, override_settings
+
+from rest_framework.test import APIClient
+
+
+@override_settings(ROOT_URLCONF='tests.interactive_doc.urls')
+class TestRecursiveUrlViewSets(TestCase):
+
+ def setUp(self):
+ client = APIClient()
+ response = client.get('/docs/')
+ self.content = response.content.decode('utf-8')
+
+ def test_menu(self):
+ self.assertTrue(
+ re.search('a href="#.*not_dummies\-list">', self.content),
+ 'unable to find menu item for not_dummies'
+ )
+ for model_type in ['aaaa', 'bbbb']:
+ self.assertTrue(
+ re.search('a href="#.*{}s\-list">'.format(model_type), self.content),
+ 'unable to find menu item for dummy/{}'.format(model_type)
+ )
+
+ def test_documentation(self):
+ self.assertTrue(
+ re.search('h2.*>not_dummies {}s