Skip to content

Instantly share code, notes, and snippets.

@gastaldi
Created November 20, 2017 19:57
Show Gist options
  • Save gastaldi/4bfd16e6dce181604adc5012db496423 to your computer and use it in GitHub Desktop.
Save gastaldi/4bfd16e6dce181604adc5012db496423 to your computer and use it in GitHub Desktop.
Testing event steps in MissionControl
package io.fabric8.launcher.core.impl;
import java.io.File;
import javax.enterprise.event.Observes;
import javax.enterprise.inject.Any;
import javax.inject.Inject;
import javax.inject.Singleton;
import io.fabric8.launcher.core.api.CreateProjectile;
import io.fabric8.launcher.core.api.MissionControl;
import io.fabric8.launcher.core.api.ProjectileBuilder;
import io.fabric8.launcher.core.api.StatusEventType;
import io.fabric8.launcher.core.impl.events.CreateProjectileEvent;
import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.asset.EmptyAsset;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.jboss.shrinkwrap.resolver.api.maven.Maven;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.assertj.core.api.Assertions.assertThat;
/**
* @author <a href="mailto:[email protected]">George Gastaldi</a>
*/
@RunWith(Arquillian.class)
public class MissionControlEventTest {
/**
* @return a war file containing all the required classes and dependencies
* to test the {@link MissionControl}
*/
@Deployment
public static WebArchive createMissionControlWithoutObservers() {
// Import Maven runtime dependencies
final File[] dependencies = Maven.resolver().loadPomFromFile("pom.xml")
.importRuntimeAndTestDependencies().resolve().withTransitivity().asFile();
// Create deploy file
final WebArchive war = ShrinkWrap.create(WebArchive.class)
.addPackages(true, MissionControl.class.getPackage())
.addPackage(MissionControlImpl.class.getPackage())
.addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml")
.addAsLibraries(dependencies);
return war;
}
@Inject
MissionControl missionControl;
@Inject
StepObserver stepObserver;
@Test
public void stepsAreProperlyCalled() {
assertThat(stepObserver.getCounter()).isZero();
CreateProjectile projectile = ProjectileBuilder.newInstance().createType().build();
missionControl.launch(projectile);
assertThat(stepObserver.getCounter()).isEqualTo(StatusEventType.values().length);
}
@Singleton
public static class StepObserver {
private int counter;
public void addStep(@Observes @Any CreateProjectileEvent event) {
counter++;
}
public int getCounter() {
return counter;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment