public void It_Should_Be_Able_To_Invoke_A_Matched_Step() { SetupStepMatch(); stepRunner.Setup(sr => sr.RunStep(this.stepMatch1)); var matchesResponse = processor.Process(this.matchesRequest1) as StepMatchesResponse; var stepId = matchesResponse.StepIds.Single(); var invokeRequest = new InvokeRequest { StepGuid = stepId }; var invokeResponse = processor.Process(invokeRequest) as SuccessResponse; invokeResponse.Should().Not.Be.Null(); }
private Response ProcessInvoke(InvokeRequest request) { if (!this.InvokableStepDefinitions.ContainsKey(request.StepGuid)) return new StepFailedResponse("Missing Invokable Step Definition") {Exception = string.Format("Step Definition {0} could not be found", request.StepGuid)}; try { var stepDefinition = this.InvokableStepDefinitions[request.StepGuid]; var matchedArgumentCount = stepDefinition.Action.Method.GetParameters().Count(p => !p.ParameterType.Equals(typeof (Table))); var serializer = new JsonSerializer(); var matchedArguments = request.Arguments.Take(matchedArgumentCount) .Select(a => serializer.Deserialize<string>(new JTokenReader(a))); var tables = request.Arguments.Skip(matchedArgumentCount) .Select(a => serializer.Deserialize<string[][]>(new JTokenReader(a))) .Select(cells => new Table {Cells = cells}); var stepMatch = stepMatcher.GetMatch(stepDefinition, matchedArguments, tables); OnBeforeStep(stepMatch); stepRunner.RunStep(stepMatch); OnAfterStep(stepMatch); return new SuccessResponse(); } catch (Exception ex) { return new StepFailedResponse(ex.Message) {Exception = ex.ToString(), Backtrace = ex.StackTrace}; } }
public void It_Should_Not_Be_Able_To_Invoke_An_Unmatched_Step() { SetupNoStepMatch(); var stepId = Guid.NewGuid(); var invokeRequest = new InvokeRequest { StepGuid = stepId }; var invokeResponse = processor.Process(invokeRequest) as FailResponse; invokeResponse.Should().Not.Be.Null(); }