summaryrefslogtreecommitdiffstats
path: root/cps-service/src/test
diff options
context:
space:
mode:
authorLuke Gleeson <luke.gleeson@est.tech>2023-08-03 13:13:47 +0000
committerGerrit Code Review <gerrit@onap.org>2023-08-03 13:13:47 +0000
commit478c5dac54ed508f0ce97e18e91aac7b821d814f (patch)
tree6b8d3d25972ebacf2d429ede2fff601cce15bc2e /cps-service/src/test
parent2a1e576e6d12456e43c47d4cd81be7f88d1a2a2b (diff)
parentf248b5d9b794d5bdff59145406e0398d6fdcafa4 (diff)
Merge "Support pagination in query across all anchors(ep4)"
Diffstat (limited to 'cps-service/src/test')
-rw-r--r--cps-service/src/test/groovy/org/onap/cps/api/impl/CpsQueryServiceImplSpec.groovy15
-rw-r--r--cps-service/src/test/groovy/org/onap/cps/spi/PaginationOptionSpec.groovy41
-rw-r--r--cps-service/src/test/groovy/org/onap/cps/utils/DataMapUtilsSpec.groovy12
3 files changed, 60 insertions, 8 deletions
diff --git a/cps-service/src/test/groovy/org/onap/cps/api/impl/CpsQueryServiceImplSpec.groovy b/cps-service/src/test/groovy/org/onap/cps/api/impl/CpsQueryServiceImplSpec.groovy
index 553027a4b..1ad501791 100644
--- a/cps-service/src/test/groovy/org/onap/cps/api/impl/CpsQueryServiceImplSpec.groovy
+++ b/cps-service/src/test/groovy/org/onap/cps/api/impl/CpsQueryServiceImplSpec.groovy
@@ -23,6 +23,7 @@ package org.onap.cps.api.impl
import org.onap.cps.spi.CpsDataPersistenceService
import org.onap.cps.spi.FetchDescendantsOption
+import org.onap.cps.spi.PaginationOption
import org.onap.cps.spi.utils.CpsValidator
import spock.lang.Specification
@@ -52,14 +53,22 @@ class CpsQueryServiceImplSpec extends Specification {
given: 'a dataspace name, an anchor name and a cps path'
def dataspaceName = 'some-dataspace'
def cpsPath = '/cps-path'
+ def paginationOption = new PaginationOption(1, 2)
when: 'queryDataNodes is invoked'
- objectUnderTest.queryDataNodesAcrossAnchors(dataspaceName, cpsPath, fetchDescendantsOption)
+ objectUnderTest.queryDataNodesAcrossAnchors(dataspaceName, cpsPath, fetchDescendantsOption, paginationOption)
then: 'the persistence service is called once with the correct parameters'
- 1 * mockCpsDataPersistenceService.queryDataNodesAcrossAnchors(dataspaceName, cpsPath, fetchDescendantsOption)
+ 1 * mockCpsDataPersistenceService.queryDataNodesAcrossAnchors(dataspaceName, cpsPath, fetchDescendantsOption, paginationOption)
and: 'the CpsValidator is called on the dataspaceName, schemaSetName and anchorName'
1 * mockCpsValidator.validateNameCharacters(dataspaceName)
where: 'all fetch descendants options are supported'
- fetchDescendantsOption << [FetchDescendantsOption.OMIT_DESCENDANTS, FetchDescendantsOption.INCLUDE_ALL_DESCENDANTS]
+ fetchDescendantsOption << [FetchDescendantsOption.OMIT_DESCENDANTS, FetchDescendantsOption.INCLUDE_ALL_DESCENDANTS,
+ FetchDescendantsOption.DIRECT_CHILDREN_ONLY, new FetchDescendantsOption(10)]
}
+ def 'Query total anchors for dataspace and cps path.'() {
+ when: 'query total anchors is invoked'
+ objectUnderTest.countAnchorsForDataspaceAndCpsPath("some-dataspace", "/cps-path")
+ then: 'the persistence service is called once with the correct parameters'
+ 1 * mockCpsDataPersistenceService.countAnchorsForDataspaceAndCpsPath("some-dataspace", "/cps-path")
+ }
}
diff --git a/cps-service/src/test/groovy/org/onap/cps/spi/PaginationOptionSpec.groovy b/cps-service/src/test/groovy/org/onap/cps/spi/PaginationOptionSpec.groovy
new file mode 100644
index 000000000..9d74a1722
--- /dev/null
+++ b/cps-service/src/test/groovy/org/onap/cps/spi/PaginationOptionSpec.groovy
@@ -0,0 +1,41 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2022-2023 Nordix Foundation
+ * Modifications Copyright (C) 2023 TechMahindra Ltd.
+ * ================================================================================
+ * 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.spi
+
+import spock.lang.Specification
+
+class PaginationOptionSpec extends Specification {
+
+ def 'Pagination validation with: #scenario'() {
+ given: 'pagination option with pageIndex and pageSize'
+ def paginationOption = new PaginationOption(pageIndex, pageSize)
+ expect: 'validation returns expected result'
+ assert paginationOption.isValidPaginationOption() == expectedIsValidPaginationOption
+ where: 'following parameters are used'
+ scenario | pageIndex | pageSize || expectedIsValidPaginationOption
+ 'valid pagination' | 1 | 1 || true
+ 'negative index' | -1 | 1 || false
+ 'negative size' | 1 | -1 || false
+ 'zero index' | 0 | 1 || false
+ 'zero size' | 1 | 0 || false
+ }
+}
diff --git a/cps-service/src/test/groovy/org/onap/cps/utils/DataMapUtilsSpec.groovy b/cps-service/src/test/groovy/org/onap/cps/utils/DataMapUtilsSpec.groovy
index 29085a9c7..6b9f9acb3 100644
--- a/cps-service/src/test/groovy/org/onap/cps/utils/DataMapUtilsSpec.groovy
+++ b/cps-service/src/test/groovy/org/onap/cps/utils/DataMapUtilsSpec.groovy
@@ -74,17 +74,19 @@ class DataMapUtilsSpec extends Specification {
def 'Data node structure with anchor name conversion to map with root node identifier.'() {
when: 'data node structure is converted to a map with root node identifier'
- def result = DataMapUtils.toDataMapWithIdentifierAndAnchor(dataNodeWithAnchor, dataNodeWithAnchor.moduleNamePrefix)
+ def result = DataMapUtils.toDataMapWithIdentifierAndAnchor([dataNodeWithAnchor], dataNodeWithAnchor.anchorName, dataNodeWithAnchor.moduleNamePrefix)
then: 'root node leaves are populated under its node identifier'
- def parentNode = result.get("dataNode").parent
- parentNode.parentLeaf == 'parentLeafValue'
- parentNode.parentLeafList == ['parentLeafListEntry1','parentLeafListEntry2']
+ def dataNodes = result.dataNodes as List
+ assert dataNodes.size() == 1
+ def parentNode = dataNodes[0].parent
+ assert parentNode.parentLeaf == 'parentLeafValue'
+ assert parentNode.parentLeafList == ['parentLeafListEntry1','parentLeafListEntry2']
and: 'leaves for child element is populated under its node identifier'
assert parentNode.'child-object'.childLeaf == 'childLeafValue'
and: 'leaves for grandchild element is populated under its node identifier'
assert parentNode.'child-object'.'grand-child-object'.grandChildLeaf == 'grandChildLeafValue'
and: 'data node is associated with anchor name'
- assert result.get('anchorName') == 'anchor01'
+ assert result.anchorName == 'anchor01'
}
def 'Data node without leaves and without children.'() {