import org.springframework.test.context.jdbc.Sql
import javax.validation.ConstraintViolationException
-import java.nio.file.Path
import static org.onap.cps.spi.FetchDescendantsOption.INCLUDE_ALL_DESCENDANTS
import static org.onap.cps.spi.FetchDescendantsOption.OMIT_DESCENDANTS
static final String SET_DATA = '/data/fragment.sql'
static long ID_DATA_NODE_WITH_DESCENDANTS = 4001
static String XPATH_DATA_NODE_WITH_DESCENDANTS = '/parent-1'
- static String XPATH_DATA_NODE_WITH_LEAVES = '/parent-207'
static long DATA_NODE_202_FRAGMENT_ID = 4202L
static long CHILD_OF_DATA_NODE_202_FRAGMENT_ID = 4203L
static long LIST_DATA_NODE_PARENT201_FRAGMENT_ID = 4206L
'2 unique nodes with duplicate xpath' | ["/parent-200", "/parent-202", "/parent-200"] || 2
'list element with key (single quote)' | ["/parent-201/child-204[@key='A']"] || 1
'list element with key (double quote)' | ['/parent-201/child-204[@key="A"]'] || 1
+ 'whole list (not implemented)' | ["/parent-201/child-204"] || 0
'non-existing xpath' | ["/NO-XPATH"] || 0
'existing and non-existing xpaths' | ["/parent-200", "/NO-XPATH", "/parent-201"] || 2
'invalid xpath' | ["INVALID XPATH"] || 0
'whole list' | ['/parent-203/child-204'] || ['/parent-203/child-203']
'list and element in same list' | ['/parent-203/child-204', '/parent-203/child-204[@key="A"]'] || ['/parent-203/child-203']
'list element under list element' | ['/parent-203/child-204[@key="B"]/grand-child-204[@key2="Y"]'] || ["/parent-203/child-203", "/parent-203/child-204[@key='A']", "/parent-203/child-204[@key='B']"]
- 'valid but non-existing xpath' | ['/non-existing', '/parent-203/child-204'] || ['/parent-203/child-203']
'invalid xpath' | ['INVALID XPATH', '/parent-203/child-204'] || ['/parent-203/child-203']
}
+ @Sql([CLEAR_DATA, SET_DATA])
+ def 'Delete multiple data nodes error scenario: #scenario.'() {
+ when: 'deleting nodes is executed for: #scenario.'
+ objectUnderTest.deleteDataNodes(dataspaceName, anchorName, targetXpaths)
+ then: 'a #expectedException is thrown'
+ thrown(expectedException)
+ where: 'the following data is used'
+ scenario | dataspaceName | anchorName | targetXpaths || expectedException
+ 'non-existing dataspace' | 'NO DATASPACE' | 'not relevant' | ['/not relevant'] || DataspaceNotFoundException
+ 'non-existing anchor' | DATASPACE_NAME | 'NO ANCHOR' | ['/not relevant'] || AnchorNotFoundException
+ 'non-existing datanode' | DATASPACE_NAME | ANCHOR_NAME3 | ['/NON-EXISTING-XPATH'] || DataNodeNotFoundException
+ }
+
@Sql([CLEAR_DATA, SET_DATA])
def 'Delete data nodes with "/"-token in list key value: #scenario. (CPS-1409)'() {
given: 'a data nodes with list-element child with "/" in index value (and grandchild)'