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);
+       }
+
+}



Reply via email to