package org.arquillian.cube.impl.client; import java.util.List; import org.arquillian.cube.impl.model.LocalCubeRegistry; import org.arquillian.cube.spi.Cube; import org.arquillian.cube.spi.CubeRegistry; import org.arquillian.cube.spi.event.CreateCube; import org.arquillian.cube.spi.event.DestroyCube; import org.arquillian.cube.spi.event.StartCube; import org.arquillian.cube.spi.event.StopCube; import org.jboss.arquillian.core.api.annotation.ApplicationScoped; import org.jboss.arquillian.core.test.AbstractManagerTestBase; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @RunWith(MockitoJUnitRunner.class) public class CubeLifecycleControllerTest extends AbstractManagerTestBase { public static final String CUBE_ID = "test"; public static final String MISSING_CUBE_ID = "_MISSING_"; public CubeRegistry cubeRegistry; @Mock public Cube<?> cube; @Override protected void addExtensions(List<Class<?>> extensions) { extensions.add(CubeLifecycleController.class); super.addExtensions(extensions); } @Before public void setup() { when(cube.getId()).thenReturn(CUBE_ID); cubeRegistry = new LocalCubeRegistry(); cubeRegistry.addCube(cube); bind(ApplicationScoped.class, CubeRegistry.class, cubeRegistry); } @Test public void shouldCreateCube() { fire(new CreateCube(CUBE_ID)); verify(cube).create(); } @Test public void shouldStartCube() { fire(new StartCube(CUBE_ID)); verify(cube).start(); } @Test public void shouldStopCube() { fire(new StopCube(CUBE_ID)); verify(cube).stop(); } @Test public void shouldDestroyCube() { fire(new DestroyCube(CUBE_ID)); verify(cube).destroy(); } @Test(expected = IllegalArgumentException.class) public void shouldThrowExceptionOnMisingCubeDuringCreateCube() { fire(new CreateCube(MISSING_CUBE_ID)); } @Test(expected = IllegalArgumentException.class) public void shouldThrowExceptionOnMisingCubeDuringStartCube() { fire(new StartCube(MISSING_CUBE_ID)); } @Test(expected = IllegalArgumentException.class) public void shouldThrowExceptionOnMisingCubeDuringStopCube() { fire(new StopCube(MISSING_CUBE_ID)); } @Test(expected = IllegalArgumentException.class) public void shouldThrowExceptionOnMisingCubeDuringDestroyCube() { fire(new DestroyCube(MISSING_CUBE_ID)); } }