@Test public void shouldAllowSpecificationOfStoryFinderClass() { // Given AbstractEmbedderTask task = new AbstractEmbedderTask() {}; // When task.setStoryFinderClass(MyStoryFinder.class.getName()); StoryFinder storyFinder = task.newStoryFinder(); // Then assertThat(storyFinder.getClass().getName(), equalTo(MyStoryFinder.class.getName())); }
@Test public void shouldAllowSpecificationOfInjectableEmbedderClass() { // Given AbstractEmbedderTask task = new AbstractEmbedderTask() {}; // When task.setInjectableEmbedderClass(MyInjectableEmbedder.class.getName()); Embedder embedder = task.newEmbedder(); // Then assertThat(embedder.getClass().getName(), equalTo(MyEmbedder.class.getName())); }
@Test public void shouldCreateNewEmbedderWithExecutors() { // Given AbstractEmbedderTask task = new AbstractEmbedderTask() {}; // When task.setExecutorsClass(MyExecutors.class.getName()); Embedder embedder = task.newEmbedder(); // Then assertThat(embedder.executorService(), sameInstance(EXECUTOR_SERVICE)); }
@Test public void shouldAllowTestScopedSearchDirectory() { // Given AbstractEmbedderTask task = new AbstractEmbedderTask() {}; // When task.setTestSourceDirectory("src/test"); task.setTestOutputDirectory("target/test-classes"); task.setScope("test"); // Then assertThat(task.searchDirectory(), equalTo("src/test")); }
@Test public void shouldCreateNewEmbedderWithSystemProperties() throws IOException { // Given AbstractEmbedderTask task = new AbstractEmbedderTask() {}; // When Properties systemProperties = new Properties(); systemProperties.setProperty("one", "1"); systemProperties.setProperty("two", "2"); ByteArrayOutputStream out = new ByteArrayOutputStream(); systemProperties.store(out, ""); task.setSystemProperties(out.toString()); Embedder embedder = task.newEmbedder(); // Then assertThat(embedder.systemProperties(), equalTo(systemProperties)); }
@Test public void shouldCreateNewEmbedderWithDefaultControls() { // Given AbstractEmbedderTask task = new AbstractEmbedderTask() {}; // When Embedder embedder = task.newEmbedder(); // Then EmbedderControls embedderControls = embedder.embedderControls(); assertThat(embedderControls.batch(), is(false)); assertThat(embedderControls.generateViewAfterStories(), is(true)); assertThat(embedderControls.ignoreFailureInStories(), is(false)); assertThat(embedderControls.ignoreFailureInView(), is(false)); assertThat(embedderControls.verboseFailures(), is(false)); assertThat(embedderControls.verboseFiltering(), is(false)); assertThat(embedderControls.skip(), is(false)); assertThat(embedderControls.storyTimeoutInSecs(), equalTo(300L)); assertThat(embedderControls.failOnStoryTimeout(), is(false)); assertThat(embedderControls.threads(), equalTo(1)); }
@Test public void shouldCreateNewEmbedderWithAntMonitor() { // Given Project project = mock(Project.class); AbstractEmbedderTask task = new AbstractEmbedderTask() {}; task.setProject(project); // When Embedder embedder = task.newEmbedder(); // Then EmbedderMonitor embedderMonitor = embedder.embedderMonitor(); assertThat(embedderMonitor.toString(), equalTo("AntEmbedderMonitor")); // and verify monitor calls are propagated to Project log BatchFailures failures = new BatchFailures(); embedderMonitor.batchFailed(failures); verify(project).log(task, "Failed to run batch " + failures, MSG_WARN); String name = "name"; Throwable cause = new RuntimeException(); embedderMonitor.embeddableFailed(name, cause); verify(project).log(task, "Failed to run embeddable " + name, cause, MSG_WARN); List<String> classNames = asList("name1", "name2"); embedderMonitor.embeddablesSkipped(classNames); verify(project).log(task, "Skipped embeddables " + classNames, MSG_INFO); embedderMonitor.runningEmbeddable(name); verify(project).log(task, "Running embeddable " + name, MSG_INFO); List<String> storyPaths = asList("/path1", "/path2"); embedderMonitor.storiesSkipped(storyPaths); verify(project).log(task, "Skipped stories " + storyPaths, MSG_INFO); String path = "/path"; embedderMonitor.storyFailed(path, cause); verify(project).log(task, "Failed to run story " + path, cause, MSG_WARN); embedderMonitor.runningStory(path); verify(project).log(task, "Running story " + path, MSG_INFO); Object annotatedInstance = new Object(); Class<?> type = Object.class; embedderMonitor.annotatedInstanceNotOfType(annotatedInstance, type); verify(project) .log(task, "Annotated instance " + annotatedInstance + " not of type " + type, MSG_WARN); File outputDirectory = new File("/dir"); List<String> formats = asList(Format.CONSOLE.name(), Format.HTML.name()); Properties viewProperties = new Properties(); embedderMonitor.generatingReportsView(outputDirectory, formats, viewProperties); verify(project) .log( task, "Generating reports view to '" + outputDirectory + "' using formats '" + formats + "'" + " and view properties '" + viewProperties + "'", MSG_INFO); embedderMonitor.reportsViewGenerationFailed(outputDirectory, formats, viewProperties, cause); verify(project) .log( task, "Failed to generate reports view to '" + outputDirectory + "' using formats '" + formats + "'" + " and view properties '" + viewProperties + "'", cause, MSG_WARN); int stories = 2; int storiesNotAllowed = 1; int storiesPending = 1; int scenarios = 4; int scenariosFailed = 1; int scenariosNotAllowed = 0; int scenariosPending = 1; int stepsFailed = 1; embedderMonitor.reportsViewGenerated( new ReportsCount( stories, storiesNotAllowed, storiesPending, scenarios, scenariosFailed, scenariosNotAllowed, scenariosPending, stepsFailed)); verify(project) .log( task, "Reports view generated with " + stories + " stories (of which " + storiesPending + " pending) containing " + scenarios + " scenarios (of which " + scenariosPending + " pending)", MSG_INFO); verify(project) .log( task, "Meta filters excluded " + storiesNotAllowed + " stories and " + scenariosNotAllowed + " scenarios", MSG_INFO); embedderMonitor.reportsViewNotGenerated(); verify(project).log(task, "Reports view not generated", MSG_INFO); }