summaryrefslogtreecommitdiffstats
path: root/cps-service/src/test
diff options
context:
space:
mode:
authorToineSiebelink <toine.siebelink@est.tech>2021-01-25 18:46:20 +0000
committerputhuparambil.aditya <aditya.puthuparambil@bell.ca>2021-01-27 16:01:33 +0000
commit099f89eda3b0c94d20612ebf1d62795ab7dc833a (patch)
tree9ac4eeb64c92bdf8b4de1773dcfd195158b30a6c /cps-service/src/test
parent34afca00d1f8b2fabe7708c76be714687e136d68 (diff)
Draft at proposal where the DataNodeBuilder 'replaces' yang Utils to buidl a DataNode
Most complexity is related to immutable collections and the fact taht we are adding data while recursing over the orignal data in an uncontrolled order. I cleaned it up as best I could with no logic in DataNode. Espcially the handling of LitLeaves requires some specialed handling. Thsi is just a draft solution for that I still propose we get back to that in dedicated user stories for handling the various types of Yang elements Hope this helps... Issue-ID: CPS-137 Signed-off-by: ToineSiebelink <toine.siebelink@est.tech> Change-Id: Iab7cfcff67412c01bcdab95e707e1350bf60fab1
Diffstat (limited to 'cps-service/src/test')
-rw-r--r--cps-service/src/test/groovy/org/onap/cps/model/DataNodeBuilderSpec.groovy29
-rw-r--r--cps-service/src/test/groovy/org/onap/cps/utils/YangUtilsSpec.groovy21
2 files changed, 29 insertions, 21 deletions
diff --git a/cps-service/src/test/groovy/org/onap/cps/model/DataNodeBuilderSpec.groovy b/cps-service/src/test/groovy/org/onap/cps/model/DataNodeBuilderSpec.groovy
new file mode 100644
index 000000000..0dbde889a
--- /dev/null
+++ b/cps-service/src/test/groovy/org/onap/cps/model/DataNodeBuilderSpec.groovy
@@ -0,0 +1,29 @@
+package org.onap.cps.model
+
+import org.onap.cps.TestUtils
+import org.onap.cps.spi.model.DataNodeBuilder
+import org.onap.cps.utils.YangUtils
+import org.onap.cps.yang.YangTextSchemaSourceSetBuilder
+import spock.lang.Specification
+
+class DataNodeBuilderSpec extends Specification {
+
+ def 'Converting Normalized Node (tree) to a DataNode (tree).'() {
+ given: 'a Yang module'
+ def yangResourceNameToContent = TestUtils.getYangResourcesAsMap('bookstore.yang')
+ def schemaContext = YangTextSchemaSourceSetBuilder.of(yangResourceNameToContent)getSchemaContext()
+ and: 'a normalized node for that model'
+ def jsonData = TestUtils.getResourceFileContent('bookstore.json')
+ def normalizedNode = YangUtils.parseJsonData(jsonData, schemaContext)
+ when: 'the normalized node is converted to a DataNode (tree)'
+ def result = new DataNodeBuilder().withNormalizedNodeTree(normalizedNode).build()
+ then: 'the system creates a (root) fragment without a parent and 2 children (categories)'
+ result.childDataNodes.size() == 2
+ and: 'each child (category) has the root fragment (result) as parent and in turn as 1 child (a list of books)'
+ result.childDataNodes.each { it.childDataNodes.size() == 1 }
+ and: 'the fragments have the correct xpaths'
+ assert result.xpath == '/bookstore'
+ assert result.childDataNodes.collect { it.xpath }
+ .containsAll(["/bookstore/categories[@code='01']", "/bookstore/categories[@code='02']"])
+ }
+}
diff --git a/cps-service/src/test/groovy/org/onap/cps/utils/YangUtilsSpec.groovy b/cps-service/src/test/groovy/org/onap/cps/utils/YangUtilsSpec.groovy
index 9237fa29a..e6e5d6a36 100644
--- a/cps-service/src/test/groovy/org/onap/cps/utils/YangUtilsSpec.groovy
+++ b/cps-service/src/test/groovy/org/onap/cps/utils/YangUtilsSpec.groovy
@@ -54,25 +54,4 @@ class YangUtilsSpec extends Specification{
'{incomplete json' | 'incomplete json'
'{"test:bookstore": {"address": "Parnell st." }}' | 'json with un-modelled data'
}
-
- def 'Breaking a Json Data Object into fragments.'() {
- given: 'a Yang module'
- def yangResourceNameToContent = TestUtils.getYangResourcesAsMap('bookstore.yang')
- def schemaContext = YangTextSchemaSourceSetBuilder.of(yangResourceNameToContent)getSchemaContext()
- def module = schemaContext.findModule('stores', Revision.of('2020-09-15')).get()
- and: 'a normalized node for that model'
- def jsonData = TestUtils.getResourceFileContent('bookstore.json')
- def normalizedNode = YangUtils.parseJsonData(jsonData, schemaContext)
- when: 'the json data is fragmented'
- def result = YangUtils.fragmentNormalizedNode(normalizedNode, module)
- then: 'the system creates a (root) fragment without a parent and 2 children (categories)'
- result.parentFragment == null
- result.childFragments.size() == 2
- and: 'each child (category) has the root fragment (result) as parent and in turn as 1 child (a list of books)'
- result.childFragments.each { it.parentFragment == result && it.childFragments.size() == 1 }
- and: 'the fragments have the correct xpaths'
- assert result.xpath == '/bookstore'
- assert result.childFragments.collect { it.xpath }
- .containsAll(["/bookstore/categories[@code='01']", "/bookstore/categories[@code='02']"])
- }
}