From c2b6dc85289a4cd1259acf873f432fd9be974322 Mon Sep 17 00:00:00 2001 From: rnlee0054 Date: Tue, 12 May 2015 21:44:16 -0700 Subject: [PATCH] Wrote test for section/{pk}/flashcards --- flashcards/fields.py | 3 +++ flashcards/tests/test_api.py | 8 +++++++- flashcards/views.py | 13 ++++++++++--- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/flashcards/fields.py b/flashcards/fields.py index 2cd5ad5..c3b124e 100644 --- a/flashcards/fields.py +++ b/flashcards/fields.py @@ -64,6 +64,9 @@ class MaskField(models.Field): @classmethod def _varchar_parse_mask(cls, value): + if not value: + return FlashcardMask([]) + mask = [tuple(map(int, i.split('-'))) for i in value.split(',')] return FlashcardMask(mask) diff --git a/flashcards/tests/test_api.py b/flashcards/tests/test_api.py index fa82a86..93f7e6e 100644 --- a/flashcards/tests/test_api.py +++ b/flashcards/tests/test_api.py @@ -200,6 +200,8 @@ class SectionViewSetTest(APITestCase): def setUp(self): self.client.login(email='none@none.com', password='1234') self.user = User.objects.get(email='none@none.com') + flashcard = Flashcard(text="jason", section=Section.objects.get(pk=1), material_date=now(), author=self.user) + flashcard.save() def test_list_sections(self): response = self.client.get("/api/sections/", format="json") @@ -242,4 +244,8 @@ class SectionViewSetTest(APITestCase): # test dropping a section that the user is in response = self.client.post('/api/sections/%d/drop/' % section.pk) self.assertEqual(response.status_code, HTTP_204_NO_CONTENT) - self.assertFalse(self.user.sections.filter(pk=section.pk).exists()) \ No newline at end of file + self.assertFalse(self.user.sections.filter(pk=section.pk).exists()) + + def test_section_flashcards(self): + response = self.client.get('/api/sections/1/flashcards/') + self.assertEqual(response.status_code, HTTP_200_OK) diff --git a/flashcards/views.py b/flashcards/views.py index 71abfe5..0a81171 100644 --- a/flashcards/views.py +++ b/flashcards/views.py @@ -259,6 +259,15 @@ class FlashcardViewSet(GenericViewSet, CreateModelMixin, RetrieveModelMixin): serializer_class = FlashcardSerializer permission_classes = [IsAuthenticated] + # Override create in CreateModelMixin + def create(self, request, *args, **kwargs): + serializer = self.get_serializer(data=request.data) + serializer.is_valid(raise_exception=True) + serializer.validated_data['author'] = request.user + self.perform_create(serializer) + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=HTTP_201_CREATED, headers=headers) + @detail_route(methods=['post'], permission_classes=[IsAuthenticated]) def report(self, request, pk): """ @@ -285,8 +294,6 @@ class FlashcardViewSet(GenericViewSet, CreateModelMixin, RetrieveModelMixin): """ user = request.user flashcard = self.get_object() - user_card, created = UserFlashcard.objects.get_or_create(user=user, - flashcard=flashcard, - mask=flashcard.mask) + user_card, created = UserFlashcard.objects.get_or_create(user=user, flashcard=flashcard) user_card.save() return Response(status=HTTP_204_NO_CONTENT) -- 1.9.1