Source code for apps.api.tests.test_areas

from rest_framework.test import APITestCase
from rest_framework import status

from apps.core.models.area import Area


[docs]class DeviceTestCase(APITestCase):
[docs] def setUp(self): self.cpu_parent_area = Area.objects.create( office_name="CPU", ) self.aula_parent_area = Area.objects.create( office_name="Aula", ) self.lvt_parent_area = Area.objects.create( office_name="LVT", )
[docs] def test_add_new_area(self): data = { "office_name": "CPU-A", "parent_area": self.cpu_parent_area.id, } response = self.client.post(f"/api/areas", data=data, format="json") self.assertEqual(response.status_code, status.HTTP_201_CREATED) self.assertEqual(response.data["office_name"], "CPU-A") self.assertEqual(response.data["parent_area"], self.cpu_parent_area.id) data = { "office_name": "CPU-A", "parent_area": self.cpu_parent_area.id, } response = self.client.post(f"/api/areas", data=data, format="json") # cannot add new area if the name already exists in db self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
[docs] def test_get_list_of_areas(self): response = self.client.get(f"/api/areas", format="json") self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(len(response.data), 3)
[docs] def test_get_specific_area(self): response = self.client.get( f"/api/areas/{self.cpu_parent_area.id}", format="json" ) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.data["office_name"], "CPU") random_id = "a1113288-2c73-488d-baff-df53dec2c6b3" response = self.client.get(f"/api/areas/{random_id}", format="json") self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
[docs] def test_update_specific_area(self): data = { "office_name": "test-area", } test_area = self.client.post(f"/api/areas", data=data, format="json") self.assertEqual(test_area.status_code, status.HTTP_201_CREATED) self.assertEqual(test_area.data["parent_area"], None) data = { "office_name": "test-area-new-name", "parent_area": self.aula_parent_area.id, } response = self.client.put( f"/api/areas/{test_area.data['id']}", data=data, format="json" ) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.data["parent_area"], self.aula_parent_area.id) self.assertEqual(response.data["office_name"], "test-area-new-name") data = {"office_name": "CPU", "parent_area": self.aula_parent_area.id} # cannot update the name if already exists response = self.client.put( f"/api/areas/{test_area.data['id']}", data=data, format="json" ) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
[docs] def test_delete_area(self): parent_area_data = { "office_name": "PARENT_AREA", "parent_area": None } parent_area = self.client.post(f"/api/areas", data=parent_area_data, format="json") data = { "office_name": "CPU-B", "parent_area": parent_area.data['id'], } cpu_b = self.client.post(f"/api/areas", data=data, format="json") # delete parent area response = self.client.delete(f"/api/areas/{parent_area.data['id']}") self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) response = self.client.get(f"/api/areas/{parent_area.data['id']}") self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
# check if children was deleted too # Cascade delete do not work with soft delete # response = self.client.get(f"/api/areas/{cpu_b.data['id']}") # self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)