public String getNormalizedTestNameFor(final ApplicationFeature feature) {
   String testNameWithUnderscores = NameConverter.underscore(feature.getName());
   return appendSuffixTo(testNameWithUnderscores);
 }
public class WhenGroupingTestResultsByFeature {

  @Mock UserStoryLoader mockUserStoryLoader;

  FeatureLoader loader;

  List<StoryTestResults> stories;

  @Feature
  class WidgetFeature {
    class PurchaseNewWidget {};

    class SearchWidgets {};

    class DisplayWidgets {};
  }

  @Feature
  class GizmoFeature {
    class PurchaseNewGizmo {};

    class SearchGizmos {};

    class DisplayGizmos {};
  }

  ApplicationFeature widgetFeature = ApplicationFeature.from(WidgetFeature.class);
  ApplicationFeature gizmoFeature = ApplicationFeature.from(GizmoFeature.class);

  @Mock File reportDirectory;

  @Before
  public void initMocks() throws IOException {
    MockitoAnnotations.initMocks(this);
    stories = createMockUserStories();
    loader = new FeatureLoader();
    loader.setUserStoriesLoader(mockUserStoryLoader);
  }

  private List<StoryTestResults> createMockUserStories() {
    List<StoryTestResults> mockStories = new ArrayList<StoryTestResults>();

    mockStories.add(
        storyTestResult(Story.from(WidgetFeature.PurchaseNewWidget.class), 2, 0, 1, 1, 0, 10));
    mockStories.add(
        storyTestResult(Story.from(WidgetFeature.SearchWidgets.class), 2, 1, 1, 0, 1, 20));
    mockStories.add(
        storyTestResult(Story.from(WidgetFeature.SearchWidgets.class), 3, 2, 1, 0, 1, 10));
    mockStories.add(
        storyTestResult(Story.from(GizmoFeature.PurchaseNewGizmo.class), 4, 2, 1, 1, 1, 10));

    return mockStories;
  }

  private StoryTestResults storyTestResult(
      Story story,
      int testCount,
      int passingTests,
      int failingTests,
      int pendingTests,
      int skippedTests,
      int totalSteps) {
    StoryTestResults storyResults = mock(StoryTestResults.class);

    when(storyResults.getStory()).thenReturn(story);
    when(storyResults.getTotal()).thenReturn(testCount);
    when(storyResults.getSuccessCount()).thenReturn(passingTests);
    when(storyResults.getFailureCount()).thenReturn(failingTests);
    when(storyResults.getPendingCount()).thenReturn(pendingTests);
    when(storyResults.getStepCount()).thenReturn(totalSteps);
    when(storyResults.getSkipCount()).thenReturn(skippedTests);
    when(storyResults.countStepsInSuccessfulTests()).thenReturn(passingTests * 3);
    return storyResults;
  }

  @Test
  public void features_should_be_retrieved_from_the_user_stories() throws IOException {
    when(mockUserStoryLoader.loadFrom(reportDirectory)).thenReturn(stories);

    List<FeatureResults> features = loader.loadFrom(reportDirectory);

    assertThat(features.size(), is(2));
    assertThat(features, containsApplicationFeature(widgetFeature));
    assertThat(features, containsApplicationFeature(gizmoFeature));
  }

  @Test
  public void should_know_number_of_stories_of_a_feature() throws IOException {
    when(mockUserStoryLoader.loadFrom(reportDirectory)).thenReturn(stories);

    List<FeatureResults> features = loader.loadFrom(reportDirectory);

    FeatureResults widgetFeatureResult = features.get(0);
    FeatureResults gizmoFeatureResult = features.get(1);

    assertThat(widgetFeatureResult.getTotalStories(), is(3));
    assertThat(gizmoFeatureResult.getTotalStories(), is(1));
  }

  @Test
  public void should_know_number_of_tests_of_a_feature() throws IOException {
    when(mockUserStoryLoader.loadFrom(reportDirectory)).thenReturn(stories);

    List<FeatureResults> features = loader.loadFrom(reportDirectory);

    FeatureResults widgetFeatureResult = features.get(0);
    FeatureResults gizmoFeatureResult = features.get(1);

    assertThat(widgetFeatureResult.getTotalTests(), is(7));
    assertThat(gizmoFeatureResult.getTotalTests(), is(4));
  }

  @Test
  public void should_know_number_of_tests_in_the_stories_of_a_feature() throws IOException {
    when(mockUserStoryLoader.loadFrom(reportDirectory)).thenReturn(stories);

    List<FeatureResults> features = loader.loadFrom(reportDirectory);

    FeatureResults widgetFeatureResult = features.get(0);
    FeatureResults gizmoFeatureResult = features.get(1);

    assertThat(widgetFeatureResult.getTotalTests(), is(7));
    assertThat(gizmoFeatureResult.getTotalTests(), is(4));
  }

  @Test
  public void should_know_number_of_passing_tests_in_the_stories_of_a_feature() throws IOException {
    when(mockUserStoryLoader.loadFrom(reportDirectory)).thenReturn(stories);

    List<FeatureResults> features = loader.loadFrom(reportDirectory);

    FeatureResults widgetFeatureResult = features.get(0);
    FeatureResults gizmoFeatureResult = features.get(1);

    assertThat(widgetFeatureResult.getPassingTests(), is(3));
    assertThat(gizmoFeatureResult.getPassingTests(), is(2));
  }

  @Test
  public void should_know_number_of_failing_tests_in_the_stories_of_a_feature() throws IOException {
    when(mockUserStoryLoader.loadFrom(reportDirectory)).thenReturn(stories);

    List<FeatureResults> features = loader.loadFrom(reportDirectory);

    FeatureResults widgetFeatureResult = features.get(0);
    FeatureResults gizmoFeatureResult = features.get(1);

    assertThat(widgetFeatureResult.getFailingTests(), is(3));
    assertThat(gizmoFeatureResult.getFailingTests(), is(1));
  }

  @Test
  public void should_know_number_of_pending_tests_in_the_stories_of_a_feature() throws IOException {
    when(mockUserStoryLoader.loadFrom(reportDirectory)).thenReturn(stories);

    List<FeatureResults> features = loader.loadFrom(reportDirectory);

    FeatureResults widgetFeatureResult = features.get(0);
    FeatureResults gizmoFeatureResult = features.get(1);

    assertThat(widgetFeatureResult.getPendingTests(), is(1));
    assertThat(gizmoFeatureResult.getPendingTests(), is(1));
  }

  @Test
  public void should_know_number_of_skipped_tests_in_the_stories_of_a_feature() throws IOException {
    when(mockUserStoryLoader.loadFrom(reportDirectory)).thenReturn(stories);

    List<FeatureResults> features = loader.loadFrom(reportDirectory);

    FeatureResults widgetFeatureResult = features.get(0);
    FeatureResults gizmoFeatureResult = features.get(1);

    assertThat(widgetFeatureResult.getSkippedTests(), is(2));
    assertThat(gizmoFeatureResult.getSkippedTests(), is(1));
  }

  @Test
  public void should_know_number_of_steps_in_the_stories_of_a_feature() throws IOException {
    when(mockUserStoryLoader.loadFrom(reportDirectory)).thenReturn(stories);

    List<FeatureResults> features = loader.loadFrom(reportDirectory);

    FeatureResults widgetFeatureResult = features.get(0);
    FeatureResults gizmoFeatureResult = features.get(1);
    assertThat(widgetFeatureResult.getTotalSteps(), is(40));
    assertThat(gizmoFeatureResult.getTotalSteps(), is(10));
  }

  @Test
  public void should_know_number_of_steps_in_successful_stories_in_a_feature() throws IOException {
    when(mockUserStoryLoader.loadFrom(reportDirectory)).thenReturn(stories);

    List<FeatureResults> features = loader.loadFrom(reportDirectory);

    FeatureResults widgetFeatureResult = features.get(0);
    assertThat(widgetFeatureResult.countStepsInSuccessfulTests(), is(9));
  }
}
Exemple #3
0
 private ApplicationFeature findFeatureFrom(Class<?> userStoryClass) {
   if (getFeatureClass(userStoryClass) != null) {
     return ApplicationFeature.from(getFeatureClass(userStoryClass));
   }
   return null;
 }