public class ActivationDriverRepoServiceImplTest {
@Test(expected = ActivationDriverNotFoundException.class)
- public void testEmpty() throws Exception {
+ public void testEmptyBuilderList() throws Exception {
ActivationDriverRepoService driverRepo = new ActivationDriverRepoServiceImpl(Collections.emptyList());
final FcPort port = new FcPortBuilder().setId("a").build();
@Test(expected = ActivationDriverAmbiguousException.class)
- public void testConflict() throws Exception {
+ public void testConflictingBuilders() throws Exception {
final ActivationDriver driver = mock(ActivationDriver.class);
}
@Test
- public void testMatching() throws Exception {
+ public void testMatchingWithSinglePort() throws Exception {
final ActivationDriver driver = mock(ActivationDriver.class);
final ActivationDriver driverFromRepo = driverRepo.getDriver(port, null);
assertEquals(driver, driverFromRepo);
}
+
+ @Test
+ public void testMatchingWithDualPort() throws Exception {
+
+ final ActivationDriver d1 = mock(ActivationDriver.class);
+ final ActivationDriver d2 = mock(ActivationDriver.class);
+
+ ActivationDriverRepoService driverRepo = new ActivationDriverRepoServiceImpl(Arrays.asList(
+ prepareDriver(p -> d1), prepareDriver((a,b) -> d2)
+ ));
+
+ final FcPort portA = new FcPortBuilder().setId("a").build();
+ final FcPort portB = new FcPortBuilder().setId("b").build();
+ final ActivationDriver driverFromRepo = driverRepo.getDriver(portA, portB, null);
+ assertEquals(d2, driverFromRepo);
+ }
}
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
/**
* @author bartosz.michalik@amartus.com
*/
public class ActivationDriverMocks {
+ /**
+ * Prepare mock {@link ActivationDriverBuilder}. The driver is produced via provided producer function. This covers
+ * single port requests.
+ * @param producer to build driver
+ * @return driver builder mock
+ */
public static ActivationDriverBuilder prepareDriver(Function<GFcPort, ActivationDriver> producer) {
final ActivationDriverBuilder mock = mock(ActivationDriverBuilder.class);
GFcPort port = (GFcPort) inv.getArguments()[0];
return Optional.ofNullable(producer.apply(port));
}).when(mock).driverFor(any(GFcPort.class), any(ActivationDriverBuilder.BuilderContext.class));
+
+ doReturn(Optional.empty()).when(mock)
+ .driverFor(any(GFcPort.class), any(GFcPort.class), any(ActivationDriverBuilder.BuilderContext.class));
+
return mock;
}
+ /**
+ * Prepare mock {@link ActivationDriverBuilder}. The driver is produced via provided producer function. This covers
+ * dual port requests (for internal cross-connect).
+ * @param producer to build driver
+ * @return driver builder mock
+ */
public static ActivationDriverBuilder prepareDriver(BiFunction<GFcPort, GFcPort, ActivationDriver> producer) {
final ActivationDriverBuilder mock = mock(ActivationDriverBuilder.class);
GFcPort port2 = (GFcPort) inv.getArguments()[1];
return Optional.ofNullable(producer.apply(port1, port2));
}).when(mock).driverFor(any(GFcPort.class), any(GFcPort.class), any(ActivationDriverBuilder.BuilderContext.class));
+
+ doReturn(Optional.empty()).when(mock)
+ .driverFor(any(GFcPort.class), any(ActivationDriverBuilder.BuilderContext.class));
return mock;
}
}