Skip to content
This repository has been archived by the owner on Feb 13, 2019. It is now read-only.

Commit

Permalink
merging
Browse files Browse the repository at this point in the history
  • Loading branch information
Chris Sinchok committed Feb 16, 2015
2 parents 4f80abd + e7b063b commit 21f18da
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 0 deletions.
21 changes: 21 additions & 0 deletions bulbs/api/views.py
Expand Up @@ -436,10 +436,31 @@ def retrieve(self, request, *args, **kwargs):
return Response(data)


class DoctypeViewSet(viewsets.ViewSet):
"""Searches doctypes of a model."""
model = Content

def list(self, request):
"""Search the doctypes for this model."""
query = request.QUERY_PARAMS.get("search", "")
results = []
doctypes = self.model.get_doctypes()
for doctype, klass in doctypes.items():
name = klass._meta.verbose_name
if query.lower() in name.lower():
results.append(dict(
name=name,
doctype=doctype
))
results.sort(key=lambda x: x["name"])
return Response(dict(results=results))


# api router for aforementioned/defined viewsets
# note: me view is registered in urls.py
api_v1_router = routers.DefaultRouter()
api_v1_router.register(r"content", ContentViewSet, base_name="content")
api_v1_router.register(r"doctype", DoctypeViewSet, base_name="doctype")
api_v1_router.register(r"tag", TagViewSet, base_name="tag")
api_v1_router.register(r"log", LogEntryViewSet, base_name="logentry")
api_v1_router.register(r"author", AuthorViewSet, base_name="author")
Expand Down
17 changes: 17 additions & 0 deletions tests/api/test_content_api.py
Expand Up @@ -556,3 +556,20 @@ def test_list_tokens(self):
self.assertEqual(json_response[0]["url_uuid"], info_1.url_uuid)
self.assertEqual(json_response[1]["id"], info_2.id)
self.assertEqual(json_response[2]["id"], info_3.id)


class TestDoctypeSearchAPI(BaseAPITestCase):
def test_search(self):
url = reverse("doctype-list")
# TestContentObj
r = self.api_client.get(url, dict(search="two"), format="json")
self.assertEqual(r.status_code, 200)
self.assertEqual(len(r.data["results"]), 1)
# Content, TestContentObj, TestContentObjTwo, TestContentDetailImage
r = self.api_client.get(url, dict(search="conte"), format="json")
self.assertEqual(r.status_code, 200)
self.assertEqual(len(r.data["results"]), 4)
# no query gives us all types
r = self.api_client.get(url, format="json")
self.assertEqual(r.status_code, 200)
self.assertEqual(len(r.data["results"]), 4)
3 changes: 3 additions & 0 deletions tests/utils.py
Expand Up @@ -7,6 +7,7 @@
from django.contrib.auth import get_user_model
from django.contrib.auth.models import Permission
from model_mommy import mommy
from rest_framework.test import APIClient

from bulbs.content.models import Content

Expand Down Expand Up @@ -62,6 +63,8 @@ def setUp(self):
admin = self.admin = User.objects.create_user("admin", "tech@theonion.com", "secret")
admin.is_staff = True
admin.save()
self.api_client = APIClient()
self.api_client.force_authenticate(user=admin)
# reverse("content-detail")

def give_permissions(self):
Expand Down

0 comments on commit 21f18da

Please sign in to comment.