GBP core tests improvements
[groupbasedpolicy.git] / groupbasedpolicy / src / test / java / org / opendaylight / groupbasedpolicy / sf / SubjectFeatureDefinitionProviderTest.java
1 package org.opendaylight.groupbasedpolicy.sf;
2
3 import static org.junit.Assert.assertNotNull;
4 import static org.mockito.Matchers.any;
5 import static org.mockito.Matchers.eq;
6 import static org.mockito.Mockito.doNothing;
7 import static org.mockito.Mockito.times;
8 import static org.mockito.Mockito.verify;
9 import static org.mockito.Mockito.when;
10
11 import com.google.common.util.concurrent.CheckedFuture;
12 import org.junit.Before;
13 import org.junit.Test;
14 import org.junit.runner.RunWith;
15 import org.mockito.Mock;
16 import org.mockito.runners.MockitoJUnitRunner;
17 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
18 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
19 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
20 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.SubjectFeatureDefinitions;
22 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
23
24 @SuppressWarnings({"unchecked"})
25 @RunWith(MockitoJUnitRunner.class)
26 public class SubjectFeatureDefinitionProviderTest {
27
28     public static final int NUM_OF_SUBJECT_FEATURE_DEFINITIONS = 5;
29
30     @Mock
31     DataBroker dataProvider;
32     @Mock
33     WriteTransaction writeTransaction;
34     @Mock
35     CheckedFuture<Void, TransactionCommitFailedException> checkedFuture;
36
37     @Before
38     public void init() {
39         when(writeTransaction.submit()).thenReturn(checkedFuture);
40         when(dataProvider.newWriteOnlyTransaction()).thenReturn(writeTransaction);
41     }
42
43     @Test
44     public void testConstructor() throws TransactionCommitFailedException {
45         doNothing().when(writeTransaction).put(eq(LogicalDatastoreType.CONFIGURATION), any(InstanceIdentifier.class),
46                 any(SubjectFeatureDefinitions.class));
47
48         SubjectFeatureDefinitionProvider provider = new SubjectFeatureDefinitionProvider(dataProvider);
49
50         assertNotNull(provider);
51         verify(dataProvider).newWriteOnlyTransaction();
52         verify(writeTransaction, times(NUM_OF_SUBJECT_FEATURE_DEFINITIONS)).put(eq(LogicalDatastoreType.CONFIGURATION),
53                 any(InstanceIdentifier.class), any(SubjectFeatureDefinitions.class));
54
55     }
56
57     @Test
58     public void testClose() throws Exception {
59         doNothing().when(writeTransaction).delete(eq(LogicalDatastoreType.CONFIGURATION),
60                 any(InstanceIdentifier.class));
61
62         SubjectFeatureDefinitionProvider provider = new SubjectFeatureDefinitionProvider(dataProvider);
63
64         assertNotNull(provider);
65
66         provider.close();
67
68         verify(dataProvider, times(2)).newWriteOnlyTransaction();
69         verify(writeTransaction, times(NUM_OF_SUBJECT_FEATURE_DEFINITIONS))
70             .delete(eq(LogicalDatastoreType.CONFIGURATION), any(InstanceIdentifier.class));
71
72     }
73
74 }