This is an automated email from the ASF dual-hosted git repository.

zehnder pushed a commit to branch 
3430-filtering-for-numerical-dimension-properties-in-data-explorer
in repository https://gitbox.apache.org/repos/asf/streampipes.git


The following commit(s) were added to 
refs/heads/3430-filtering-for-numerical-dimension-properties-in-data-explorer 
by this push:
     new 02e7a37c1c fix(#3430): Add e2e test to validate functionality of 
filter dimension property numbers
02e7a37c1c is described below

commit 02e7a37c1cbb1b7d9575a69fb4dc78c1def8da50
Author: Philipp Zehnder <[email protected]>
AuthorDate: Mon Jan 20 13:42:10 2025 +0100

    fix(#3430): Add e2e test to validate functionality of filter dimension 
property numbers
---
 .../datalake/filterDimensionProperties.csv         |  3 +
 ui/cypress/support/utils/connect/ConnectUtils.ts   | 24 ++++---
 .../datalake/filterDimensionProperties.spec.ts     | 80 ++++++++++++++++++++++
 3 files changed, 99 insertions(+), 8 deletions(-)

diff --git a/ui/cypress/fixtures/datalake/filterDimensionProperties.csv 
b/ui/cypress/fixtures/datalake/filterDimensionProperties.csv
new file mode 100644
index 0000000000..7b42dc4df1
--- /dev/null
+++ b/ui/cypress/fixtures/datalake/filterDimensionProperties.csv
@@ -0,0 +1,3 @@
+timestamp;dimensionKey;value
+1737123058000;1.0;10.0
+1737123059000;2.0;10.0
diff --git a/ui/cypress/support/utils/connect/ConnectUtils.ts 
b/ui/cypress/support/utils/connect/ConnectUtils.ts
index 52d2ec6c88..40956ebffb 100644
--- a/ui/cypress/support/utils/connect/ConnectUtils.ts
+++ b/ui/cypress/support/utils/connect/ConnectUtils.ts
@@ -48,6 +48,8 @@ export class ConnectUtils {
             ConnectEventSchemaUtils.addTimestampProperty();
         }
 
+        ConnectUtils.configureDimensionProperties(adapterConfiguration);
+
         ConnectEventSchemaUtils.finishEventSchemaConfiguration();
 
         ConnectUtils.startAdapter(
@@ -66,6 +68,20 @@ export class ConnectUtils {
 
         ConnectUtils.configureAdapter(adapterConfiguration);
 
+        ConnectUtils.configureDimensionProperties(adapterConfiguration);
+
+        if (adapterConfiguration.timestampProperty) {
+            ConnectEventSchemaUtils.markPropertyAsTimestamp(
+                adapterConfiguration.timestampProperty,
+            );
+        }
+
+        ConnectEventSchemaUtils.finishEventSchemaConfiguration();
+    }
+
+    private static configureDimensionProperties(
+        adapterConfiguration: AdapterInput,
+    ) {
         if (adapterConfiguration.dimensionProperties.length > 0) {
             adapterConfiguration.dimensionProperties.forEach(
                 dimensionPropertyName => {
@@ -75,14 +91,6 @@ export class ConnectUtils {
                 },
             );
         }
-
-        if (adapterConfiguration.timestampProperty) {
-            ConnectEventSchemaUtils.markPropertyAsTimestamp(
-                adapterConfiguration.timestampProperty,
-            );
-        }
-
-        ConnectEventSchemaUtils.finishEventSchemaConfiguration();
     }
 
     public static addMachineDataSimulator(
diff --git a/ui/cypress/tests/datalake/filterDimensionProperties.spec.ts 
b/ui/cypress/tests/datalake/filterDimensionProperties.spec.ts
new file mode 100644
index 0000000000..9e1bb1d125
--- /dev/null
+++ b/ui/cypress/tests/datalake/filterDimensionProperties.spec.ts
@@ -0,0 +1,80 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+import { DataLakeUtils } from '../../support/utils/datalake/DataLakeUtils';
+import { DataLakeWidgetTableUtils } from 
'../../support/utils/datalake/DataLakeWidgetTableUtils';
+import { DataLakeFilterConfig } from 
'../../support/model/DataLakeFilterConfig';
+import { AdapterBuilder } from '../../support/builder/AdapterBuilder';
+import { ConnectBtns } from '../../support/utils/connect/ConnectBtns';
+import { ConnectUtils } from '../../support/utils/connect/ConnectUtils';
+import { FileManagementUtils } from '../../support/utils/FileManagementUtils';
+
+describe('Validate that filter works for numerical dimension property', () => {
+    beforeEach('Setup Test', () => {
+        cy.initStreamPipesTest();
+
+        FileManagementUtils.addFile('datalake/filterDimensionProperties.csv');
+        const adapterInput = AdapterBuilder.create('File_Stream')
+            .setName('Test Adapter')
+            .setTimestampProperty('timestamp')
+            .addDimensionProperty('dimensionKey')
+            .setStoreInDataLake()
+            .setFormat('csv')
+            .addFormatInput('input', ConnectBtns.csvDelimiter(), ';')
+            .addFormatInput('checkbox', ConnectBtns.csvHeader(), 'check')
+            .build();
+        ConnectUtils.testAdapter(adapterInput);
+    });
+
+    it('Perform Test', () => {
+        DataLakeUtils.goToDatalake();
+        DataLakeUtils.createAndEditDataView();
+
+        // create table widget and select time range
+        const startDate = new Date(1737029442000);
+        const endDate = new Date(1742220659000);
+
+        DataLakeUtils.clickOrderBy('descending');
+
+        DataLakeUtils.openVisualizationConfig();
+        DataLakeUtils.selectVisualizationType('Table');
+        DataLakeUtils.selectTimeRange(startDate, endDate);
+        cy.wait(1000);
+
+        // validate data in table
+        DataLakeWidgetTableUtils.checkAmountOfRows(2);
+
+        // select filter for tag
+        DataLakeUtils.selectDataConfig();
+        const filterConfig = new DataLakeFilterConfig(
+            'dimensionKey',
+            '1.0',
+            '=',
+        );
+        DataLakeUtils.dataConfigAddFilter(filterConfig);
+
+        // validate data in table is filtered
+        DataLakeWidgetTableUtils.checkAmountOfRows(1);
+
+        // remove filter
+        DataLakeUtils.dataConfigRemoveFilter();
+
+        // validate data again
+        DataLakeWidgetTableUtils.checkAmountOfRows(2);
+    });
+});

Reply via email to