Skip to content

Commit

Permalink
Fixed tests
Browse files Browse the repository at this point in the history
  • Loading branch information
siddnikh committed Jul 7, 2023
1 parent f561651 commit 602203e
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 24 deletions.
4 changes: 2 additions & 2 deletions care/facility/api/serializers/bed.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down
24 changes: 15 additions & 9 deletions care/facility/api/viewsets/bed.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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 (
Expand Down Expand Up @@ -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
Expand Down
21 changes: 8 additions & 13 deletions care/facility/tests/test_bed_create.py
Original file line number Diff line number Diff line change
@@ -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()
Expand All @@ -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()
Expand All @@ -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)
self.assertIs(response.status_code, status.HTTP_201_CREATED)

0 comments on commit 602203e

Please sign in to comment.