From f0527c58c17963d940535d0ce0eb934c2b4c635c Mon Sep 17 00:00:00 2001 From: ToineSiebelink Date: Tue, 6 Jul 2021 13:03:03 +0100 Subject: Support text() condition - Added Antlr parsing of text() condition (as an optional additional to any query) - Implemented text-condition combined with descendants - Refactor descendants queries into using one more flexible Custom (native) Query builder - Refactor ALL cpsPath queries to now use FragmentRepositoryCpsPathQuery (custom query builder) - Refactor Antrl code to simply parsing of cpsPath and allow all combinations (no more query types, addresses CPS-436) - Minor clean up of some minor convention issues in CpsAdminServiceImplSpec.groovy (found during groovy demo) - Update .rst documentation of xPaths - Fixed incorrect matching of additional list indexes using more precise SIMILAR-TO regex in postgreSQL - Documented special chararter limitation (CPS-500) - Checked for consistent use of term 'CPS path' in documentation and error message - Included (updated) copyright in all .SQL test files Issue-ID: CPS-452 Issue-ID: CPS-436 Issue-ID: CPS-500 Signed-off-by: ToineSiebelink Change-Id: If422d25cafd2850d25c9a28dea16ba7a5f93dddb --- .../org/onap/cps/api/impl/CpsAdminServiceImplSpec.groovy | 10 +++++----- .../groovy/org/onap/cps/model/DataNodeBuilderSpec.groovy | 14 ++++++++------ cps-service/src/test/resources/test-tree.json | 8 +++++++- cps-service/src/test/resources/test-tree.yang | 12 ++++++++++++ 4 files changed, 32 insertions(+), 12 deletions(-) (limited to 'cps-service/src') 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 532f442036..be213c0fa0 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 @@ -35,16 +35,16 @@ class CpsAdminServiceImplSpec extends Specification { } def 'Create dataspace method invokes persistence service.'() { - when: 'Create dataspace method is invoked' + when: 'create dataspace method is invoked' objectUnderTest.createDataspace('someDataspace') - then: 'The persistence service method is invoked with same parameters' + then: 'the persistence service method is invoked with same parameters' 1 * mockCpsAdminPersistenceService.createDataspace('someDataspace') } def 'Create anchor method invokes persistence service.'() { - when: 'Create anchor method is invoked' + when: 'create anchor method is invoked' objectUnderTest.createAnchor('someDataspace', 'someSchemaSet', 'someAnchorName') - then: 'The persistence service method is invoked with same parameters' + then: 'the persistence service method is invoked with same parameters' 1 * mockCpsAdminPersistenceService.createAnchor('someDataspace', 'someSchemaSet', 'someAnchorName') } @@ -61,7 +61,7 @@ class CpsAdminServiceImplSpec extends Specification { Anchor anchor = new Anchor() mockCpsAdminPersistenceService.getAnchor('someDataspace','someAnchor') >> anchor expect: 'the anchor provided by persistence service is returned as result' - objectUnderTest.getAnchor('someDataspace','someAnchor') == anchor + assert objectUnderTest.getAnchor('someDataspace','someAnchor') == anchor } def 'Delete anchor.'() { 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 index 7f50f7f524..2751d55075 100644 --- a/cps-service/src/test/groovy/org/onap/cps/model/DataNodeBuilderSpec.groovy +++ b/cps-service/src/test/groovy/org/onap/cps/model/DataNodeBuilderSpec.groovy @@ -1,6 +1,7 @@ /* * ============LICENSE_START======================================================= * Copyright (C) 2021 Pantheon.tech + * Modifications Copyright (C) 2021 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -28,11 +29,12 @@ import spock.lang.Specification class DataNodeBuilderSpec extends Specification { Map> expectedLeavesByXpathMap = [ - '/test-tree' : [], - '/test-tree/branch[@name=\'Left\']' : [name: 'Left'], - '/test-tree/branch[@name=\'Left\']/nest' : [name: 'Small', birds: ['Sparrow', 'Robin', 'Finch']], - '/test-tree/branch[@name=\'Right\']' : [name: 'Right'], - '/test-tree/branch[@name=\'Right\']/nest': [name: 'Big', birds: ['Owl', 'Raven', 'Crow']] + '/test-tree' : [], + '/test-tree/branch[@name=\'Left\']' : [name: 'Left'], + '/test-tree/branch[@name=\'Left\']/nest' : [name: 'Small', birds: ['Sparrow', 'Robin', 'Finch']], + '/test-tree/branch[@name=\'Right\']' : [name: 'Right'], + '/test-tree/branch[@name=\'Right\']/nest' : [name: 'Big', birds: ['Owl', 'Raven', 'Crow']], + '/test-tree/fruit[@color=\'Green\' and @name=\'Apple\']': [color: 'Green', name: 'Apple'] ] String[] networkTopologyModelRfc8345 = [ @@ -55,7 +57,7 @@ class DataNodeBuilderSpec extends Specification { def result = new DataNodeBuilder().withNormalizedNodeTree(normalizedNode).build() def mappedResult = TestUtils.getFlattenMapByXpath(result) then: '5 DataNode objects with unique xpath were created in total' - mappedResult.size() == 5 + mappedResult.size() == 6 and: 'all expected xpaths were built' mappedResult.keySet().containsAll(expectedLeavesByXpathMap.keySet()) and: 'each data node contains the expected attributes' diff --git a/cps-service/src/test/resources/test-tree.json b/cps-service/src/test/resources/test-tree.json index bc9cbd7cea..e1789abc1d 100644 --- a/cps-service/src/test/resources/test-tree.json +++ b/cps-service/src/test/resources/test-tree.json @@ -23,6 +23,12 @@ ] } } + ], + "fruit": [ + { + "name": "Apple", + "color": "Green" + } ] } -} \ No newline at end of file +} diff --git a/cps-service/src/test/resources/test-tree.yang b/cps-service/src/test/resources/test-tree.yang index faba8a11d4..63100657ef 100644 --- a/cps-service/src/test/resources/test-tree.yang +++ b/cps-service/src/test/resources/test-tree.yang @@ -20,5 +20,17 @@ module test-tree { } } } + list fruit { + key "name color"; + + leaf name { + type string; + } + + leaf color { + type string; + } + + } } } -- cgit 1.2.3-korg