From fbe490548275996e1d565a63472f94d4ed62ad57 Mon Sep 17 00:00:00 2001 From: jungwinter Date: Tue, 14 Aug 2018 15:49:59 +0900 Subject: [PATCH 1/2] Test search features --- api/chat/tests/test_views.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/api/chat/tests/test_views.py b/api/chat/tests/test_views.py index 64eb076..4b42acb 100644 --- a/api/chat/tests/test_views.py +++ b/api/chat/tests/test_views.py @@ -147,3 +147,29 @@ def test_our_messages(self, room, conversation): res = self.client.get('/v1/rooms/1/messages/') msgs_of_002 = res.data assert msgs_of_001 == msgs_of_002 + + def test_one(self, conversation): + self.login('001', '001') + res = self.client.get('/v1/rooms/1/messages/1/') + assert res.data['id'] == 1 + assert res.data['sender'] == 1 + assert res.data['content'] == 'hello' + + def test_search(self, conversation): + self.login('001', '001') + res = self.client.get('/v1/rooms/1/messages/?q=you') + assert len(res.data) == 2 + assert res.data[0]['content'] == 'how are you?' + assert res.data[1]['content'] == 'see you later' + + def test_search_empty(self, conversation): + self.login('001', '001') + res = self.client.get('/v1/rooms/1/messages/?q=') + assert len(res.data) == 6 + + def test_search_only_in_list(self, conversation): + self.login('001', '001') + res = self.client.get('/v1/rooms/1/messages/1/?q=you') + assert res.data['id'] == 1 + assert res.data['sender'] == 1 + assert res.data['content'] == 'hello' From 2e55cfbc3e0047be7b8083ff32b1f2f694c80eaa Mon Sep 17 00:00:00 2001 From: jungwinter Date: Tue, 14 Aug 2018 15:50:41 +0900 Subject: [PATCH 2/2] Implement search feature in list view --- api/chat/views.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/api/chat/views.py b/api/chat/views.py index 0298d4d..e8af27e 100644 --- a/api/chat/views.py +++ b/api/chat/views.py @@ -40,4 +40,9 @@ def get_queryset(self): user = self.request.user if not user.room_set.filter(id=room_id): raise Http404 - return super().get_queryset() + + queryset = super().get_queryset() + query = self.request.GET.get('q') + if query and self.action == 'list': + queryset = queryset.filter(content__icontains=query) + return queryset