@@ -1589,45 +1589,56 @@ public void testFieldUniqueConstraint()
15891589 viewRawTableMetadata (listName );
15901590 verifyTableIndices ("unique_constraint_list_" , Collections .emptyList ());
15911591
1592- // set two fields to have unique constraints
1592+ // set fields to have constraints
15931593 EditListDefinitionPage listDefinitionPage = _listHelper .goToEditDesign (listName );
15941594 listDefinitionPage .getFieldsPanel ()
1595- .getField (fieldName1 ).expand ().clickAdvancedSettings ().setUniqueConstraint ( true )
1595+ .getField (fieldName1 ).expand ().clickAdvancedSettings ().setSingleFieldIndex ( "Unique" )
15961596 .apply ();
15971597 listDefinitionPage .getFieldsPanel ()
1598- .getField (fieldName2 ).expand ().clickAdvancedSettings ().setUniqueConstraint (true )
1598+ .getField (fieldName2 ).expand ().clickAdvancedSettings ().setSingleFieldIndex ("Unique" )
1599+ .apply ();
1600+ // set one field to have non-unique constraint
1601+ listDefinitionPage .getFieldsPanel ()
1602+ .getField (fieldName3 ).expand ().clickAdvancedSettings ().setSingleFieldIndex ("Non-Unique" )
15991603 .apply ();
16001604 listDefinitionPage .clickSave ();
16011605
16021606 AuditLogHelper .DetailedAuditEventRow expectedDomainEvent = new AuditLogHelper .DetailedAuditEventRow (null , listName , null ,
16031607 "The descriptor of domain " + listName + " was updated." ,
1604- "" , null , null , "Indices: > [field Name1, unique: true, fieldName_2, unique: true]" );
1608+ "" , null , null , "Indices: > [FieldName@3, unique: false, field Name1, unique: true, fieldName_2, unique: true]" );
16051609 boolean pass = _auditLogHelper .validateLastDomainAuditEvents (listName , getProjectName (), expectedDomainEvent , Collections .emptyMap ());
16061610 checker ().verifyTrue ("Domain audit comment not as expected after updating field unique constraint" , pass );
16071611
16081612 viewRawTableMetadata (listName );
1609- verifyTableIndices ("unique_constraint_list_" , List .of ("field_name1" , "fieldname_2" ));
1610- assertTextNotPresent ("unique_constraint_list_fieldname_3" );
1613+ verifyTableIndices ("unique_constraint_list_" , List .of ("field_name1" , "fieldname_2" , "fieldname_3" ));
1614+ verifyTableIndexNonUnique ("unique_constraint_list_" , "field_name1" , true );
1615+ verifyTableIndexNonUnique ("unique_constraint_list_" , "fieldname_2" , true );
1616+ verifyTableIndexNonUnique ("unique_constraint_list_" , "fieldname_3" , false );
16111617
1612- // remove a field unique constraint and add a new one
1618+ // remove a field unique constraint, change a field from unique -> non-unique, and change one from non-unique -> unique
16131619 listDefinitionPage = _listHelper .goToEditDesign (listName );
16141620 listDefinitionPage .getFieldsPanel ()
1615- .getField (fieldName2 ).expand ().clickAdvancedSettings ().setUniqueConstraint (false )
1621+ .getField (fieldName1 ).expand ().clickAdvancedSettings ().setSingleFieldIndex (null )
1622+ .apply ();
1623+ listDefinitionPage .getFieldsPanel ()
1624+ .getField (fieldName2 ).expand ().clickAdvancedSettings ().setSingleFieldIndex ("Non-Unique" )
16161625 .apply ();
16171626 listDefinitionPage .getFieldsPanel ()
1618- .getField (fieldName3 ).expand ().clickAdvancedSettings ().setUniqueConstraint ( true )
1627+ .getField (fieldName3 ).expand ().clickAdvancedSettings ().setSingleFieldIndex ( "Unique" )
16191628 .apply ();
16201629 listDefinitionPage .clickSave ();
16211630
16221631 expectedDomainEvent = new AuditLogHelper .DetailedAuditEventRow (null , listName , null ,
16231632 "The descriptor of domain " + listName + " was updated." ,
1624- "" , null , null , "Indices: [field name1, unique: true, fieldname_2, unique: true] > [FieldName@3, unique: true, field Name1 , unique: true ]" );
1633+ "" , null , null , "Indices: [field name1, unique: true, fieldname@3, unique: false, fieldname_2, unique: true] > [FieldName@3, unique: true, fieldName_2 , unique: false ]" );
16251634 pass = _auditLogHelper .validateLastDomainAuditEvents (listName , getProjectName (), expectedDomainEvent , Collections .emptyMap ());
16261635 checker ().verifyTrue ("Domain audit comment not as expected after updating field unique constraint" , pass );
16271636
16281637 viewRawTableMetadata (listName );
1629- verifyTableIndices ("unique_constraint_list_" , List .of ("field_name1" , "fieldname_3" ));
1630- assertTextNotPresent ("unique_constraint_list_fieldname_2" );
1638+ verifyTableIndices ("unique_constraint_list_" , List .of ("fieldname_2" , "fieldname_3" ));
1639+ assertTextNotPresent ("unique_constraint_list_field_name1" );
1640+ verifyTableIndexNonUnique ("unique_constraint_list_" , "fieldname_2" , false );
1641+ verifyTableIndexNonUnique ("unique_constraint_list_" , "fieldname_3" , true );
16311642 }
16321643
16331644 @ Test // Issue 52247
@@ -1698,6 +1709,12 @@ private void verifyTableIndices(String prefix, List<String> indexSuffixes)
16981709 assertTextPresentCaseInsensitive (prefix + suffix );
16991710 }
17001711
1712+ private void verifyTableIndexNonUnique (String prefix , String suffix , boolean isUnique )
1713+ {
1714+ Locator locator = Locator .xpath ("//td[contains(text(), '" + prefix + suffix + "')]/preceding-sibling::td[2][text()='" + !isUnique + "']" );
1715+ checker ().verifyTrue ("Non_Unique value not as expected in metadata for locator: " + locator , locator .existsIn (getDriver ()));
1716+ }
1717+
17011718 /**
17021719 * Test "tricky characters" in field names, including key field. This will test CrUD operation for list items in
17031720 * lists with an auto-key and user defined key. This will also use file import for validation.
0 commit comments