1+ from django .test import TestCase
2+
3+ from accounts .models import CustomUser
4+ from courses .models import Course , Enrollment
5+
6+
7+ class CertificateNameTests (TestCase ):
8+ def setUp (self ):
9+ self .user = CustomUser .objects .create_user (
10+ username = "test@test.com" ,
11+ email = "test@test.com" ,
12+ password = "12345"
13+ )
14+ self .course1 = Course .objects .create (
15+ title = "Test Course 1" ,
16+ slug = "test-course-1"
17+ )
18+ self .course2 = Course .objects .create (
19+ title = "Test Course 2" ,
20+ slug = "test-course-2"
21+ )
22+
23+ def test_certificate_name_sync_to_user (self ):
24+ """Test that updating certificate name in enrollment updates it for the user but not other enrollments"""
25+ # Create two enrollments for the same user
26+ enrollment1 = Enrollment .objects .create (
27+ student = self .user ,
28+ course = self .course1
29+ )
30+ enrollment2 = Enrollment .objects .create (
31+ student = self .user ,
32+ course = self .course2
33+ )
34+
35+ # Initially both enrollments and user should have no certificate name
36+ self .assertIsNone (enrollment1 .certificate_name )
37+ self .assertIsNone (enrollment2 .certificate_name )
38+ self .assertIsNone (self .user .certificate_name )
39+
40+ # Update certificate name in first enrollment
41+ enrollment1 .certificate_name = "John Doe"
42+ enrollment1 .save ()
43+
44+ # Refresh objects from database
45+ self .user .refresh_from_db ()
46+ enrollment1 .refresh_from_db ()
47+ enrollment2 .refresh_from_db ()
48+
49+ # Check that only the user and the updated enrollment have the new certificate name
50+ self .assertEqual (enrollment1 .certificate_name , "John Doe" )
51+ self .assertIsNone (enrollment2 .certificate_name ) # Other enrollment should not be affected
52+ self .assertEqual (self .user .certificate_name , "John Doe" ) # User should be updated
53+
54+ def test_certificate_name_sync_on_new_enrollment (self ):
55+ """Test that new enrollment gets certificate name from user if set"""
56+ # Set certificate name on user
57+ self .user .certificate_name = "Jane Doe"
58+ self .user .save ()
59+
60+ # Create new enrollment
61+ enrollment = Enrollment .objects .create (
62+ student = self .user ,
63+ course = self .course1
64+ )
65+
66+ # Refresh enrollment from database
67+ enrollment .refresh_from_db ()
68+
69+ # Check that enrollment got the certificate name from user
70+ self .assertEqual (enrollment .certificate_name , "Jane Doe" )
71+
72+ def test_certificate_name_not_overwritten (self ):
73+ """Test that existing certificate name in enrollment is not overwritten by user's name"""
74+ # Create enrollment with certificate name
75+ enrollment = Enrollment .objects .create (
76+ student = self .user ,
77+ course = self .course1 ,
78+ certificate_name = "Original Name"
79+ )
80+
81+ # Set different certificate name on user
82+ self .user .certificate_name = "Different Name"
83+ self .user .save ()
84+
85+ # Refresh enrollment from database
86+ enrollment .refresh_from_db ()
87+
88+ # Check that enrollment's certificate name was not changed
89+ self .assertEqual (enrollment .certificate_name , "Original Name" )
0 commit comments