summaryrefslogtreecommitdiffstats
path: root/cps-service/src/test/groovy/org/onap/cps/model/DataNodeBuilderSpec.groovy
blob: 0dbde889a4552575295307e8bb3abd71a5f3f913 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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']"])
    }
}