@@ -1250,6 +1250,25 @@ describe('TransactionUtils', () => {
12501250
12511251 expect ( result ) . toEqual ( [ { displayName : 'login-only@example.com' , login : 'login-only@example.com' , avatarUrl : '' } ] ) ;
12521252 } ) ;
1253+
1254+ it ( 'should handle attendees stored as a plain object' , ( ) => {
1255+ const attendeesArray : Attendee [ ] = [
1256+ { email : 'attendee1@example.com' , login : 'attendee1@example.com' , displayName : 'Attendee One' , avatarUrl : '' , accountID : 3 , selected : true } ,
1257+ { email : 'attendee2@example.com' , login : 'attendee2@example.com' , displayName : 'Attendee Two' , avatarUrl : '' , accountID : 4 , selected : false } ,
1258+ ] ;
1259+ const transaction = generateTransaction ( {
1260+ reportID : FAKE_OPEN_REPORT_ID ,
1261+ comment : {
1262+ attendees : Object . fromEntries ( attendeesArray . entries ( ) ) as unknown as Attendee [ ] ,
1263+ } ,
1264+ } ) ;
1265+
1266+ const result = TransactionUtils . getOriginalAttendees ( transaction , currentUserPersonalDetails ) ;
1267+
1268+ expect ( result . length ) . toBe ( 2 ) ;
1269+ expect ( result . at ( 0 ) ?. email ) . toBe ( 'attendee1@example.com' ) ;
1270+ expect ( result . at ( 1 ) ?. email ) . toBe ( 'attendee2@example.com' ) ;
1271+ } ) ;
12531272 } ) ;
12541273
12551274 describe ( 'getAttendees' , ( ) => {
@@ -1395,6 +1414,68 @@ describe('TransactionUtils', () => {
13951414
13961415 expect ( result ) . toEqual ( [ { displayName : 'edited@example.com' , login : 'edited@example.com' , avatarUrl : '' } ] ) ;
13971416 } ) ;
1417+
1418+ it ( 'should handle comment attendees stored as a plain object' , ( ) => {
1419+ const attendeesArray : Attendee [ ] = [ { email : 'attendee@example.com' , login : 'attendee@example.com' , displayName : 'Attendee' , avatarUrl : '' , accountID : 7 , selected : true } ] ;
1420+ const transaction = generateTransaction ( {
1421+ reportID : FAKE_OPEN_REPORT_ID ,
1422+ comment : {
1423+ attendees : Object . fromEntries ( attendeesArray . entries ( ) ) as unknown as Attendee [ ] ,
1424+ } ,
1425+ } ) ;
1426+
1427+ const result = TransactionUtils . getAttendees ( transaction , currentUserPersonalDetails ) ;
1428+
1429+ expect ( result . length ) . toBe ( 1 ) ;
1430+ expect ( result . at ( 0 ) ?. email ) . toBe ( 'attendee@example.com' ) ;
1431+ } ) ;
1432+
1433+ it ( 'should handle modifiedAttendees stored as a plain object' , ( ) => {
1434+ const modifiedAttendeesArray : Attendee [ ] = [
1435+ { email : 'modified@example.com' , login : 'modified@example.com' , displayName : 'Modified Attendee' , avatarUrl : '' , accountID : 6 , selected : true } ,
1436+ ] ;
1437+ const transaction = generateTransaction ( {
1438+ reportID : FAKE_OPEN_REPORT_ID ,
1439+ comment : {
1440+ attendees : [ ] ,
1441+ } ,
1442+ modifiedAttendees : Object . fromEntries ( modifiedAttendeesArray . entries ( ) ) as unknown as Attendee [ ] ,
1443+ } ) ;
1444+
1445+ const result = TransactionUtils . getAttendees ( transaction , currentUserPersonalDetails ) ;
1446+
1447+ expect ( result . length ) . toBe ( 1 ) ;
1448+ expect ( result . at ( 0 ) ?. email ) . toBe ( 'modified@example.com' ) ;
1449+ } ) ;
1450+
1451+ it ( 'should fall back to report owner when comment attendees is an empty plain object' , ( ) => {
1452+ const transaction = generateTransaction ( {
1453+ reportID : FAKE_OPEN_REPORT_ID ,
1454+ comment : {
1455+ attendees : { } as unknown as Attendee [ ] ,
1456+ } ,
1457+ } ) ;
1458+
1459+ const result = TransactionUtils . getAttendees ( transaction , currentUserPersonalDetails ) ;
1460+
1461+ expect ( result . length ) . toBe ( 1 ) ;
1462+ expect ( result . at ( 0 ) ?. accountID ) . toBe ( CURRENT_USER_ID ) ;
1463+ } ) ;
1464+
1465+ it ( 'should fall back to report owner when modifiedAttendees is an empty plain object' , ( ) => {
1466+ const transaction = generateTransaction ( {
1467+ reportID : FAKE_OPEN_REPORT_ID ,
1468+ comment : {
1469+ attendees : [ ] ,
1470+ } ,
1471+ modifiedAttendees : { } as unknown as Attendee [ ] ,
1472+ } ) ;
1473+
1474+ const result = TransactionUtils . getAttendees ( transaction , currentUserPersonalDetails ) ;
1475+
1476+ expect ( result . length ) . toBe ( 1 ) ;
1477+ expect ( result . at ( 0 ) ?. accountID ) . toBe ( CURRENT_USER_ID ) ;
1478+ } ) ;
13981479 } ) ;
13991480
14001481 describe ( 'getAttendeesListDisplayString' , ( ) => {
0 commit comments