/*
* Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
package org.opendaylight.groupbasedpolicy.sf;
import static org.junit.Assert.assertNotNull;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import com.google.common.util.concurrent.CheckedFuture;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import org.opendaylight.controller.md.sal.binding.api.DataBroker;
import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.SubjectFeatureDefinitions;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
@SuppressWarnings({"unchecked"})
@RunWith(MockitoJUnitRunner.class)
public class SubjectFeatureDefinitionProviderTest {
private static final int NUM_OF_SUBJECT_FEATURE_DEFINITIONS = 5;
@Mock
private DataBroker dataProvider;
@Mock
private WriteTransaction writeTransaction;
@Mock
private CheckedFuture<Void, TransactionCommitFailedException> checkedFuture;
@Before
public void init() {
when(writeTransaction.submit()).thenReturn(checkedFuture);
when(dataProvider.newWriteOnlyTransaction()).thenReturn(writeTransaction);
}
@Test
public void testConstructor() throws TransactionCommitFailedException {
doNothing().when(writeTransaction).put(eq(LogicalDatastoreType.CONFIGURATION), any(InstanceIdentifier.class),
any(SubjectFeatureDefinitions.class));
SubjectFeatureDefinitionProvider provider = new SubjectFeatureDefinitionProvider(dataProvider);
assertNotNull(provider);
verify(dataProvider, times(2)).newWriteOnlyTransaction();
verify(writeTransaction, times(NUM_OF_SUBJECT_FEATURE_DEFINITIONS)).put(eq(LogicalDatastoreType.CONFIGURATION),
any(InstanceIdentifier.class), any(SubjectFeatureDefinitions.class));
}
@Test
public void testClose() throws Exception {
doNothing().when(writeTransaction).delete(eq(LogicalDatastoreType.CONFIGURATION),
any(InstanceIdentifier.class));
when(dataProvider.newWriteOnlyTransaction()).thenReturn(writeTransaction);
SubjectFeatureDefinitionProvider provider = new SubjectFeatureDefinitionProvider(dataProvider);
assertNotNull(provider);
provider.close();
verify(dataProvider, times(2)).newWriteOnlyTransaction();
verify(writeTransaction, times(NUM_OF_SUBJECT_FEATURE_DEFINITIONS))
.delete(eq(LogicalDatastoreType.CONFIGURATION), any(InstanceIdentifier.class));
}
}