CompositeStateBuilder added for building the compositeState
[cps.git] / cps-ncmp-service / src / test / groovy / org / onap / cps / ncmp / api / impl / operations / YangModelCmHandleRetrieverSpec.groovy
index beea1fa..7fbfa77 100644 (file)
@@ -22,6 +22,8 @@ package org.onap.cps.ncmp.api.impl.operations
 
 import org.onap.cps.api.CpsDataService
 import org.onap.cps.ncmp.api.impl.yangmodels.YangModelCmHandle
+import org.onap.cps.ncmp.api.inventory.CmHandleState
+import org.onap.cps.ncmp.api.inventory.CompositeStateBuilder
 import org.onap.cps.spi.exceptions.DataValidationException
 import spock.lang.Shared
 
@@ -39,6 +41,9 @@ class YangModelCmHandleRetrieverSpec extends Specification {
     def leaves = ["dmi-service-name":"common service name","dmi-data-service-name":"data service name","dmi-model-service-name":"model service name"]
     def xpath = "/dmi-registry/cm-handles[@id='some-cm-handle']"
 
+    @Shared
+    def compositeState = new CompositeStateBuilder().withCmHandleState(CmHandleState.ADVISED).build()
+
     @Shared
     def childDataNodesForCmHandleWithAllProperties = [new DataNode(xpath: "/dmi-registry/cm-handles[@id='some cm handle']/additional-properties[@name='name1']", leaves: ["name":"name1", "value":"value1"]),
                                                       new DataNode(xpath: "/dmi-registry/cm-handles[@id='some cm handle']/public-properties[@name='name2']", leaves: ["name":"name2","value":"value2"])]
@@ -49,6 +54,9 @@ class YangModelCmHandleRetrieverSpec extends Specification {
     @Shared
     def childDataNodesForCmHandleWithPublicProperties = [new DataNode(xpath: "/dmi-registry/cm-handles[@id='some-cm-handle']/public-properties[@name='name2']", leaves: ["name":"name2","value":"value2"])]
 
+    @Shared
+    def childDataNodesForCmHandleWithState = [new DataNode(xpath: "/dmi-registry/cm-handles[@id='some-cm-handle']/state", leaves: ['cm-handle-state': 'ADVISED'])]
+
     def "Retrieve CmHandle using datanode with #scenario."() {
         given: 'the cps data service returns a data node from the DMI registry'
             def dataNode = new DataNode(childDataNodes:childDataNodes, leaves: leaves)
@@ -63,12 +71,15 @@ class YangModelCmHandleRetrieverSpec extends Specification {
         and: 'the expected DMI properties'
             result.dmiProperties == expectedDmiProperties
             result.publicProperties == expectedPublicProperties
+        and: 'the state details are returned'
+            result.compositeState.cmhandleState == expectedCompositeState
         where: 'the following parameters are used'
-            scenario                    | childDataNodes                                || expectedDmiProperties                               || expectedPublicProperties
-            'no properties'             | []                                            || []                                                  || []
-            'DMI and public properties' | childDataNodesForCmHandleWithAllProperties    || [new YangModelCmHandle.Property("name1", "value1")] || [new YangModelCmHandle.Property("name2", "value2")]
-            'just DMI properties'       | childDataNodesForCmHandleWithDMIProperties    || [new YangModelCmHandle.Property("name1", "value1")] || []
-            'just public properties'    | childDataNodesForCmHandleWithPublicProperties || []                                                  || [new YangModelCmHandle.Property("name2", "value2")]
+            scenario                    | childDataNodes                                || expectedDmiProperties                               || expectedPublicProperties                              || expectedCompositeState
+            'no properties'             | []                                            || []                                                  || []                                                    || null
+            'DMI and public properties' | childDataNodesForCmHandleWithAllProperties    || [new YangModelCmHandle.Property("name1", "value1")] || [new YangModelCmHandle.Property("name2", "value2")]   || null
+            'just DMI properties'       | childDataNodesForCmHandleWithDMIProperties    || [new YangModelCmHandle.Property("name1", "value1")] || []                                                    || null
+            'just public properties'    | childDataNodesForCmHandleWithPublicProperties || []                                                  || [new YangModelCmHandle.Property("name2", "value2")]   || null
+            'with state details'        | childDataNodesForCmHandleWithState            || []                                                  || []                                                    || CmHandleState.ADVISED
     }
 
     def "Retrieve CmHandle using datanode with invalid CmHandle id."() {
@@ -79,4 +90,16 @@ class YangModelCmHandleRetrieverSpec extends Specification {
         and: 'the result is not returned'
             result == null
     }
+
+    def "Handling missing service names as null CPS-1043."() {
+        given: 'the cps data service returns a data node from the DMI registry with empty child and leaf attributes'
+            def dataNode = new DataNode(childDataNodes:[], leaves: [:])
+            mockCpsDataService.getDataNode('NCMP-Admin', 'ncmp-dmi-registry', xpath, INCLUDE_ALL_DESCENDANTS) >> dataNode
+        when: 'retrieving the yang modelled cm handle'
+            def result = objectUnderTest.getYangModelCmHandle(cmHandleId)
+        then: 'the service names ae returned as null'
+            result.dmiServiceName == null
+            result.dmiDataServiceName == null
+            result.dmiModelServiceName == null
+    }
 }