package org.arquillian.cube.impl.model;
import java.util.Arrays;
import java.util.List;
import org.arquillian.cube.spi.Cube;
import org.arquillian.cube.spi.CubeRegistry;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
public class LocalCubeRegistryTest {
private CubeRegistry cubeRegistry;
@Before
public void setUp() throws Exception {
cubeRegistry = new LocalCubeRegistry();
}
@Test
public void shouldAddAndRemoveCube() throws Exception {
// given:
String cubeId = "tomcat";
Cube cube = createCubeMock(cubeId);
// when:
cubeRegistry.addCube(cube);
// then:
Cube<?> resolvedCube = cubeRegistry.getCube(cubeId);
Assert.assertSame(cube, resolvedCube);
// when:
cubeRegistry.removeCube(cubeId);
// then:
Cube<?> resolvedCubeAfterRemove = cubeRegistry.getCube(cubeId);
Assert.assertNull(resolvedCubeAfterRemove);
}
private Cube createCubeMock(String cubeId) {
Cube cube = Mockito.mock(Cube.class);
Mockito.doReturn(cubeId).when(cube).getId();
return cube;
}
@Test(expected = IllegalArgumentException.class)
public void shouldNotBeAbleToAddCubeByStarredCubeId() throws Exception {
// given:
String cubeId = "tomcat*";
Cube cube = createCubeMock(cubeId);
// when:
cubeRegistry.addCube(cube);
}
@Test(expected = IllegalArgumentException.class)
public void shouldNotBeAbleToRemoveCubeByStarredCubeId() throws Exception {
// given:
String cubeId = "tomcat*";
// when:
cubeRegistry.removeCube(cubeId);
}
@Test
public void shouldGetAllCubes() throws Exception {
// given:
List<String> cubeIds = Arrays.asList("tomcat1", "tomcat2", "tomcat_46fd2cc1-0084-42a8-9ffd-35f305a08dcc");
for (String cubeId : cubeIds) {
Cube cube = createCubeMock(cubeId);
cubeRegistry.addCube(cube);
}
// when:
List<Cube<?>> cubes = cubeRegistry.getCubes();
// then:
Assert.assertEquals(cubeIds.size(), cubes.size());
}
@Test
public void shouldGetCubeByStarredCubeId() throws Exception {
// given:
String cubeId = "tomcat_46fd2cc1-0084-42a8-9ffd-35f305a08dcc";
Cube cube = createCubeMock(cubeId);
cubeRegistry.addCube(cube);
// when:
Cube<?> resolvedCube = cubeRegistry.getCube("tomcat*");
// then:
Assert.assertSame(cube, resolvedCube);
}
}