Rename DOMDataTreeChangeService
[mdsal.git] / binding / mdsal-binding-dom-adapter / src / test / java / org / opendaylight / mdsal / binding / dom / adapter / BindingDOMAdapterLoaderTest.java
index f1eb0882270df7eaea42846775b93326386822aa..60caa8674dfae3747cf21098b0894b456aff2126 100644 (file)
@@ -7,68 +7,78 @@
  */
 package org.opendaylight.mdsal.binding.dom.adapter;
 
-import static org.junit.Assert.assertFalse;
+import static org.hamcrest.CoreMatchers.instanceOf;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertThrows;
 import static org.mockito.Mockito.doReturn;
-import static org.mockito.MockitoAnnotations.initMocks;
+import static org.mockito.Mockito.mock;
 
-import com.google.common.collect.ImmutableClassToInstanceMap;
-import javax.annotation.Nullable;
+import java.util.Optional;
 import org.junit.Before;
 import org.junit.Test;
+import org.junit.runner.RunWith;
 import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnitRunner;
 import org.opendaylight.mdsal.binding.api.DataBroker;
-import org.opendaylight.mdsal.binding.dom.codec.impl.BindingNormalizedNodeCodecRegistry;
-import org.opendaylight.mdsal.binding.generator.impl.GeneratedClassLoadingStrategy;
+import org.opendaylight.mdsal.binding.api.DataTreeChangeListener;
+import org.opendaylight.mdsal.binding.api.DataTreeIdentifier;
+import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.mdsal.dom.api.DOMDataBroker;
 import org.opendaylight.mdsal.dom.api.DOMService;
+import org.opendaylight.mdsal.dom.api.DOMTransactionChain;
+import org.opendaylight.yang.gen.v1.bug8449.rev170516.Top;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
+@RunWith(MockitoJUnitRunner.StrictStubs.class)
 public class BindingDOMAdapterLoaderTest {
-
     @Mock
     private DOMDataBroker domService;
-
     @Mock
-    private BindingNormalizedNodeCodecRegistry mockCodecRegistry;
+    private AdapterContext mockContext;
+    @Mock
+    private DOMTransactionChain domChain;
 
     private BindingDOMAdapterLoader bindingDOMAdapterLoader;
-    private BindingDOMDataBrokerAdapter bindingDOMDataBrokerAdapter;
 
     @Before
-    public void setUp() throws Exception {
-        initMocks(this);
-
-        doReturn(ImmutableClassToInstanceMap.of()).when(domService).getExtensions();
-        bindingDOMAdapterLoader = new BindingDOMAdapterLoader(
-                new BindingToNormalizedNodeCodec(GeneratedClassLoadingStrategy.getTCCLClassLoadingStrategy(),
-                        mockCodecRegistry)) {
-            @Nullable
+    public void setUp() {
+        bindingDOMAdapterLoader = new BindingDOMAdapterLoader(mockContext) {
             @Override
-            protected DOMService getDelegate(final Class<? extends DOMService> reqDeleg) {
+            protected DOMService<?, ?> getDelegate(final Class<? extends DOMService<?, ?>> reqDeleg) {
                 return domService;
             }
         };
     }
 
     @Test
-    public void createBuilderTest() throws Exception {
-        assertTrue(bindingDOMAdapterLoader.load(DataBroker.class).get() instanceof BindingDOMDataBrokerAdapter);
+    public void createBuilderTest() {
+        assertDataBrokerAdapter();
         domService = null;
-        assertFalse(bindingDOMAdapterLoader.load(DataBroker.class).isPresent());
+        assertEquals(Optional.empty(), bindingDOMAdapterLoader.load(DataBroker.class));
+    }
+
+    @Test
+    public void createChainTest() {
+        final var adapter = assertDataBrokerAdapter();
+        doReturn(domChain).when(domService).createTransactionChain();
+        assertNotNull(adapter.createTransactionChain());
     }
 
     @Test
-    public void createChainTest() throws Exception {
-        bindingDOMDataBrokerAdapter
-                = (BindingDOMDataBrokerAdapter) bindingDOMAdapterLoader.load(DataBroker.class).get();
-        assertNotNull(bindingDOMDataBrokerAdapter.createTransactionChain(null));
+    public void registerWithException() {
+        final var adapter = assertDataBrokerAdapter();
+        final var ex = assertThrows(UnsupportedOperationException.class,
+            () -> adapter.registerDataTreeChangeListener(
+                DataTreeIdentifier.of(LogicalDatastoreType.OPERATIONAL, InstanceIdentifier.create(Top.class)),
+                mock(DataTreeChangeListener.class)));
+        assertEquals("Underlying data broker does not expose DOMDataTreeChangeService.", ex.getMessage());
     }
 
-    @Test(expected = UnsupportedOperationException.class)
-    public void registerWithException() throws Exception {
-        bindingDOMDataBrokerAdapter
-                = (BindingDOMDataBrokerAdapter) bindingDOMAdapterLoader.load(DataBroker.class).get();
-        bindingDOMDataBrokerAdapter.registerDataTreeChangeListener(null,null);
+    private BindingDOMDataBrokerAdapter assertDataBrokerAdapter() {
+        final var service = bindingDOMAdapterLoader.load(DataBroker.class).orElseThrow();
+        assertThat(service, instanceOf(BindingDOMDataBrokerAdapter.class));
+        return (BindingDOMDataBrokerAdapter) service;
     }
 }
\ No newline at end of file