From 602203ea8de7c01b02ff4b004d7613e981374886 Mon Sep 17 00:00:00 2001 From: siddnikh Date: Sat, 8 Jul 2023 00:01:34 +0530 Subject: [PATCH] Fixed tests --- care/facility/api/serializers/bed.py | 4 ++-- care/facility/api/viewsets/bed.py | 24 +++++++++++++++--------- care/facility/tests/test_bed_create.py | 21 ++++++++------------- 3 files changed, 25 insertions(+), 24 deletions(-) diff --git a/care/facility/api/serializers/bed.py b/care/facility/api/serializers/bed.py index c8210dde36..65ac3ac339 100644 --- a/care/facility/api/serializers/bed.py +++ b/care/facility/api/serializers/bed.py @@ -2,10 +2,10 @@ from rest_framework.exceptions import ValidationError from rest_framework.serializers import ( BooleanField, + IntegerField, ModelSerializer, SerializerMethodField, UUIDField, - IntegerField ) from care.facility.api.serializers import TIMESTAMP_FIELDS @@ -32,7 +32,7 @@ class BedSerializer(ModelSerializer): location = UUIDField(write_only=True, required=True) facility = UUIDField(write_only=True, required=True) - number_of_beds = IntegerField(required=False, default=1) + number_of_beds = IntegerField(required=False, default=1, write_only=True) class Meta: model = Bed diff --git a/care/facility/api/viewsets/bed.py b/care/facility/api/viewsets/bed.py index dfd8868681..9dae9176e3 100644 --- a/care/facility/api/viewsets/bed.py +++ b/care/facility/api/viewsets/bed.py @@ -4,7 +4,6 @@ from drf_spectacular.utils import extend_schema, extend_schema_view from rest_framework import filters as drf_filters from rest_framework import status -from rest_framework.response import Response from rest_framework.exceptions import PermissionDenied from rest_framework.exceptions import ValidationError as DRFValidationError from rest_framework.fields import get_error_detail @@ -16,6 +15,7 @@ UpdateModelMixin, ) from rest_framework.permissions import IsAuthenticated +from rest_framework.response import Response from rest_framework.viewsets import GenericViewSet from care.facility.api.serializers.bed import ( @@ -62,19 +62,25 @@ class BedViewSet( def create(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) - number_of_beds = serializer.validated_data.get('number_of_beds') - + validated_data = serializer.validated_data + number_of_beds = validated_data.get("number_of_beds") + del validated_data["number_of_beds"] # Bulk creating n number of beds if number_of_beds > 1: - data = [serializer.validated_data] * number_of_beds - for i, d in enumerate(data): - d['name'] = d['name'] + f' - {i}' - res = Bed.objects.bulk_create(data) + objs = [] + for i in range(1, number_of_beds + 1): + temp_data = dict(validated_data.copy()) + temp_data["name"] = temp_data["name"] + f" - {i}" + objs.append(Bed(**temp_data)) + + res = Bed.objects.bulk_create(objs=objs, batch_size=number_of_beds) return Response(res, status=status.HTTP_201_CREATED) - + self.perform_create(serializer) headers = self.get_success_headers(serializer.data) - return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers) + return Response( + serializer.data, status=status.HTTP_201_CREATED, headers=headers + ) def get_queryset(self): user = self.request.user diff --git a/care/facility/tests/test_bed_create.py b/care/facility/tests/test_bed_create.py index 38f864c380..3b56f3ba35 100644 --- a/care/facility/tests/test_bed_create.py +++ b/care/facility/tests/test_bed_create.py @@ -1,12 +1,13 @@ -from care.utils.tests.test_base import TestBase from rest_framework import status +from rest_framework.test import APIRequestFactory, APITestCase + from care.facility.api.viewsets.bed import BedViewSet from care.facility.models import AssetLocation from care.facility.tests.mixins import TestClassMixin -from rest_framework.test import APIRequestFactory, APITestCase +from care.utils.tests.test_base import TestBase -class SingleBedTest(TestBase, TestClassMixin, APITestCase): +class SingleBedTest(TestBase, TestClassMixin, APITestCase): def setUp(self): self.factory = APIRequestFactory() state = self.create_state() @@ -28,15 +29,12 @@ def test_create(self): "number_of_beds": 1, } response = self.new_request( - ("/api/v1/bed/", sample_data, "json"), - {"post": "create"}, - BedViewSet, - user + ("/api/v1/bed/", sample_data, "json"), {"post": "create"}, BedViewSet, user ) self.assertIs(response.status_code, status.HTTP_201_CREATED) -class MultipleBedTest(TestBase, TestClassMixin, APITestCase): +class MultipleBedTest(TestBase, TestClassMixin, APITestCase): def setUp(self): self.factory = APIRequestFactory() state = self.create_state() @@ -58,9 +56,6 @@ def test_create(self): "number_of_beds": 5, } response = self.new_request( - ("/api/v1/bed/", sample_data, "json"), - {"post": "create"}, - BedViewSet, - user + ("/api/v1/bed/", sample_data, "json"), {"post": "create"}, BedViewSet, user ) - self.assertIs(response.status_code, status.HTTP_201_CREATED) \ No newline at end of file + self.assertIs(response.status_code, status.HTTP_201_CREATED)