package org.arquillian.cube.docker.impl.beforeStop;
import org.arquillian.cube.docker.impl.client.config.BeforeStop;
import org.arquillian.cube.docker.impl.client.config.CustomBeforeStopAction;
import org.arquillian.cube.docker.impl.docker.DockerClientExecutor;
import org.arquillian.cube.impl.model.DefaultCubeId;
import org.arquillian.cube.spi.beforeStop.BeforeStopAction;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import static org.hamcrest.CoreMatchers.instanceOf;
import static org.junit.Assert.assertThat;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
@RunWith(MockitoJUnitRunner.class)
public class BeforeStopActionTest {
private String containerId = "test";
@Mock
private DockerClientExecutor dockerClientExecutor;
@Test
public void should_be_able_to_create_custom_before_stop_actions() {
BeforeStop beforeStop = new BeforeStop();
CustomBeforeStopAction customBeforeStopAction = new CustomBeforeStopAction();
customBeforeStopAction.setStrategy("org.arquillian.cube.docker.impl.beforeStop.CustomBeforeStopActionImpl");
beforeStop.setCustomBeforeStopAction(customBeforeStopAction);
BeforeStopAction beforeStopAction =
BeforeStopActionFactory.create(dockerClientExecutor, new DefaultCubeId(containerId), customBeforeStopAction);
assertThat(beforeStopAction, instanceOf(CustomBeforeStopActionInstantiator.class));
CustomBeforeStopActionInstantiator customBeforeStopActionInstantiator =
(CustomBeforeStopActionInstantiator) beforeStopAction;
customBeforeStopActionInstantiator.doBeforeStop();
verify(dockerClientExecutor, times(1)).getDockerUri();
}
}