2 * Copyright (c) 2021 PANTHEON.tech, s.r.o. and others. All rights reserved.
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
8 package org.opendaylight.netconf.mdsal.yang.library;
10 import static org.mockito.ArgumentMatchers.any;
11 import static org.mockito.ArgumentMatchers.eq;
12 import static org.mockito.Mockito.doNothing;
13 import static org.mockito.Mockito.doReturn;
14 import static org.mockito.Mockito.verify;
15 import static org.mockito.Mockito.verifyNoInteractions;
16 import static org.opendaylight.mdsal.common.api.CommitInfo.emptyFluentFuture;
18 import org.junit.Before;
19 import org.junit.Test;
20 import org.mockito.Mock;
21 import org.opendaylight.mdsal.binding.api.DataBroker;
22 import org.opendaylight.mdsal.binding.api.WriteTransaction;
23 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
24 import org.opendaylight.mdsal.dom.api.DOMSchemaService;
25 import org.opendaylight.yangtools.concepts.ListenerRegistration;
26 import org.opendaylight.yangtools.yang.binding.DataObject;
27 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
28 import org.opendaylight.yangtools.yang.model.api.EffectiveModelContextListener;
29 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
31 public abstract class AbstractYangLibraryWriterTest {
33 private DOMSchemaService schemaService;
35 private DataBroker dataBroker;
37 private WriteTransaction writeTransaction;
39 YangLibraryWriter writer;
43 doReturn(writeTransaction).when(dataBroker).newWriteOnlyTransaction();
44 doNothing().when(writeTransaction).put(eq(LogicalDatastoreType.OPERATIONAL), any(), any());
45 doReturn(emptyFluentFuture()).when(writeTransaction).commit();
46 // FIXME: use a mock for this
47 doReturn(new ListenerRegistration<EffectiveModelContextListener>() {
54 public EffectiveModelContextListener getInstance() {
57 }).when(schemaService).registerSchemaContextListener(any());
58 writer = new YangLibraryWriter(schemaService, dataBroker);
62 public void testNoUpdate() {
63 writer.onModelContextUpdated(YangParserTestUtils.parseYangResources(YangLibraryTest.class,
64 "/test-module.yang", "/test-submodule.yang"));
65 verifyNoInteractions(dataBroker);
68 final <T extends DataObject> void assertOperationalUpdate(final InstanceIdentifier<T> path, final T object) {
69 writer.onModelContextUpdated(YangParserTestUtils.parseYangResources(YangLibraryTest.class,
70 "/test-module.yang", "/test-submodule.yang", "/ietf-yang-library.yang"));
71 verify(writeTransaction).put(LogicalDatastoreType.OPERATIONAL, path, object);
72 verify(writeTransaction).commit();