Пример #1
0
        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();
        }
Пример #2
0
        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};
            }
        }
Пример #3
0
        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();
        }