1 package org.opendaylight.controller.cluster.datastore.utils;
3 import static org.junit.Assert.assertTrue;
4 import static org.mockito.Matchers.any;
5 import static org.mockito.Mockito.doReturn;
6 import static org.mockito.Mockito.doThrow;
7 import static org.mockito.Mockito.mock;
8 import static org.mockito.Mockito.times;
9 import static org.mockito.Mockito.verify;
12 import org.junit.Before;
13 import org.junit.Test;
14 import org.mockito.Mock;
15 import org.mockito.MockitoAnnotations;
16 import org.opendaylight.controller.md.cluster.datastore.model.CarsModel;
17 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
18 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
19 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModification;
20 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModificationCursor;
21 import org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaValidationFailedException;
23 public class PruningDataTreeModificationTest {
26 DataTreeModification delegate;
29 Set<URI> validNamespaces;
32 NormalizedNode<?,?> prunedNormalizedNode;
34 PruningDataTreeModification pruningDataTreeModification;
38 MockitoAnnotations.initMocks(this);
39 pruningDataTreeModification = new PruningDataTreeModification(delegate, validNamespaces) {
41 NormalizedNode<?, ?> pruneNormalizedNode(NormalizedNode<?, ?> input) {
42 return prunedNormalizedNode;
48 public void testDelete(){
49 pruningDataTreeModification.delete(CarsModel.BASE_PATH);
51 verify(delegate).delete(CarsModel.BASE_PATH);
55 public void testDeleteOnException(){
56 YangInstanceIdentifier path = CarsModel.BASE_PATH;
57 doThrow(SchemaValidationFailedException.class).when(delegate).delete(path);
59 pruningDataTreeModification.delete(path);
61 verify(delegate, times(1)).delete(path);
66 public void testMerge(){
67 NormalizedNode<?, ?> normalizedNode = CarsModel.create();
68 YangInstanceIdentifier path = CarsModel.BASE_PATH;
69 pruningDataTreeModification.merge(path, normalizedNode);
71 verify(delegate, times(1)).merge(path, normalizedNode);
75 public void testMergeOnException(){
76 NormalizedNode<?, ?> normalizedNode = CarsModel.create();
77 YangInstanceIdentifier path = CarsModel.BASE_PATH;
79 doThrow(SchemaValidationFailedException.class).when(delegate).merge(path, normalizedNode);
80 doReturn(true).when(validNamespaces).contains(any(YangInstanceIdentifier.PathArgument.class));
82 pruningDataTreeModification.merge(path, normalizedNode);
84 verify(delegate, times(1)).merge(path, normalizedNode);
85 verify(delegate, times(1)).merge(path, prunedNormalizedNode);
89 public void testWrite(){
90 NormalizedNode<?, ?> normalizedNode = CarsModel.create();
91 YangInstanceIdentifier path = CarsModel.BASE_PATH;
92 pruningDataTreeModification.write(path, normalizedNode);
94 verify(delegate, times(1)).write(path, normalizedNode);
98 public void testWriteOnException(){
99 NormalizedNode<?, ?> normalizedNode = CarsModel.create();
100 YangInstanceIdentifier path = CarsModel.BASE_PATH;
102 doThrow(SchemaValidationFailedException.class).when(delegate).write(path, normalizedNode);
103 doReturn(true).when(validNamespaces).contains(any(YangInstanceIdentifier.PathArgument.class));
105 pruningDataTreeModification.write(path, normalizedNode);
107 verify(delegate, times(1)).write(path, normalizedNode);
108 verify(delegate, times(1)).write(path, prunedNormalizedNode);
112 public void testReady(){
113 pruningDataTreeModification.ready();
115 verify(delegate).ready();
119 public void testApplyToCursor(){
120 DataTreeModificationCursor dataTreeModificationCursor = mock(DataTreeModificationCursor.class);
121 pruningDataTreeModification.applyToCursor(dataTreeModificationCursor);
123 verify(delegate).applyToCursor(dataTreeModificationCursor);
127 public void testReadNode(){
128 pruningDataTreeModification.readNode(CarsModel.BASE_PATH);
130 verify(delegate).readNode(CarsModel.BASE_PATH);
134 public void testNewModification(){
135 DataTreeModification dataTreeModification = pruningDataTreeModification.newModification();
137 assertTrue("new modification not of type PruningDataTreeModification", dataTreeModification instanceof PruningDataTreeModification);