def put(self, request, pk): book = get_object_or_404(erp_models.Book, pk=pk) serializer = erp_serializers.BookSerializer(book, data=request.data, partial=True) if serializer.is_valid(raise_exception=True): serializer.save() return Response(serializer.data) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def test_deserialize_invalid_book_with_invalid_choice(self): book = { 'generic_book_id': self.gbook.id, 'status': 'FREE', } book_ser = erp_serializers.BookSerializer(data=book) with self.assertRaises(ValidationError): book_ser.is_valid(raise_exception=True) self.assertEqual( book_ser.errors, {'status': [ErrorDetail(string='"FREE" is not a valid choice.', code='invalid_choice')]} )
def test_deserialize_valid_book(self): """A serializer raises the `required` error only if 1) the field is required by the model, 2) the field received the DRF argument `required=True` """ book = { 'generic_book_id': self.gbook.id, } book_ser = erp_serializers.BookSerializer(data=book) book_ser.is_valid(raise_exception=True) book = book_ser.save() self.assertTrue(isinstance(book, erp_models.Book)) self.assertEqual(book.status, 'MAINTENANCE') self.assertEqual(book.generic_book.title, 'Zero to One')
def get(self, request, pk): book = get_object_or_404(erp_models.Book, pk=pk) serializer = erp_serializers.BookSerializer(book) return Response(serializer.data)
def post(self, request): serializer = erp_serializers.BookSerializer(data=request.data) if serializer.is_valid(raise_exception=True): serializer.save() return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def get(self, request): books = erp_models.Book.objects.all() page = self.paginate_queryset(books, request, view=self) if page is not None: serializer = erp_serializers.BookSerializer(page, many=True) return self.get_paginated_response(serializer.data)
def test_serialize_valid_book(self): book = erp_factories.AvailableBookFactory() book_ser = erp_serializers.BookSerializer(book) self.assertTrue('joined_library_on' in book_ser.data.keys()) self.assertEqual(book_ser.data['status'], 'AVAILABLE')