Add Query Spec to integration-test package 00/134000/1
authorlukegleeson <luke.gleeson@est.tech>
Tue, 4 Apr 2023 09:17:18 +0000 (10:17 +0100)
committerlukegleeson <luke.gleeson@est.tech>
Tue, 4 Apr 2023 09:22:13 +0000 (10:22 +0100)
Issue-ID: CPS-1598
Signed-off-by: lukegleeson <luke.gleeson@est.tech>
Change-Id: Ifab8863eae4a3ee07ba3d6096e73f9f98077584d

integration-test/src/test/groovy/org/onap/cps/integration/functional/CpsQueryServiceIntegrationSpec.groovy [new file with mode: 0644]

diff --git a/integration-test/src/test/groovy/org/onap/cps/integration/functional/CpsQueryServiceIntegrationSpec.groovy b/integration-test/src/test/groovy/org/onap/cps/integration/functional/CpsQueryServiceIntegrationSpec.groovy
new file mode 100644 (file)
index 0000000..496b36d
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ *  ============LICENSE_START=======================================================
+ *  Copyright (C) 2023 Nordix Foundation
+ *  ================================================================================
+ *  Licensed 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.
+ *
+ *  SPDX-License-Identifier: Apache-2.0
+ *  ============LICENSE_END=========================================================
+ */
+
+package org.onap.cps.integration.functional
+
+import org.onap.cps.integration.base.FunctionalSpecBase
+import org.onap.cps.spi.FetchDescendantsOption
+
+class CpsQueryServiceIntegrationSpec extends FunctionalSpecBase {
+
+    def objectUnderTest
+
+    def setup() { objectUnderTest = cpsQueryService }
+
+    def 'Query bookstore using CPS path where #scenario.'() {
+        when: 'query data nodes for bookstore container'
+            def result = objectUnderTest.queryDataNodes(FUNCTIONAL_TEST_DATASPACE, BOOKSTORE_ANCHOR, cpsPath, FetchDescendantsOption.INCLUDE_ALL_DESCENDANTS)
+        then: 'the result contains expected number of nodes'
+            assert result.size() == expectedResultSize
+        and: 'the result contains the expected leaf values'
+            result.leaves.forEach( dataNodeLeaves -> {
+                expectedLeaves.forEach( (expectedLeafKey,expectedLeafValue) -> {
+                    assert dataNodeLeaves[expectedLeafKey] == expectedLeafValue
+                })
+            })
+        where:
+            scenario                                      | cpsPath                                    || expectedResultSize | expectedLeaves
+            'the and condition is used'                   | '//books[@lang="English" and @price=15]'   || 2                  | [lang:"English", price:15]
+            'the and is used where result does not exist' | '//books[@lang="English" and @price=1000]' || 0                  | []
+    }
+}