Skip to content

Commit 6fcd01a

Browse files
committed
Selenium test updates to check for link/href target when set via field editor or XML metadata
1 parent f62caa4 commit 6fcd01a

File tree

7 files changed

+58
-5
lines changed

7 files changed

+58
-5
lines changed

src/org/labkey/test/components/domain/DomainFieldRow.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -373,6 +373,19 @@ public DomainFieldRow setUrl(String url)
373373
return this;
374374
}
375375

376+
public boolean isUrlOpenNewTab()
377+
{
378+
expand();
379+
return elementCache().urlTargetCheckbox.get();
380+
}
381+
382+
public DomainFieldRow setUrlOpenNewTab(boolean checked)
383+
{
384+
expand();
385+
elementCache().urlTargetCheckbox.set(checked);
386+
return this;
387+
}
388+
376389
//
377390
// numeric field options.
378391

@@ -1638,6 +1651,8 @@ protected class ElementCache extends WebDriverComponent.ElementCache
16381651
.refindWhenNeeded(this), getDriver());
16391652
public final Input urlInput = new Input(Locator.tagWithAttributeContaining("input", "id", "domainpropertiesrow-URL-")
16401653
.refindWhenNeeded(this), getDriver());
1654+
protected final Locator urlTargetCheckboxLoc = Locator.input("domainpropertiesrow-URLTarget");
1655+
public final Checkbox urlTargetCheckbox = new Checkbox(urlTargetCheckboxLoc.refindWhenNeeded(this).withTimeout(WAIT_FOR_JAVASCRIPT));
16411656

16421657
// numeric field options
16431658
public final Select defaultScaleTypeSelect = SelectWrapper.Select(Locator.name("domainpropertiesrow-defaultScale"))

src/org/labkey/test/components/domain/DomainFormPanel.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,8 @@ else if (fieldDefinition.getType().equals(FieldDefinition.ColumnType.DateAndTime
178178
fieldRow.setCharCount(fieldDefinition.getScale());
179179
if (fieldDefinition.getURL() != null)
180180
fieldRow.setUrl(fieldDefinition.getURL());
181+
if (fieldDefinition.isURLOpenNewTab())
182+
fieldRow.setUrlOpenNewTab(fieldDefinition.isURLOpenNewTab());
181183
if (fieldDefinition.getImportAliases() != null)
182184
fieldRow.setImportAliases(fieldDefinition.getImportAliases());
183185
if (fieldDefinition.getRequired())

src/org/labkey/test/params/FieldDefinition.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,18 @@ public FieldDefinition setURL(String url)
278278
return this;
279279
}
280280

281+
public boolean isURLOpenNewTab()
282+
{
283+
Object val = getFieldProperty("URLTarget");
284+
return "_blank".equals(val);
285+
}
286+
287+
public FieldDefinition setURLOpenNewTab(boolean openNewTab)
288+
{
289+
setFieldProperty("URLTarget", openNewTab ? "_blank" : null);
290+
return this;
291+
}
292+
281293
public String getImportAliases()
282294
{
283295
return (String) getFieldProperty("importAliases");

src/org/labkey/test/tests/ContainerContextTest.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,8 @@ public void testListLookupURL() throws Exception
142142
log("** Creating lookup target list in sub-folder");
143143
List<FieldDefinition> lookupTargetCols = List.of(
144144
new FieldDefinition("LookupName", FieldDefinition.ColumnType.String).setDescription("Lookup Name"),
145-
new FieldDefinition("LookupAge", FieldDefinition.ColumnType.Integer).setDescription("Lookup Age").setURL("fake/action.view?key=${Key}")
145+
new FieldDefinition("LookupAge", FieldDefinition.ColumnType.Integer).setDescription("Lookup Age")
146+
.setURL("fake/action.view?key=${Key}").setURLOpenNewTab(true)
146147
);
147148
String lookupTargetListName = SUB_FOLDER_A + "-LookupTarget-List";
148149
TestDataGenerator subfolderDgen = new IntListDefinition(lookupTargetListName, LIST_KEY_NAME).setFields(lookupTargetCols)
@@ -202,6 +203,8 @@ public void testListLookupURL() throws Exception
202203
href = getAttribute(Locator.linkWithText("200"), "href");
203204
assertTrue("Expected ListLookup/LookupAge link to go to " + getProjectName() + "/" + SUB_FOLDER_A + " container, href=" + href,
204205
href.contains(getProjectName() + "/" + SUB_FOLDER_A) && href.contains("fake") && href.contains("action.view?key=2"));
206+
207+
assertEquals("Expected LookupAge link target to be _blank", "_blank", getAttribute(Locator.linkWithText("200"), "target"));
205208
}
206209

207210
// Issue 15751: Pipeline job list generates URLs without correct container

src/org/labkey/test/tests/DomainDesignerTest.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1676,6 +1676,11 @@ public void testExportImportListFields() throws Exception
16761676
verifyExpectedFieldProperties(createdField, exportedField);
16771677
}
16781678

1679+
// verify URL settings for the boolean field
1680+
DomainFieldRow boolFieldRow = domainDesignerPage.fieldsPanel().getField("booleanField");
1681+
checker().verifyEquals("URL value not retained after import/export", "fake/list-def.url", boolFieldRow.getUrl());
1682+
checker().verifyEquals("URL open in new tab value not retained after import/export", true, boolFieldRow.isUrlOpenNewTab());
1683+
16791684
// now create a list with the set of created Keys
16801685
String roundTripList = "roundTripListNameCreatedFromJsonFields";
16811686
EditListDefinitionPage listDefPage = _listHelper.beginCreateList(getProjectName(), roundTripList);
@@ -1746,6 +1751,11 @@ public void testFileImportFieldsToNewSampleType() throws Exception
17461751
roundTrippedFields.get(i).getName(), is(uiFields.get(i)));
17471752
}
17481753
assertThat(exportedFields.keySet(), is(roundTrippedFields.keySet()));
1754+
1755+
// verify URL settings for the boolean field
1756+
DomainFieldRow boolFieldRow = sampleTypeDesignerPage.fieldsPanel().getField("booleanField");
1757+
checker().verifyEquals("URL value not retained after import/export", "fake/list-def.url", boolFieldRow.getUrl());
1758+
checker().verifyEquals("URL open in new tab value not retained after import/export", true, boolFieldRow.isUrlOpenNewTab());
17491759
}
17501760

17511761
@Test
@@ -1793,7 +1803,8 @@ private List<PropertyDescriptor> importExportTestFields()
17931803
fields.add(new FieldDefinition("booleanField", FieldDefinition.ColumnType.Boolean)
17941804
.setLabel("Boolean Field")
17951805
.setRequired(true)
1796-
.setURL("fake/list-def.url"));
1806+
.setURL("fake/list-def.url")
1807+
.setURLOpenNewTab(true));
17971808
fields.add(new FieldDefinition("attachmentField", FieldDefinition.ColumnType.Attachment)
17981809
.setHidden(true));
17991810
fields.add(new FieldDefinition("decimalField", FieldDefinition.ColumnType.Decimal).

src/org/labkey/test/tests/LinkedSchemaTest.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,7 @@ public class LinkedSchemaTest extends BaseWebDriverTest
292292
" <column columnName=\"R\">\n" +
293293
" <columnTitle>A_People template Query R</columnTitle>\n" +
294294
" <url>fake/a_template_metadata.view</url>\n" +
295+
" <urlTarget>_blank</urlTarget>\n" +
295296
" </column>\n" +
296297
" </columns>\n" +
297298
" </table>\n" +
@@ -668,8 +669,8 @@ void createList() throws IOException, CommandException
668669
.addField(new FieldDefinition("Name", FieldDefinition.ColumnType.String).setLabel("Name").setDescription("Name"))
669670
.addField(new FieldDefinition("Age", FieldDefinition.ColumnType.Integer).setLabel("Age").setDescription("Age"))
670671
.addField(new FieldDefinition("Crazy", FieldDefinition.ColumnType.Boolean).setLabel("Crazy").setDescription("Crazy?"))
671-
.addField(new FieldDefinition("P", FieldDefinition.ColumnType.String).setLabel(LIST_DEF_TITLE + " P").setURL("fake/" + LIST_DEF_URL))
672-
.addField(new FieldDefinition("Q", FieldDefinition.ColumnType.String).setLabel(LIST_DEF_TITLE + " Q").setURL("fake/" + LIST_DEF_URL))
672+
.addField(new FieldDefinition("P", FieldDefinition.ColumnType.String).setLabel(LIST_DEF_TITLE + " P").setURL("fake/" + LIST_DEF_URL).setURLOpenNewTab(false))
673+
.addField(new FieldDefinition("Q", FieldDefinition.ColumnType.String).setLabel(LIST_DEF_TITLE + " Q").setURL("fake/" + LIST_DEF_URL).setURLOpenNewTab(true))
673674
.addField(new FieldDefinition("R", FieldDefinition.ColumnType.String).setLabel(LIST_DEF_TITLE + " R").setURL("fake/" + LIST_DEF_URL))
674675
.addField(new FieldDefinition("S", FieldDefinition.ColumnType.String).setLabel(LIST_DEF_TITLE + " S").setURL("fake/" + LIST_DEF_URL))
675676
.addField(new FieldDefinition("T", FieldDefinition.ColumnType.String).setLabel(LIST_DEF_TITLE + " T").setURL("fake/" + LIST_DEF_URL))
@@ -736,7 +737,9 @@ void verifyLinkedSchema()
736737
assertEquals("Expected to filter table to only Adam", "Adam", table.getDataAsText(0, A_PEOPLE_METADATA_TITLE));
737738
log("** Verify table metadata overrides when simplemodule is not active in TargetFolder");
738739
assertHrefContains(table, "A_People db_metadata List P", "a_db_metadata.view");
740+
assertEquals("P link target not as expected", "", table.getLinkAttribute(0, table.getColumnIndexStrict("A_People db_metadata List P"), "target"));
739741
assertHrefContains(table, "A_People db_metadata List Q", "a_db_metadata.view");
742+
assertEquals("Q link target not as expected", "_blank", table.getLinkAttribute(0, table.getColumnIndexStrict("A_People db_metadata List Q"), "target"));
740743
assertHrefContains(table, "A_People db_metadata List R", "a_db_metadata.view");
741744
assertHrefContains(table, "A_People db_metadata List S", "a_db_metadata.view");
742745
assertHrefContains(table, "A_People template List T", "a_template_metadata.view");
@@ -779,7 +782,9 @@ void verifyLinkedSchema()
779782
impersonate(READER_USER);
780783
assertHrefContains(table, "A_People db_metadata Query P", "a_db_metadata.view");
781784
assertHrefContains(table, "A_People file_metadata Query Q", "a_template_file_metadata.view");
785+
assertEquals("Q link target not as expected", "_blank", table.getLinkAttribute(0, table.getColumnIndexStrict("A_People file_metadata Query Q"), "target"));
782786
assertHrefContains(table, "A_People template Query R", "a_template_metadata.view");
787+
assertEquals("R link target not as expected", "_blank", table.getLinkAttribute(0, table.getColumnIndexStrict("A_People template Query R"), "target"));
783788
// Columns S-Z have their URL removed by the linked schema.
784789
assertHrefNotPresent(table, "file_metadata Query S");
785790
assertHrefNotPresent(table, "file_metadata Query T");

src/org/labkey/test/util/DataRegionTable.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -765,7 +765,7 @@ public String getHref(int row, int column)
765765

766766
private String _getHref(int row, int column)
767767
{
768-
return link(row, column).getAttribute("href");
768+
return getLinkAttribute(row, column, "href");
769769
}
770770

771771
public String getHref(int row, CharSequence columnIdentifier)
@@ -792,6 +792,11 @@ public boolean hasHref(int row, CharSequence columnIdentifier)
792792
return hasHref(row, getColumnIndexStrict(columnIdentifier));
793793
}
794794

795+
public String getLinkAttribute(int row, int column, String attr)
796+
{
797+
return link(row, column).getAttribute(attr);
798+
}
799+
795800
public WebElement getFlag(int row, CharSequence columnIdentifier)
796801
{
797802
var cell = findCell(row, columnIdentifier);

0 commit comments

Comments
 (0)