commit 27908fed69413ce1f95dfa4444b71fe93b5e5d5f Author: Mauro Talevi <mauro.tal...@aquilonia.org> AuthorDate: Sat, 18 Apr 2015 09:33:47 +0200 Commit: Mauro Talevi <mauro.tal...@aquilonia.org> CommitDate: Sat, 18 Apr 2015 09:33:47 +0200
JBEHAVE-833: Added StoryManagerBehaviour to unit test timeout patterns. diff --git a/jbehave-core/src/test/java/org/jbehave/core/embedder/StoryManagerBehaviour.java b/jbehave-core/src/test/java/org/jbehave/core/embedder/StoryManagerBehaviour.java new file mode 100644 index 0000000..d9f27a6 --- /dev/null +++ b/jbehave-core/src/test/java/org/jbehave/core/embedder/StoryManagerBehaviour.java @@ -0,0 +1,57 @@ +package org.jbehave.core.embedder; + +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import org.jbehave.core.embedder.PerformableTree.RunContext; +import org.jbehave.core.embedder.StoryManager.EnqueuedStory; +import org.jbehave.core.model.Story; +import org.junit.Test; + +public class StoryManagerBehaviour { + + private PerformableTree performableTree = new PerformableTree(); + private RunContext context = mock(RunContext.class); + private EmbedderMonitor embedderMonitor = new NullEmbedderMonitor(); + private EmbedderControls embedderControls = new EmbedderControls(); + private Story story = mock(Story.class); + + @Test + public void shouldSupportDefaultStoryTimeout(){ + assertThat(enqueuedStory(embedderMonitor, story).getTimeoutInSecs(), is(300L)); + } + + @Test + public void shouldSupportStoryTimeoutsByPathUsingAntPatterns(){ + embedderControls.useStoryTimeoutInSecsByPath("**/*short*:50,**/*long*:500"); + when(story.getPath()).thenReturn("/path/to/a_short_and_sweet.story"); + assertThat(enqueuedStory(embedderMonitor, story).getTimeoutInSecs(), is(50L)); + when(story.getPath()).thenReturn("/path/to/a_long_and_winding.story"); + assertThat(enqueuedStory(embedderMonitor, story).getTimeoutInSecs(), is(500L)); + } + + @Test + public void shouldSupportStoryTimeoutsByPathUsingRegexPatterns(){ + embedderControls.useStoryTimeoutInSecsByPath("/[a-z]+/.*short.*:50,/[a-z]+/.*long.*:500"); + when(story.getPath()).thenReturn("/path/to/a_short_and_sweet.story"); + assertThat(enqueuedStory(embedderMonitor, story).getTimeoutInSecs(), is(50L)); + when(story.getPath()).thenReturn("/path/to/a_long_and_winding.story"); + assertThat(enqueuedStory(embedderMonitor, story).getTimeoutInSecs(), is(500L)); + } + + @Test + public void shouldSupportStoryTimeoutsByPathUsingMixedPatterns(){ + embedderControls.useStoryTimeoutInSecsByPath("/[a-z]+/.*short.*:50,**/*long*:500"); + when(story.getPath()).thenReturn("/path/to/a_short_and_sweet.story"); + assertThat(enqueuedStory(embedderMonitor, story).getTimeoutInSecs(), is(50L)); + when(story.getPath()).thenReturn("/path/to/a_long_and_winding.story"); + assertThat(enqueuedStory(embedderMonitor, story).getTimeoutInSecs(), is(500L)); + } + + private EnqueuedStory enqueuedStory(EmbedderMonitor embedderMonitor, Story story) { + return new EnqueuedStory(performableTree, context, embedderControls, embedderMonitor, story); + } + +}