Bump versions to 4.0.0-SNAPSHOT
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / test / java / org / opendaylight / controller / cluster / databroker / actors / dds / ClientTransactionCursorTest.java
1 /*
2  * Copyright (c) 2017 Pantheon Technologies s.r.o. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.controller.cluster.databroker.actors.dds;
9
10 import static org.mockito.Mockito.verify;
11
12 import java.util.Arrays;
13 import java.util.stream.Collectors;
14 import org.junit.Before;
15 import org.junit.Test;
16 import org.mockito.Mock;
17 import org.mockito.MockitoAnnotations;
18 import org.opendaylight.yangtools.yang.common.QName;
19 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
20 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
21 import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
22
23 @Deprecated(forRemoval = true)
24 public class ClientTransactionCursorTest {
25
26     private static final QName NODE_1 = QName.create("ns-1", "node-1");
27     private static final QName NODE_2 = QName.create(NODE_1, "node-2");
28     private static final QName NODE_3 = QName.create(NODE_1, "node-3");
29
30     @Mock
31     private ClientTransaction transaction;
32     private ClientTransactionCursor cursor;
33
34     @Before
35     public void setUp() {
36         MockitoAnnotations.initMocks(this);
37         cursor = new ClientTransactionCursor(transaction);
38     }
39
40     @Test
41     public void testEnterOneNode() {
42         cursor.enter(YangInstanceIdentifier.NodeIdentifier.create(NODE_1));
43         cursor.delete(YangInstanceIdentifier.NodeIdentifier.create(NODE_2));
44         final YangInstanceIdentifier expected = createId(NODE_1, NODE_2);
45         verify(transaction).delete(expected);
46     }
47
48     @Test
49     public void testEnterNodeIterables() {
50         final Iterable<YangInstanceIdentifier.PathArgument> collect = toPathArg(NODE_1, NODE_2);
51         cursor.enter(collect);
52         cursor.delete(YangInstanceIdentifier.NodeIdentifier.create(NODE_3));
53         final YangInstanceIdentifier expected = createId(NODE_1, NODE_2, NODE_3);
54         verify(transaction).delete(expected);
55     }
56
57     @Test
58     public void testEnterNodeVarargs() {
59         cursor.enter(YangInstanceIdentifier.NodeIdentifier.create(NODE_1),
60                 YangInstanceIdentifier.NodeIdentifier.create(NODE_2));
61         cursor.delete(YangInstanceIdentifier.NodeIdentifier.create(NODE_3));
62         final YangInstanceIdentifier expected = createId(NODE_1, NODE_2, NODE_3);
63         verify(transaction).delete(expected);
64     }
65
66     @Test
67     public void testExitOneLevel() {
68         cursor.enter(toPathArg(NODE_1, NODE_2));
69         cursor.exit();
70         cursor.delete(YangInstanceIdentifier.NodeIdentifier.create(NODE_2));
71         final YangInstanceIdentifier expected = createId(NODE_1, NODE_2);
72         verify(transaction).delete(expected);
73     }
74
75     @Test
76     public void testExitTwoLevels() {
77         cursor.enter(toPathArg(NODE_1, NODE_2, NODE_3));
78         cursor.exit(2);
79         cursor.delete(YangInstanceIdentifier.NodeIdentifier.create(NODE_2));
80         final YangInstanceIdentifier expected = createId(NODE_1, NODE_2);
81         verify(transaction).delete(expected);
82     }
83
84     @Test
85     public void testClose() {
86         cursor.close();
87         verify(transaction).closeCursor(cursor);
88     }
89
90     @Test
91     public void testDelete() {
92         cursor.delete(YangInstanceIdentifier.NodeIdentifier.create(NODE_1));
93         final YangInstanceIdentifier expected = createId(NODE_1);
94         verify(transaction).delete(expected);
95     }
96
97     @Test
98     public void testMerge() {
99         final YangInstanceIdentifier.NodeIdentifier path = YangInstanceIdentifier.NodeIdentifier.create(NODE_1);
100         final ContainerNode data = createData(path.getNodeType());
101         cursor.merge(path, data);
102         final YangInstanceIdentifier expected = createId(NODE_1);
103         verify(transaction).merge(expected, data);
104     }
105
106     @Test
107     public void testWrite() {
108         final YangInstanceIdentifier.NodeIdentifier path = YangInstanceIdentifier.NodeIdentifier.create(NODE_1);
109         final ContainerNode data = createData(path.getNodeType());
110         cursor.write(path, data);
111         final YangInstanceIdentifier expected = createId(NODE_1);
112         verify(transaction).write(expected, data);
113     }
114
115     private static Iterable<YangInstanceIdentifier.PathArgument> toPathArg(final QName... pathArguments) {
116         return Arrays.stream(pathArguments)
117                 .map(YangInstanceIdentifier.NodeIdentifier::create)
118                 .collect(Collectors.toList());
119     }
120
121     private static YangInstanceIdentifier createId(final QName... pathArguments) {
122         return YangInstanceIdentifier.create(toPathArg(pathArguments));
123     }
124
125     private static ContainerNode createData(final QName id) {
126         return Builders.containerBuilder()
127                 .withNodeIdentifier(YangInstanceIdentifier.NodeIdentifier.create(id))
128                 .build();
129     }
130
131 }