@Test public void shouldRunScenarioAndLifecycleStepsInCorrectOrderWithExamplesTable() throws Throwable { // Given ExamplesTable examplesTable = new ExamplesTable("|one|two|\n|1|2|\n"); Map<String, String> tableRow = examplesTable.getRow(0); Scenario scenario1 = new Scenario( "my title 1", Meta.EMPTY, GivenStories.EMPTY, examplesTable, asList("step <one>", "step <two>")); Story story = new Story(new Description("my blurb"), Narrative.EMPTY, asList(scenario1)); StoryReporter reporter = mock(ConcurrentStoryReporter.class); StepCollector collector = mock(StepCollector.class); FailureStrategy failureStrategy = mock(FailureStrategy.class); Configuration configuration = configurationWith(reporter, collector, failureStrategy); configuration.storyControls().doDryRun(true); CandidateSteps mySteps = new Steps(configuration); Step firstStep = mockSuccessfulStep("step <one>"); Step secondStep = mockSuccessfulStep("step <two>"); when(collector.collectScenarioSteps(asList(mySteps), scenario1, tableRow)) .thenReturn(asList(firstStep, secondStep)); boolean givenStory = false; givenStoryWithNoBeforeOrAfterSteps(story, givenStory, collector, mySteps); Step beforeExampleStep = mockSuccessfulStep("beforeExampleStep"); Step afterExampleStep = mockSuccessfulStep("afterExampleStep"); when(collector.collectBeforeOrAfterScenarioSteps( eq(asList(mySteps)), Matchers.<Meta>any(), eq(Stage.BEFORE), eq(ScenarioType.EXAMPLE))) .thenReturn(asList(beforeExampleStep)); when(collector.collectBeforeOrAfterScenarioSteps( eq(asList(mySteps)), Matchers.<Meta>any(), eq(Stage.AFTER), eq(ScenarioType.EXAMPLE))) .thenReturn(asList(afterExampleStep)); Step beforeStep = mockSuccessfulStep("lifecycleBeforeStep"); Step afterStep = mockSuccessfulStep("lifecycleAfterStep"); when(collector.collectLifecycleSteps( eq(asList(mySteps)), eq(Lifecycle.EMPTY), any(Meta.class), eq(Stage.BEFORE))) .thenReturn(asList(beforeStep)); when(collector.collectLifecycleSteps( eq(asList(mySteps)), eq(Lifecycle.EMPTY), any(Meta.class), eq(Stage.AFTER))) .thenReturn(asList(afterStep)); // When StoryRunner runner = new StoryRunner(); runner.run(configuration, asList(mySteps), story); // Then InOrder inOrder = inOrder(reporter, failureStrategy); inOrder.verify(reporter).successful("beforeExampleStep"); inOrder.verify(reporter).successful("lifecycleBeforeStep"); inOrder.verify(reporter).successful("step <one>"); inOrder.verify(reporter).successful("step <two>"); inOrder.verify(reporter).successful("lifecycleAfterStep"); inOrder.verify(reporter).successful("afterExampleStep"); }
@Given("authentication policy for $orgName: $authPolicyTable") public void updateOrganizationWithDefaultAuthPolicy(String orgName, ExamplesTable table) { Organization org = organizationDao.findByName(orgName); Map<String, String> row = table.getRow(0); org.setAuthenticationPolicy(new AuthenticationPolicyBuilder(row).build()); organizationDao.persist(org); }
@Given("with living cells at following positions : $table") public void givenInitialPositionTable(ExamplesTable table) { List<Map<String, String>> rows = table.getRows(); for (Map<String, String> row : rows) { int x = Integer.valueOf(row.get("x")); int y = Integer.valueOf(row.get("y")); initialStates.add(new Coordinate(x, y)); } }
@Test public void shouldRunScenarioWithExamplesTable() throws Throwable { // Given ExamplesTable examplesTable = new ExamplesTable("|one|two|\n|1|2|\n"); Map<String, String> tableRow = examplesTable.getRow(0); Scenario scenario1 = new Scenario( "my title 1", Meta.EMPTY, GivenStories.EMPTY, examplesTable, asList("step <one>", "step <two>")); Story story = new Story(new Description("my blurb"), Narrative.EMPTY, asList(scenario1)); Step step = mock(Step.class); StepResult result = mock(StepResult.class); when(step.perform(null)).thenReturn(result); StoryReporter reporter = mock(ConcurrentStoryReporter.class); StepCollector collector = mock(StepCollector.class); FailureStrategy failureStrategy = mock(FailureStrategy.class); Configuration configuration = configurationWith(reporter, collector, failureStrategy); configuration.storyControls().doDryRun(true); CandidateSteps mySteps = new Steps(configuration); Step firstStep = mockSuccessfulStep("step <one>"); Step secondStep = mockSuccessfulStep("step <two>"); when(collector.collectScenarioSteps(asList(mySteps), scenario1, tableRow)) .thenReturn(asList(firstStep, secondStep)); boolean givenStory = false; givenStoryWithNoBeforeOrAfterSteps(story, givenStory, collector, mySteps); // When StoryRunner runner = new StoryRunner(); runner.run(configuration, asList(mySteps), story); // Then InOrder inOrder = inOrder(reporter, failureStrategy); inOrder.verify(reporter).beforeStory(story, givenStory); inOrder.verify(reporter).beforeScenario("my title 1"); inOrder.verify(reporter).successful("step <one>"); inOrder.verify(reporter).successful("step <two>"); inOrder.verify(reporter).afterScenario(); inOrder.verify(reporter).afterStory(givenStory); }
private void runScenariosParametrisedByExamples( RunContext context, Scenario scenario, Lifecycle lifecycle, Meta storyAndScenarioMeta) throws Throwable { ExamplesTable table = scenario.getExamplesTable(); reporter.get().beforeExamples(scenario.getSteps(), table); Keywords keywords = context.configuration().keywords(); for (Map<String, String> scenarioParameters : table.getRows()) { Meta parameterMeta = parameterMeta(keywords, scenarioParameters); if (!parameterMeta.isEmpty() && !context.filter.allow(parameterMeta)) { continue; } reporter.get().example(scenarioParameters); if (context.configuration().storyControls().resetStateBeforeScenario()) { context.resetState(); } runBeforeOrAfterScenarioSteps( context, scenario, storyAndScenarioMeta, Stage.BEFORE, ScenarioType.EXAMPLE); runStepWithLifecycle(context, lifecycle, scenarioParameters, scenario, storyAndScenarioMeta); runBeforeOrAfterScenarioSteps( context, scenario, storyAndScenarioMeta, Stage.AFTER, ScenarioType.EXAMPLE); } reporter.get().afterExamples(); }
@Given("the following trades: $tradesTable") public void theTrades(ExamplesTable tradesTable) { for (Map<String, String> row : tradesTable.getRows()) { String symbol = row.get("symbol"); String minsAgo = row.get("mins-ago"); String tradedPrice = row.get("traded-price"); String quantity = row.get("quantity"); Stock stock = new Stock.Builder().symbol(symbol).type(TYPE.COMMON).build(); StockTrade trade = new StockTrade.Builder() .stock(stock) .timestamp( new Date(System.currentTimeMillis() - Integer.valueOf(minsAgo) * 60 * 1000)) .quantity(Integer.valueOf(quantity)) .tradedPrice(Double.valueOf(tradedPrice)) .build(); tradeRepository.captureTrade(trade); } }
private void assertThatExamplesTableIsConverted(final ParameterConverters parameterConverters) { final String tableAsString = "||one||two||\n" + "|1|2|"; final ExamplesTable table = new ExamplesTable(tableAsString); assertThat(table.getHeaders(), hasItems("one", "two")); }