|
14 | 14 | import org.labkey.test.components.DomainDesignerPage; |
15 | 15 | import org.labkey.test.components.domain.DomainFormPanel; |
16 | 16 | import org.labkey.test.pages.ReactAssayDesignerPage; |
| 17 | +import org.labkey.test.pages.query.UpdateQueryRowPage; |
17 | 18 | import org.labkey.test.params.FieldDefinition; |
| 19 | +import org.labkey.test.params.FieldInfo; |
18 | 20 | import org.labkey.test.util.APIAssayHelper; |
19 | 21 | import org.labkey.test.util.DataRegionTable; |
20 | 22 | import org.labkey.test.util.PortalHelper; |
@@ -58,76 +60,89 @@ public void preTest() throws Exception |
58 | 60 | @Test |
59 | 61 | public void testProvisionedDomainFieldChanges() throws IOException, CommandException |
60 | 62 | { |
61 | | - String listName = "SampleListWithAllDataTypes"; |
62 | | - |
63 | 63 | log("Creating list with variety of data fields"); |
| 64 | + String listName = TestDataGenerator.randomDomainName("SampleListWithAllDataTypes"); |
| 65 | + FieldInfo stringField = new FieldInfo(TestDataGenerator.randomFieldName("name"), FieldDefinition.ColumnType.String); |
| 66 | + FieldInfo integerField = new FieldInfo(TestDataGenerator.randomFieldName("Test/Integer"), FieldDefinition.ColumnType.Integer); |
| 67 | + FieldInfo decimalField = new FieldInfo(TestDataGenerator.randomFieldName("Test/Decimal"), FieldDefinition.ColumnType.Decimal); |
| 68 | + FieldInfo dateField = new FieldInfo(TestDataGenerator.randomFieldName("Test/Date"), FieldDefinition.ColumnType.DateAndTime); |
| 69 | + FieldInfo booleanField = new FieldInfo(TestDataGenerator.randomFieldName("Test'/\"Boolean"), FieldDefinition.ColumnType.Boolean); // GH Issue #755 |
64 | 70 | TestDataGenerator dgen = new TestDataGenerator("lists", listName, getProjectName()) |
65 | 71 | .withColumns(List.of( |
66 | | - new FieldDefinition("name", FieldDefinition.ColumnType.String), |
67 | | - new FieldDefinition("testInteger", FieldDefinition.ColumnType.Integer), |
68 | | - new FieldDefinition("testDecimal", FieldDefinition.ColumnType.Decimal), |
69 | | - new FieldDefinition("testDate", FieldDefinition.ColumnType.DateAndTime), |
70 | | - new FieldDefinition("testBoolean", FieldDefinition.ColumnType.Boolean))); |
| 72 | + stringField.getFieldDefinition(), |
| 73 | + integerField.getFieldDefinition(), |
| 74 | + decimalField.getFieldDefinition(), |
| 75 | + dateField.getFieldDefinition(), |
| 76 | + booleanField.getFieldDefinition())); |
71 | 77 | dgen.createDomain(createDefaultConnection(), "IntList", Map.of("keyName", "id")); |
72 | 78 |
|
73 | 79 | log("Inserting sample rows in the list"); |
74 | | - dgen.addCustomRow(Map.of("name", "first", "testInteger", "1", |
75 | | - "testDecimal", "1.10", "testDate", "01-01-2022", |
76 | | - "testBoolean", "true")); |
77 | | - dgen.addCustomRow(Map.of("name", "Second", "testInteger", "2", |
78 | | - "testDecimal", "2.20", "testDate", "01-02-2022", |
79 | | - "testBoolean", "false")); |
80 | | - dgen.addCustomRow(Map.of("name", "Third", "testInteger", "3", |
81 | | - "testDecimal", "3.30", "testDate", "01-03-2022", |
82 | | - "testBoolean", "true")); |
| 80 | + dgen.addCustomRow(Map.of( |
| 81 | + stringField.getName(), "first", |
| 82 | + integerField.getName(), "1", |
| 83 | + decimalField.getName(), "1.10", |
| 84 | + dateField.getName(), "01-01-2022", |
| 85 | + booleanField.getName(), "true")); |
| 86 | + dgen.addCustomRow(Map.of( |
| 87 | + stringField.getName(), "Second", |
| 88 | + integerField.getName(), "2", |
| 89 | + decimalField.getName(), "2.20", |
| 90 | + dateField.getName(), "01-02-2022", |
| 91 | + booleanField.getName(), "false")); |
| 92 | + dgen.addCustomRow(Map.of( |
| 93 | + stringField.getName(), "Third", |
| 94 | + integerField.getName(), "3", |
| 95 | + decimalField.getName(), "3.30", |
| 96 | + dateField.getName(), "01-03-2022", |
| 97 | + booleanField.getName(), "true")); |
83 | 98 | dgen.insertRows(createDefaultConnection(), dgen.getRows()); |
84 | 99 |
|
85 | 100 | log("Verifying Integer to Decimal change"); |
86 | 101 | DomainDesignerPage domainDesignerPage = DomainDesignerPage.beginAt(this, getProjectName(), "lists", listName); |
87 | 102 | DomainFormPanel domainFormPanel = domainDesignerPage.fieldsPanel(); |
88 | | - domainFormPanel.getField("testInteger").setType(FieldDefinition.ColumnType.Decimal, true); |
89 | | - domainFormPanel.getField("testBoolean").setNumberFormat("yes;no"); |
| 103 | + domainFormPanel.getField(integerField.getName()).setType(FieldDefinition.ColumnType.Decimal, true); |
| 104 | + domainFormPanel.getField(booleanField.getName()).setNumberFormat("yes;no"); |
90 | 105 | domainDesignerPage.clickFinish(); |
91 | 106 |
|
92 | 107 | clickAndWait(Locator.linkWithText(listName)); |
93 | 108 | DataRegionTable table = new DataRegionTable("query", getDriver()); |
94 | 109 | checker().verifyEquals("Incorrect values after changing integer to decimal", Arrays.asList("1.0", "2.0", "3.0"), |
95 | | - table.getColumnDataAsText("testInteger")); |
| 110 | + table.getColumnDataAsText(integerField.getLabel())); |
96 | 111 |
|
97 | 112 | log("Verifying changing data fields to string"); |
98 | 113 | domainDesignerPage = DomainDesignerPage.beginAt(this, getProjectName(), "lists", listName); |
99 | 114 | domainFormPanel = domainDesignerPage.fieldsPanel(); |
100 | | - domainFormPanel.getField("testInteger").setType(FieldDefinition.ColumnType.String, true); |
101 | | - domainFormPanel.getField("testDecimal").setType(FieldDefinition.ColumnType.String, true); |
102 | | - domainFormPanel.getField("testDate").setType(FieldDefinition.ColumnType.String, true); |
103 | | - domainFormPanel.getField("testBoolean").setType(FieldDefinition.ColumnType.String, true); |
| 115 | + domainFormPanel.getField(integerField.getName()).setType(FieldDefinition.ColumnType.String, true); |
| 116 | + domainFormPanel.getField(decimalField.getName()).setType(FieldDefinition.ColumnType.String, true); |
| 117 | + domainFormPanel.getField(dateField.getName()).setType(FieldDefinition.ColumnType.String, true); |
| 118 | + domainFormPanel.getField(booleanField.getName()).setType(FieldDefinition.ColumnType.String, true); // GH Issue #755 |
104 | 119 | domainDesignerPage.clickFinish(); |
105 | 120 |
|
106 | 121 | clickAndWait(Locator.linkWithText(listName)); |
107 | 122 | table = new DataRegionTable("query", getDriver()); |
108 | 123 | log("Verifying inserting string values"); |
109 | | - table.clickInsertNewRow(); |
110 | | - setFormElement(Locator.name("quf_name"), "Fourth"); |
111 | | - setFormElement(Locator.name("quf_testInteger"), "New1"); |
112 | | - setFormElement(Locator.name("quf_testDecimal"), "New1.1"); |
113 | | - setFormElement(Locator.name("quf_testDate"), "New01-02-2022"); |
114 | | - setFormElement(Locator.name("quf_testBoolean"), "NewTrue"); |
| 124 | + UpdateQueryRowPage updateQueryRowPage = table.clickInsertNewRow(); |
| 125 | + updateQueryRowPage.setField(stringField.getName(), "Fourth"); |
| 126 | + updateQueryRowPage.setField(integerField.getName(), "New1"); |
| 127 | + updateQueryRowPage.setField(decimalField.getName(), "New1.1"); |
| 128 | + updateQueryRowPage.setField(dateField.getName(), "New01-02-2022"); |
| 129 | + updateQueryRowPage.setField(booleanField.getName(), "NewTrue"); |
115 | 130 | clickButton("Submit"); |
116 | | - table.clickEditRow(0); |
117 | | - setFormElement(Locator.name("quf_testInteger"), "Edited1"); |
| 131 | + updateQueryRowPage = table.clickEditRow(0); |
| 132 | + updateQueryRowPage.setField(integerField.getName(), "Edited1"); |
118 | 133 | clickButton("Submit"); |
119 | 134 | checker().verifyEquals("Incorrect values after changing integer to string", Arrays.asList("Edited1", "2", "3", "New1"), |
120 | | - table.getColumnDataAsText("testInteger")); |
| 135 | + table.getColumnDataAsText(integerField.getName())); |
121 | 136 | checker().verifyEquals("Incorrect values after changing decimal to string", Arrays.asList("1.1", "2.2", "3.3", "New1.1"), |
122 | | - table.getColumnDataAsText("testDecimal")); |
| 137 | + table.getColumnDataAsText(decimalField.getName())); |
123 | 138 | checker().verifyEquals("Incorrect values after changing boolean to string", Arrays.asList("yes", "no", "yes", "NewTrue"), |
124 | | - table.getColumnDataAsText("testBoolean")); |
| 139 | + table.getColumnDataAsText(booleanField.getName())); |
125 | 140 | if (WebTestHelper.getDatabaseType() == WebTestHelper.DatabaseType.MicrosoftSQLServer) |
126 | 141 | checker().verifyEquals("Incorrect values after changing date to string", Arrays.asList("Jan 1 2022 12:00AM", "Jan 2 2022 12:00AM", "Jan 3 2022 12:00AM", "New01-02-2022"), |
127 | | - table.getColumnDataAsText("testDate")); |
| 142 | + table.getColumnDataAsText(dateField.getName())); |
128 | 143 | else |
129 | 144 | checker().verifyEquals("Incorrect values after changing date to string", Arrays.asList("2022-01-01 00:00:00", "2022-01-02 00:00:00", "2022-01-03 00:00:00", "New01-02-2022"), |
130 | | - table.getColumnDataAsText("testDate")); |
| 145 | + table.getColumnDataAsText(dateField.getName())); |
131 | 146 | } |
132 | 147 |
|
133 | 148 | @Test |
|
0 commit comments