diff --git a/common/djangoapps/student/models.py b/common/djangoapps/student/models.py index 58279203ce829665ee8e47964bcc1369c50cb3d3..76cdbbba5294e07dea0bd96c7aeec41e1270d74a 100644 --- a/common/djangoapps/student/models.py +++ b/common/djangoapps/student/models.py @@ -671,7 +671,7 @@ class Registration(models.Model): analytics.identify(*identity_args) -class PendingNameChange(models.Model): +class PendingNameChange(DeletableByUserValue, models.Model): user = models.OneToOneField(User, unique=True, db_index=True) new_name = models.CharField(blank=True, max_length=255) rationale = models.CharField(blank=True, max_length=1024) diff --git a/common/djangoapps/student/tests/test_models.py b/common/djangoapps/student/tests/test_models.py index 93f1d4bb3e009ffb034e4d57dc202fe9e8ae64cc..4dd0804a7f2c8e07a3024c55fd8c478df6e1337b 100644 --- a/common/djangoapps/student/tests/test_models.py +++ b/common/djangoapps/student/tests/test_models.py @@ -20,7 +20,12 @@ from openedx.core.djangoapps.content.course_overviews.models import CourseOvervi from openedx.core.djangoapps.schedules.models import Schedule from openedx.core.djangoapps.schedules.tests.factories import ScheduleFactory from openedx.core.djangolib.testing.utils import skip_unless_lms -from student.models import CourseEnrollment, CourseEnrollmentAllowed, PendingEmailChange +from student.models import ( + CourseEnrollment, + CourseEnrollmentAllowed, + PendingEmailChange, + PendingNameChange +) from student.tests.factories import CourseEnrollmentFactory, UserFactory from xmodule.modulestore.tests.django_utils import SharedModuleStoreTestCase from xmodule.modulestore.tests.factories import CourseFactory @@ -201,6 +206,35 @@ class CourseEnrollmentTests(SharedModuleStoreTestCase): self.assertIsNone(enrollment.upgrade_deadline) +class PendingNameChangeTests(SharedModuleStoreTestCase): + """ + Tests the deletion of PendingNameChange records + """ + @classmethod + def setUpClass(cls): + super(PendingNameChangeTests, cls).setUpClass() + cls.user = UserFactory() + cls.user2 = UserFactory() + + def setUp(self): + self.name_change, _ = PendingNameChange.objects.get_or_create( + user=self.user, + new_name='New Name PII', + rationale='for testing!' + ) + self.assertEqual(1, len(PendingNameChange.objects.all())) + + def test_delete_by_user_removes_pending_name_change(self): + record_was_deleted = PendingNameChange.delete_by_user_value(self.user, field='user') + self.assertTrue(record_was_deleted) + self.assertEqual(0, len(PendingNameChange.objects.all())) + + def test_delete_by_user_no_effect_for_user_with_no_name_change(self): + record_was_deleted = PendingNameChange.delete_by_user_value(self.user2, field='user') + self.assertFalse(record_was_deleted) + self.assertEqual(1, len(PendingNameChange.objects.all())) + + class PendingEmailChangeTests(SharedModuleStoreTestCase): """ Tests the deletion of PendingEmailChange records. @@ -208,7 +242,6 @@ class PendingEmailChangeTests(SharedModuleStoreTestCase): @classmethod def setUpClass(cls): super(PendingEmailChangeTests, cls).setUpClass() - cls.course = CourseFactory() cls.user = UserFactory() cls.user2 = UserFactory()