From 1f64d85f1cd85653a34b8656c67f4cc2565808e7 Mon Sep 17 00:00:00 2001 From: ToineSiebelink Date: Mon, 8 Feb 2021 11:36:59 +0000 Subject: General groovy test improvements - Use the power of Groovy (maps and collections) - Improve data sample readability - Split out Datanode get scenarios: Separate Leave test from children related tests Issue-ID: CPS-160 Signed-off-by: ToineSiebelink Change-Id: Ife40749525a931b23091b472680c233f012bc457 --- .../cps/api/impl/CpsAdminServiceImplSpec.groovy | 14 ++--- .../org/onap/cps/utils/DataMapUtilsSpec.groovy | 66 +++++++++------------- 2 files changed, 35 insertions(+), 45 deletions(-) (limited to 'cps-service') diff --git a/cps-service/src/test/groovy/org/onap/cps/api/impl/CpsAdminServiceImplSpec.groovy b/cps-service/src/test/groovy/org/onap/cps/api/impl/CpsAdminServiceImplSpec.groovy index 7c0c6267a..6631a2013 100755 --- a/cps-service/src/test/groovy/org/onap/cps/api/impl/CpsAdminServiceImplSpec.groovy +++ b/cps-service/src/test/groovy/org/onap/cps/api/impl/CpsAdminServiceImplSpec.groovy @@ -48,17 +48,17 @@ class CpsAdminServiceImplSpec extends Specification { def 'Retrieve all anchors for dataspace.'() { given: 'that anchor is associated with the dataspace' - Collection anchorCollection = Arrays.asList(new Anchor()) - mockCpsAdminPersistenceService.getAnchors('someDataspace') >> { anchorCollection } + def anchors = [new Anchor()] + mockCpsAdminPersistenceService.getAnchors('someDataspace') >> anchors expect: 'the collection provided by persistence service is returned as result' - objectUnderTest.getAnchors('someDataspace') == anchorCollection + objectUnderTest.getAnchors('someDataspace') == anchors } - + def 'Retrieve anchor for dataspace and provided anchor name.'() { given: 'that anchor name is associated with the dataspace' Anchor anchor = new Anchor() - mockCpsAdminPersistenceService.getAnchor('someDataspace','someAnchor') >> anchor + mockCpsAdminPersistenceService.getAnchor('someDataspace','someAnchor') >> anchor expect: 'the anchor provided by persistence service is returned as result' objectUnderTest.getAnchor('someDataspace','someAnchor') == anchor - } -} \ No newline at end of file + } +} 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 61cfc37aa..429ab40b9 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 @@ -1,6 +1,7 @@ /* * ============LICENSE_START======================================================= * Copyright (C) 2021 Pantheon.tech + * Modifications Copyright (C) 2020 Nordix Foundation * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,56 +20,45 @@ package org.onap.cps.utils -import com.google.common.collect.ImmutableMap -import org.onap.cps.spi.model.DataNode import org.onap.cps.spi.model.DataNodeBuilder import spock.lang.Specification -import static java.util.Arrays.asList - class DataMapUtilsSpec extends Specification { - DataNode dataNode = buildDataNode( - "/parent", - ImmutableMap. of("a", "b", "c", asList("d", "e")), - asList( - buildDataNode( - "/parent/child-list[@name='x']", - ImmutableMap. of("name", "x"), - Collections.emptyList()), - buildDataNode( - "/parent/child-list[@name='y']", - ImmutableMap. of("name", "y"), - Collections.emptyList()), - buildDataNode( - "/parent/child-object", - ImmutableMap. of("m", "n"), - asList( - buildDataNode( - "/parent/child-object/grand-child", - ImmutableMap. of("o", "p"), - Collections.emptyList() - ) - ) - ), - )) + def noChildren = [] + + def dataNode = buildDataNode( + "/parent",[parentLeaf:'parentLeafValue', parentLeafList:['parentLeafListEntry1','parentLeafListEntry2']],[ + buildDataNode('/parent/child-list[@id=1]',[listElementLeaf:'listElement1leafValue'],noChildren), + buildDataNode('/parent/child-list[@id=2]',[listElementLeaf:'listElement2leafValue'],noChildren), + buildDataNode('/parent/child-object',[childLeaf:'childLeafValue'], + [buildDataNode('/parent/child-object/grand-child-object',[grandChildLeaf:'grandChildLeafValue'],noChildren)] + ), + ]) - static DataNode buildDataNode(String xpath, Map leaves, List children) { + static def buildDataNode(xpath, leaves, children) { return new DataNodeBuilder().withXpath(xpath).withLeaves(leaves).withChildDataNodes(children).build() } def 'Data node structure conversion to map.'() { - when: 'data node structure converted to map' - def result = DataMapUtils.toDataMap(dataNode) + when: 'data node structure is converted to a map' + Map result = DataMapUtils.toDataMap(dataNode) + then: 'root node leaves are top level elements' - assert result["a"] == "b" - assert ((Collection) result["c"]).containsAll("d", "e") + result.parentLeaf == 'parentLeafValue' + result.parentLeafList == ['parentLeafListEntry1','parentLeafListEntry2'] + and: 'leaves of child list element are listed as structures under common identifier' - assert ((Collection) result["child-list"]).size() == 2 - assert ((Collection) result["child-list"]).containsAll(["name": "x"], ["name": "y"]) - and: 'leaves for child and grand-child elements are populated under their node identifiers' - assert result["child-object"]["m"] == "n" - assert result["child-object"]["grand-child"]["o"] == "p" + result.'child-list'.collect().containsAll(['listElementLeaf': 'listElement1leafValue'], + ['listElementLeaf': 'listElement2leafValue']) + + and: 'leaves for child element is populated under its node identifier' + Map childObjectData = result.'child-object' + childObjectData.childLeaf == 'childLeafValue' + + and: 'leaves for grandchild element is populated under its node identifier' + Map grandChildObjectData = childObjectData.'grand-child-object' + grandChildObjectData.grandChildLeaf == 'grandChildLeafValue' } } -- cgit 1.2.3-korg