@@ -36,14 +36,14 @@ def test_02_suffix_data_loaded(self):
3636 self .assertEqual (self .suffix_phd .name , "PhD" )
3737 self .assertEqual (self .suffix_phd .code , "PHD" )
3838
39- def test_03_name_with_suffix (self ):
40- """Test that suffix is appended to the computed name."""
39+ def test_03_name_with_single_suffix (self ):
40+ """Test that a single suffix is appended to the computed name."""
4141 individual = self .env ["res.partner" ].create (
4242 {
4343 "name" : "Temp" , # Required by res_partner_check_name constraint
4444 "family_name" : "Doe" ,
4545 "given_name" : "John" ,
46- "suffix_id " : self .suffix_jr .id ,
46+ "suffix_ids " : [( 6 , 0 , [ self .suffix_jr .id ])] ,
4747 "is_registrant" : True ,
4848 "is_group" : False ,
4949 }
@@ -74,32 +74,52 @@ def test_04_name_without_suffix(self):
7474 "Name should not have trailing comma when no suffix" ,
7575 )
7676
77- def test_05_name_with_all_fields (self ):
78- """Test name with all fields including addl_name and suffix ."""
77+ def test_05_name_with_multiple_suffixes (self ):
78+ """Test name with multiple suffixes (e.g., Jr. and PhD) ."""
7979 individual = self .env ["res.partner" ].create (
8080 {
8181 "name" : "Temp" , # Required by res_partner_check_name constraint
8282 "family_name" : "Smith" ,
8383 "given_name" : "Robert" ,
84- "addl_name" : "James" ,
85- "suffix_id" : self .suffix_phd .id ,
84+ "suffix_ids" : [(6 , 0 , [self .suffix_jr .id , self .suffix_phd .id ])],
8685 "is_registrant" : True ,
8786 "is_group" : False ,
8887 }
8988 )
9089 individual .name_change ()
90+ # Jr. has sequence 10, PhD has sequence 100, so Jr. comes first
9191 self .assertEqual (
9292 individual .name ,
93- "SMITH, ROBERT JAMES , PHD" ,
94- "Name should include all parts including suffix " ,
93+ "SMITH, ROBERT, JR. , PHD" ,
94+ "Name should include multiple suffixes in sequence order " ,
9595 )
9696
97- def test_06_group_name_unaffected (self ):
97+ def test_06_name_with_all_fields_and_multiple_suffixes (self ):
98+ """Test name with all fields including addl_name and multiple suffixes."""
99+ individual = self .env ["res.partner" ].create (
100+ {
101+ "name" : "Temp" , # Required by res_partner_check_name constraint
102+ "family_name" : "Williams" ,
103+ "given_name" : "James" ,
104+ "addl_name" : "Edward" ,
105+ "suffix_ids" : [(6 , 0 , [self .suffix_jr .id , self .suffix_phd .id ])],
106+ "is_registrant" : True ,
107+ "is_group" : False ,
108+ }
109+ )
110+ individual .name_change ()
111+ self .assertEqual (
112+ individual .name ,
113+ "WILLIAMS, JAMES EDWARD, JR., PHD" ,
114+ "Name should include all parts including multiple suffixes" ,
115+ )
116+
117+ def test_07_group_name_unaffected (self ):
98118 """Test that group name is not affected by suffix logic."""
99119 group = self .env ["res.partner" ].create (
100120 {
101121 "name" : "Test Group" ,
102- "suffix_id " : self .suffix_jr .id ,
122+ "suffix_ids " : [( 6 , 0 , [ self .suffix_jr .id ])] ,
103123 "is_registrant" : True ,
104124 "is_group" : True ,
105125 }
@@ -112,8 +132,8 @@ def test_06_group_name_unaffected(self):
112132 "Group name should not include suffix" ,
113133 )
114134
115- def test_07_suffix_update_triggers_name_change (self ):
116- """Test that updating suffix and calling name_change updates name."""
135+ def test_08_suffix_update_triggers_name_change (self ):
136+ """Test that updating suffixes and calling name_change updates name."""
117137 individual = self .env ["res.partner" ].create (
118138 {
119139 "name" : "Temp" , # Required by res_partner_check_name constraint
@@ -128,38 +148,59 @@ def test_07_suffix_update_triggers_name_change(self):
128148 self .assertEqual (individual .name , "JOHNSON, MICHAEL" )
129149
130150 # Add suffix and call name_change again
131- individual .suffix_id = self .suffix_phd .id
151+ individual .suffix_ids = [( 6 , 0 , [ self .suffix_phd .id ])]
132152 individual .name_change ()
133153 self .assertEqual (
134154 individual .name ,
135155 "JOHNSON, MICHAEL, PHD" ,
136156 "Name should update when suffix is added" ,
137157 )
138158
139- def test_08_suffix_removal (self ):
140- """Test that removing suffix updates the name correctly."""
159+ def test_09_suffix_removal (self ):
160+ """Test that removing suffixes updates the name correctly."""
141161 individual = self .env ["res.partner" ].create (
142162 {
143163 "name" : "Temp" , # Required by res_partner_check_name constraint
144164 "family_name" : "Williams" ,
145165 "given_name" : "Sarah" ,
146- "suffix_id " : self .suffix_jr .id ,
166+ "suffix_ids " : [( 6 , 0 , [ self .suffix_jr .id ])] ,
147167 "is_registrant" : True ,
148168 "is_group" : False ,
149169 }
150170 )
151171 individual .name_change ()
152172 self .assertEqual (individual .name , "WILLIAMS, SARAH, JR." )
153173
154- individual .suffix_id = False
174+ individual .suffix_ids = [( 5 , 0 , 0 )] # Clear all suffixes
155175 individual .name_change ()
156176 self .assertEqual (
157177 individual .name ,
158178 "WILLIAMS, SARAH" ,
159- "Name should update when suffix is removed" ,
179+ "Name should update when suffixes are removed" ,
180+ )
181+
182+ def test_10_suffix_sequence_ordering (self ):
183+ """Test that suffixes are ordered by sequence field."""
184+ # PhD has sequence 100, Jr. has sequence 10
185+ # Even if we add PhD first, Jr. should appear first in the name
186+ individual = self .env ["res.partner" ].create (
187+ {
188+ "name" : "Temp" ,
189+ "family_name" : "Brown" ,
190+ "given_name" : "David" ,
191+ "suffix_ids" : [(6 , 0 , [self .suffix_phd .id , self .suffix_jr .id ])],
192+ "is_registrant" : True ,
193+ "is_group" : False ,
194+ }
195+ )
196+ individual .name_change ()
197+ self .assertEqual (
198+ individual .name ,
199+ "BROWN, DAVID, JR., PHD" ,
200+ "Suffixes should be ordered by sequence regardless of selection order" ,
160201 )
161202
162- def test_09_name_get_with_different_code (self ):
203+ def test_11_name_get_with_different_code (self ):
163204 """Test name_get when code differs from name."""
164205 # suffix_jr has name="Jr." and code="JR" (different)
165206 result = self .suffix_jr .name_get ()
@@ -171,7 +212,7 @@ def test_09_name_get_with_different_code(self):
171212 "name_get should show name with code in parentheses" ,
172213 )
173214
174- def test_10_name_get_with_same_code (self ):
215+ def test_12_name_get_with_same_code (self ):
175216 """Test name_get when code equals name."""
176217 # Create a suffix where name and code are the same
177218 suffix_same = self .env ["spp.name.suffix" ].create (
@@ -189,7 +230,7 @@ def test_10_name_get_with_same_code(self):
189230 "name_get should show only name when code equals name" ,
190231 )
191232
192- def test_11_name_get_multiple_records (self ):
233+ def test_13_name_get_multiple_records (self ):
193234 """Test name_get with multiple records."""
194235 # Get multiple suffixes at once
195236 suffixes = self .suffix_jr | self .suffix_phd
0 commit comments