Merge "Migrate netconf to mockito ArgumentMatchers"
[netconf.git] / netconf / mdsal-netconf-notification / src / test / java / org / opendaylight / controller / config / yang / netconf / mdsal / notification / CapabilityChangeNotificationProducerTest.java
index 63ef61ca379f82482a23607e07671f57a6598431..6ddcd8df4df90b544cc138c3d39d619877a7a472 100644 (file)
@@ -8,7 +8,7 @@
 
 package org.opendaylight.controller.config.yang.netconf.mdsal.notification;
 
-import static org.mockito.Matchers.any;
+import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.doNothing;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
@@ -23,10 +23,14 @@ import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.DataObjectModification;
+import org.opendaylight.controller.md.sal.binding.api.DataTreeChangeListener;
+import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier;
 import org.opendaylight.controller.md.sal.binding.api.DataTreeModification;
 import org.opendaylight.netconf.notifications.BaseNotificationPublisherRegistration;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri;
+import org.opendaylight.netconf.notifications.NetconfNotificationCollector;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.NetconfState;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.netconf.state.Capabilities;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.netconf.state.CapabilitiesBuilder;
@@ -34,48 +38,84 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.not
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.notifications.rev120206.NetconfCapabilityChangeBuilder;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.notifications.rev120206.changed.by.parms.ChangedByBuilder;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.notifications.rev120206.changed.by.parms.changed.by.server.or.user.ServerBuilder;
+import org.opendaylight.yangtools.concepts.ListenerRegistration;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
 public class CapabilityChangeNotificationProducerTest {
 
+    private CapabilityChangeNotificationProducer capabilityChangeNotificationProducer;
+
     @Mock
     private BaseNotificationPublisherRegistration baseNotificationPublisherRegistration;
-    private CapabilityChangeNotificationProducer capabilityChangeNotificationProducer;
+    @Mock
+    private ListenerRegistration listenerRegistration;
+
+    @Mock
+    private NetconfNotificationCollector netconfNotificationCollector;
+    @Mock
+    private DataBroker dataBroker;
 
     @Before
     public void setUp() throws Exception {
         MockitoAnnotations.initMocks(this);
+
+        doReturn(listenerRegistration).when(dataBroker).registerDataTreeChangeListener(any(DataTreeIdentifier.class),
+                any(DataTreeChangeListener.class));
+
         doNothing().when(baseNotificationPublisherRegistration).onCapabilityChanged(any(NetconfCapabilityChange.class));
-        capabilityChangeNotificationProducer = new CapabilityChangeNotificationProducer(baseNotificationPublisherRegistration);
+
+        doReturn(baseNotificationPublisherRegistration).when(netconfNotificationCollector)
+                .registerBaseNotificationPublisher();
+
+        capabilityChangeNotificationProducer = new CapabilityChangeNotificationProducer(netconfNotificationCollector,
+                dataBroker);
     }
 
     @Test
     public void testOnDataChangedCreate() {
-        final InstanceIdentifier capabilitiesIdentifier = InstanceIdentifier.create(NetconfState.class).child(Capabilities.class).builder().build();
-        final List<Uri> newCapabilitiesList = Lists.newArrayList(new Uri("newCapability"), new Uri("createdCapability"));
+        final InstanceIdentifier<Capabilities> capabilitiesIdentifier =
+                InstanceIdentifier.create(NetconfState.class).child(Capabilities.class);
+        final List<Uri> newCapabilitiesList =
+                Lists.newArrayList(new Uri("newCapability"), new Uri("createdCapability"));
         Capabilities newCapabilities = new CapabilitiesBuilder().setCapability(newCapabilitiesList).build();
         Map<InstanceIdentifier<?>, DataObject> createdData = Maps.newHashMap();
         createdData.put(capabilitiesIdentifier, newCapabilities);
-        verifyDataTreeChange(null, newCapabilities, changedCapabilitesFrom(newCapabilitiesList, Collections.<Uri>emptyList()));
+        verifyDataTreeChange(DataObjectModification.ModificationType.WRITE, null, newCapabilities,
+                changedCapabilitesFrom(newCapabilitiesList, Collections.emptyList()));
     }
 
     @Test
     public void testOnDataChangedUpdate() {
-        final List<Uri> originalCapabilitiesList = Lists.newArrayList(new Uri("originalCapability"), new Uri("anotherOriginalCapability"));
-        final List<Uri> updatedCapabilitiesList = Lists.newArrayList(new Uri("originalCapability"), new Uri("newCapability"));
+        final List<Uri> originalCapabilitiesList =
+                Lists.newArrayList(new Uri("originalCapability"), new Uri("anotherOriginalCapability"));
+        final List<Uri> updatedCapabilitiesList =
+                Lists.newArrayList(new Uri("originalCapability"), new Uri("newCapability"));
         Capabilities originalCapabilities = new CapabilitiesBuilder().setCapability(originalCapabilitiesList).build();
         Capabilities updatedCapabilities = new CapabilitiesBuilder().setCapability(updatedCapabilitiesList).build();
-        verifyDataTreeChange(originalCapabilities, updatedCapabilities, changedCapabilitesFrom(
-                Lists.newArrayList(new Uri("newCapability")), Lists.newArrayList(new Uri("anotherOriginalCapability"))));
+        verifyDataTreeChange(DataObjectModification.ModificationType.WRITE, originalCapabilities,
+                updatedCapabilities, changedCapabilitesFrom(
+                Lists.newArrayList(new Uri("newCapability")), Lists.newArrayList(new Uri("anotherOriginalCapability")
+                        )));
+    }
+
+    @Test
+    public void testOnDataChangedDelete() {
+        final List<Uri> originalCapabilitiesList = Lists.newArrayList(new Uri("originalCapability"),
+                new Uri("anotherOriginalCapability"));
+        final Capabilities originalCapabilities =
+                new CapabilitiesBuilder().setCapability(originalCapabilitiesList).build();
+        verifyDataTreeChange(DataObjectModification.ModificationType.DELETE, originalCapabilities, null,
+                changedCapabilitesFrom(Collections.emptyList(), originalCapabilitiesList));
     }
 
     @SuppressWarnings("unchecked")
-    private void verifyDataTreeChange(Capabilities originalCapabilities, Capabilities updatedCapabilities,
-                                      NetconfCapabilityChange expectedChange) {
+    private void verifyDataTreeChange(final DataObjectModification.ModificationType modificationType,
+                                      final Capabilities originalCapabilities, final Capabilities updatedCapabilities,
+                                      final NetconfCapabilityChange expectedChange) {
         final DataTreeModification<Capabilities> treeChange2 = mock(DataTreeModification.class);
         final DataObjectModification<Capabilities> objectChange2 = mock(DataObjectModification.class);
-        doReturn(DataObjectModification.ModificationType.WRITE).when(objectChange2).getModificationType();
+        doReturn(modificationType).when(objectChange2).getModificationType();
         doReturn(objectChange2).when(treeChange2).getRootNode();
         doReturn(originalCapabilities).when(objectChange2).getDataBefore();
         doReturn(updatedCapabilities).when(objectChange2).getDataAfter();
@@ -83,12 +123,12 @@ public class CapabilityChangeNotificationProducerTest {
         verify(baseNotificationPublisherRegistration).onCapabilityChanged(expectedChange);
     }
 
-    private NetconfCapabilityChange changedCapabilitesFrom(List<Uri> added, List<Uri> deleted) {
+    private NetconfCapabilityChange changedCapabilitesFrom(final List<Uri> added, final List<Uri> deleted) {
         NetconfCapabilityChangeBuilder netconfCapabilityChangeBuilder = new NetconfCapabilityChangeBuilder();
         netconfCapabilityChangeBuilder.setChangedBy(new ChangedByBuilder().setServerOrUser(
                 new ServerBuilder().setServer(true).build()).build());
 
-        netconfCapabilityChangeBuilder.setModifiedCapability(Collections.<Uri>emptyList());
+        netconfCapabilityChangeBuilder.setModifiedCapability(Collections.emptyList());
         netconfCapabilityChangeBuilder.setAddedCapability(added);
         netconfCapabilityChangeBuilder.setDeletedCapability(deleted);