Eliminate EntityOwnershipChange
[mdsal.git] / entityownership / mdsal-eos-binding-adapter / src / test / java / org / opendaylight / mdsal / eos / binding / dom / adapter / DefaultEntityOwnershipServiceTest.java
index 115901c854ec2bceb6f45af4e0c22ef32d3b8c3d..7cd39265d89432531e14cc0fc201ede9afaef81e 100644 (file)
@@ -7,29 +7,27 @@
  */
 package org.opendaylight.mdsal.eos.binding.dom.adapter;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertSame;
-import static org.mockito.ArgumentMatchers.any;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertSame;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.doNothing;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.doThrow;
 import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
 
 import java.util.Optional;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.eclipse.jdt.annotation.NonNull;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
 import org.mockito.ArgumentCaptor;
 import org.mockito.Mock;
-import org.mockito.junit.MockitoJUnitRunner;
+import org.mockito.junit.jupiter.MockitoExtension;
 import org.opendaylight.mdsal.binding.dom.adapter.ConstantAdapterContext;
 import org.opendaylight.mdsal.binding.dom.codec.spi.BindingDOMCodecServices;
 import org.opendaylight.mdsal.eos.binding.api.Entity;
 import org.opendaylight.mdsal.eos.binding.api.EntityOwnershipListener;
-import org.opendaylight.mdsal.eos.common.api.CandidateAlreadyRegisteredException;
-import org.opendaylight.mdsal.eos.common.api.EntityOwnershipChange;
 import org.opendaylight.mdsal.eos.common.api.EntityOwnershipState;
 import org.opendaylight.mdsal.eos.common.api.EntityOwnershipStateChange;
 import org.opendaylight.mdsal.eos.dom.api.DOMEntity;
@@ -42,91 +40,92 @@ import org.opendaylight.yangtools.concepts.Registration;
  *
  * @author Thomas Pantelis
  */
-@RunWith(MockitoJUnitRunner.StrictStubs.class)
-public class DefaultEntityOwnershipServiceTest {
-    static final Entity BINDING_ENTITY = new Entity("foo", "bar");
-    static final DOMEntity DOM_ENTITY = new DOMEntity("foo", "bar");
+@ExtendWith(MockitoExtension.class)
+class DefaultEntityOwnershipServiceTest {
+    private static final @NonNull Entity BINDING_ENTITY = new Entity("foo", "bar");
+    private static final @NonNull DOMEntity DOM_ENTITY = new DOMEntity("foo", "bar");
 
     @Mock
     private BindingDOMCodecServices mockCodecRegistry;
-
     @Mock
     private DOMEntityOwnershipService mockDOMService;
 
     private DefaultEntityOwnershipService adapter;
 
-    @Before
-    public void setup() {
-        doReturn(DOM_ENTITY.getIdentifier()).when(mockCodecRegistry).toYangInstanceIdentifier(
-                BINDING_ENTITY.getIdentifier());
-        doReturn(BINDING_ENTITY.getIdentifier()).when(mockCodecRegistry).fromYangInstanceIdentifier(
-                DOM_ENTITY.getIdentifier());
+    @BeforeEach
+    void setup() {
         adapter = new DefaultEntityOwnershipService(mockDOMService, new ConstantAdapterContext(mockCodecRegistry));
     }
 
+    private void mockToBinding() {
+        doReturn(BINDING_ENTITY.getIdentifier()).when(mockCodecRegistry).fromYangInstanceIdentifier(
+            DOM_ENTITY.getIdentifier());
+    }
+
+    private void mockToDom() {
+        doReturn(DOM_ENTITY.getIdentifier()).when(mockCodecRegistry)
+            .toYangInstanceIdentifier(BINDING_ENTITY.getIdentifier());
+    }
+
     @Test
-    public void testRegisterCandidate() throws CandidateAlreadyRegisteredException {
+    void testRegisterCandidate() throws Exception {
+        mockToDom();
         final var mockDOMReg = mock(Registration.class);
         doReturn(mockDOMReg).when(mockDOMService).registerCandidate(DOM_ENTITY);
 
         try (var reg = adapter.registerCandidate(BINDING_ENTITY)) {
-            assertNotNull("registerCandidate returned null", reg);
+            assertNotNull(reg);
         }
-        verify(mockDOMReg).close();
     }
 
     @Test
-    public void testRegisterListener() {
+    void testRegisterListener() {
+        mockToBinding();
+
         final var mockDOMReg = mock(Registration.class);
+        final var domListenerCaptor = ArgumentCaptor.forClass(DOMEntityOwnershipListener.class);
         doReturn(mockDOMReg).when(mockDOMService).registerListener(eq(DOM_ENTITY.getType()),
-                any(DOMEntityOwnershipListener.class));
+            domListenerCaptor.capture());
         final var mockListener = mock(EntityOwnershipListener.class);
 
         try (var reg = adapter.registerListener(BINDING_ENTITY.getType(), mockListener)) {
-            assertNotNull("registerListener returned null", reg);
+            assertNotNull(reg);
 
-            final var domListenerCaptor = ArgumentCaptor.forClass(DOMEntityOwnershipListener.class);
-            verify(mockDOMService).registerListener(eq(DOM_ENTITY.getType()),  domListenerCaptor.capture());
-
-            final var domOwnershipChange = new EntityOwnershipChange<>(DOM_ENTITY,
+            doNothing().when(mockListener).ownershipChanged(BINDING_ENTITY,
+                EntityOwnershipStateChange.LOCAL_OWNERSHIP_GRANTED, true);
+            domListenerCaptor.getValue().ownershipChanged(DOM_ENTITY,
                 EntityOwnershipStateChange.LOCAL_OWNERSHIP_GRANTED, true);
-            domListenerCaptor.getValue().ownershipChanged(domOwnershipChange);
-
-            final var ownershipChangeCaptor = ArgumentCaptor.forClass(EntityOwnershipChange.class);
-            verify(mockListener).ownershipChanged(ownershipChangeCaptor.capture());
-
-            final var change = ownershipChangeCaptor.getValue();
-            assertEquals("getEntity", BINDING_ENTITY, change.getEntity());
-            assertEquals("getState", EntityOwnershipStateChange.LOCAL_OWNERSHIP_GRANTED, change.getState());
         }
-        verify(mockDOMReg).close();
     }
 
     @Test
-    public void testGetOwnershipState() {
+    void testGetOwnershipState() {
+        mockToDom();
+
         final var expectedState = Optional.of(EntityOwnershipState.IS_OWNER);
         doReturn(expectedState).when(mockDOMService).getOwnershipState(DOM_ENTITY);
-
-        final var actualState = adapter.getOwnershipState(BINDING_ENTITY);
-        assertSame("getOwnershipState", expectedState, actualState);
+        assertSame(expectedState, adapter.getOwnershipState(BINDING_ENTITY));
     }
 
     @Test
-    public void testIsCandidateRegistered() {
+    void testIsCandidateRegistered() {
+        mockToDom();
+
         doReturn(true).when(mockDOMService).isCandidateRegistered(DOM_ENTITY);
-        assertEquals("isCandidateRegistered", true, adapter.isCandidateRegistered(BINDING_ENTITY));
+        assertTrue(adapter.isCandidateRegistered(BINDING_ENTITY));
     }
 
     @Test
-    public void testOwnershipChangeWithException() {
+    void testOwnershipChangeWithException() {
+        mockToBinding();
+
         final var listener = mock(EntityOwnershipListener.class);
-        doThrow(IllegalStateException.class).when(listener).ownershipChanged(any());
+        doThrow(IllegalStateException.class).when(listener).ownershipChanged(BINDING_ENTITY,
+            EntityOwnershipStateChange.LOCAL_OWNERSHIP_GRANTED, false);
 
-        final var domEntityOwnershipListenerAdapter = new DOMEntityOwnershipListenerAdapter(listener,
-                new ConstantAdapterContext(mockCodecRegistry));
-        final var domOwnershipChange = new EntityOwnershipChange<>(DOM_ENTITY,
-            EntityOwnershipStateChange.LOCAL_OWNERSHIP_GRANTED);
+        final var domAdapter = new DOMEntityOwnershipListenerAdapter(listener,
+            new ConstantAdapterContext(mockCodecRegistry));
 
-        domEntityOwnershipListenerAdapter.ownershipChanged(domOwnershipChange);
+        domAdapter.ownershipChanged(DOM_ENTITY, EntityOwnershipStateChange.LOCAL_OWNERSHIP_GRANTED, false);
     }
 }