def test_family_detail_serializer_update__create_children(self): data = dict(self.family_data) new_child_data = { "id": None, "first_name": "Pableaux", "last_name": "Petersaune", "role": "Child", "date_of_birth": "2020-02-06", "family": self.family, "information": {}, } data["children"].append(new_child_data) serializer = FamilyDetailSerializer(instance=self.family, data=data) self.assertTrue(serializer.is_valid()) self.assertEqual(self.family.children.count(), 2) family = serializer.save() self.assertEqual(family.children.count(), 3) new_child = family.children.order_by("-created_at").first() self.assertEqual(new_child.first_name, new_child_data["first_name"]) self.assertEqual(new_child.last_name, new_child_data["last_name"]) self.assertEqual( new_child.date_of_birth.strftime(format="%Y-%m-%d"), new_child_data["date_of_birth"], ) self.assertEqual(new_child.information, new_child_data["information"])
def test_family_detail_serializer_update__delete_children(self): data = dict(self.family_data) data["children"].pop(1) serializer = FamilyDetailSerializer(instance=self.family, data=data) self.assertTrue(serializer.is_valid()) self.assertEqual(self.family.children.count(), 2) family = serializer.save() self.assertEqual(family.children.count(), 1) self.assertEqual(family.children.first(), self.child)
def test_family_detail_serializer_update__read_only(self): # should fail data = dict(self.family_data) old_child_role = data["children"][0]["role"] old_child_family = data["children"][0]["family"] data["children"][0]["role"] = "Guest" data["children"][0]["family"] = None serializer = FamilyDetailSerializer(instance=self.family, data=data) self.assertTrue(serializer.is_valid()) family = serializer.save() self.assertEqual(family.children[0].role, old_child_role) self.assertEqual(family.children[0].family, old_child_family)
def test_family_detail_serializer_update(self): data = dict(self.family_data) data["email"] = "new_email" data["home_number"] = "new_home_number" data["preferred_comms"] = "Phone" serializer = FamilyDetailSerializer(instance=self.family, data=data) self.assertTrue(serializer.is_valid()) family = serializer.save() self.assertEqual(family.email, data["email"]) self.assertEqual(family.home_number, data["home_number"]) self.assertEqual(family.preferred_comms, data["preferred_comms"])
def test_get_family(self): url = reverse("family-detail", args=[self.family.id]) self.client.force_authenticate(self.user) response = self.client.get(url) payload = response.json() self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertNotEqual(payload, FamilySerializer(self.family).data) self.assertEqual(payload, FamilyDetailSerializer(self.family).data)
def test_family_detail_serializer_update__update_children(self): data = dict(self.family_data) new_name = "Pablo" data["children"][0]["first_name"] = new_name serializer = FamilyDetailSerializer(instance=self.family, data=data) self.assertTrue(serializer.is_valid()) family = serializer.save() self.assertEqual(family.children.first().first_name, new_name) self.assertEqual(family.children.first().last_name, self.children_data[0]["last_name"]) self.assertEqual( family.children.first().date_of_birth.strftime(format="%Y-%m-%d"), self.children_data[0]["date_of_birth"], ) self.assertEqual(family.children.first().information, self.children_data[0]["information"])
def test_get_families(self): url = reverse("family-list") self.client.force_authenticate(self.user) response = self.client.get(url) payload = response.json() self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual( payload, [ FamilySerializer(self.family).data, FamilySerializer(self.other_family).data, ], ) self.assertNotEqual( payload, [ FamilyDetailSerializer(self.family).data, FamilyDetailSerializer(self.other_family).data, ], )
def test_family_detail_serializer_guests(self): data = FamilyDetailSerializer(self.family, context=context).data self.assertEqual(data["guests"], [StudentSerializer(self.guest, context=context).data])
def test_family_detail_serializer_children(self): data = FamilyDetailSerializer(self.family, context=context).data self.assertEqual(data["children"], [StudentSerializer(self.child, context=context).data])
def test_family_detail_serializer_parent(self): data = FamilyDetailSerializer(self.family, context=context).data self.assertEqual(data["parent"], StudentSerializer(self.parent, context=context).data)