diff --git a/projects/serializers.py b/projects/serializers.py index d0ed1fa3..540d4322 100644 --- a/projects/serializers.py +++ b/projects/serializers.py @@ -89,6 +89,7 @@ class Meta: class PartnerProgramProjectSerializer(serializers.ModelSerializer): + name = serializers.CharField(source="partner_program.name", read_only=True) program_link_id = serializers.IntegerField(source="pk", read_only=True) program_id = serializers.IntegerField(source="partner_program.id", read_only=True) is_submitted = serializers.BooleanField(source="submitted", read_only=True) @@ -99,6 +100,7 @@ class PartnerProgramProjectSerializer(serializers.ModelSerializer): class Meta: model = PartnerProgramProject fields = [ + "name", "program_link_id", "program_id", "is_submitted", diff --git a/projects/tests/test_program_project_detail_access.py b/projects/tests/test_program_project_detail_access.py index af76ce59..8165725c 100644 --- a/projects/tests/test_program_project_detail_access.py +++ b/projects/tests/test_program_project_detail_access.py @@ -168,9 +168,19 @@ def test_manager_with_independent_collaborator_role_can_patch_draft(self): def test_single_link_preserves_full_nested_contract(self): expected = PartnerProgramProjectSerializer(self.link_a).data + self.assertEqual(expected["name"], self.program_a.name) self.assertEqual(self.detail(self.manager_a)["partner_program"], expected) self.assertEqual(self.detail(self.project.leader)["partner_program"], expected) + def test_program_name_is_current_after_rename(self): + self.program_a.name = "Обновлённое название программы" + self.program_a.save(update_fields=["name"]) + for user in (self.project.leader, self.manager_a, self.expert_a): + with self.subTest(user=user.pk): + self.assertEqual( + self.detail(user)["partner_program"]["name"], self.program_a.name + ) + def test_no_links_returns_null(self): self.link_a.delete() self.assertIsNone(self.detail(self.project.leader)["partner_program"]) @@ -187,6 +197,7 @@ def test_program_roles_only_receive_their_link_and_fields(self): data = self.detail(user)["partner_program"] self.assertEqual(data, PartnerProgramProjectSerializer(link).data) self.assertEqual(data["program_id"], link.partner_program_id) + self.assertEqual(data["name"], link.partner_program.name) def test_program_role_scope_also_applies_to_public_published_projects(self): link_b = self.add_second_link() diff --git a/users/tests/test_project_list_program_contract.py b/users/tests/test_project_list_program_contract.py index 753ab750..f5f67530 100644 --- a/users/tests/test_project_list_program_contract.py +++ b/users/tests/test_project_list_program_contract.py @@ -131,7 +131,7 @@ def test_leader_and_collaborator_see_identical_lifecycle(self): self.assertEqual(self.list_program(self.endpoints[0]), leader_metadata) detail = self.client.get(f"/projects/{self.project.pk}/") self.assertEqual(detail.status_code, 200) - for field in ("program_link_id", "program_id", "is_submitted"): + for field in ("name", "program_link_id", "program_id", "is_submitted"): self.assertEqual( detail.data["partner_program"][field], leader_metadata[field] )