Example #1
0
        public void Post_Should_save_supported_child_steps()
        {
            // Assemble
            var instance = new FlowTemplateDto
            {
                Name  = "Example Step",
                Steps = new List <FlowTemplateStepDto>
                {
                    new FlowTemplateStepDto {
                        StepTypeName = "StartStep"
                    },
                    new FlowTemplateStepDto {
                        StepTypeName = "StopStep"
                    }
                }
            };

            var controller = new FlowTemplatesController(_flowTemplateService);
            var config     = new HttpConfiguration();
            var request    = new HttpRequestMessage(HttpMethod.Post, "http://localhost/api/FlowTemplates");
            var route      = config.Routes.MapHttpRoute("DefaultApi", "api/{controller}/{id}", new { id = RouteParameter.Optional });
            var routeData  = new HttpRouteData(route, new HttpRouteValueDictionary {
                { "controller", "FlowTemplates" }
            });

            controller.ControllerContext = new HttpControllerContext(config, routeData, request);
            controller.Request           = request;
            controller.Request.Properties[HttpPropertyKeys.HttpConfigurationKey] = config;
            controller.Request.Properties.Add(HttpPropertyKeys.HttpRouteDataKey, routeData);

            // Assert
            controller.Post(instance);

            A.CallTo(() => _flowTemplateService.Add(A <FlowTemplate> ._)).MustHaveHappened(Repeated.Exactly.Once);
        }
Example #2
0
        public HttpResponseMessage Post(FlowTemplateDto source)
        {
            var flowTemplate = Map <FlowTemplate>(source);

            if (source.Steps != null && source.Steps.Any())
            {
                flowTemplate.Steps = source.Steps.Select(Map <IStep>).ToList();
            }

            var id = _templates.Add(flowTemplate);

            return(Request.CreateResponse(HttpStatusCode.Created, new { Id = id }));
        }
Example #3
0
        public void Post_should_not_store_unsupported_Step()
        {
            // assemble
            var instance = new FlowTemplateDto
            {
                Name  = "Example Step",
                Steps = new List <FlowTemplateStepDto>
                {
                    new FlowTemplateStepDto {
                        StepTypeName = "NonExistantStep"
                    },
                }
            };

            // assert
            Assert.Throws <NotSupportedException>(() => _sut.Post(instance));
        }
Example #4
0
        public HttpResponseMessage Put(FlowTemplateDto source)
        {
            if (_templates.GetFlowTemplate(source.Id) == null)
            {
                throw new HttpResponseException(HttpStatusCode.NotFound);
            }

            try
            {
                var flowTemplate = Map <FlowTemplate>(source);
                _templates.Update(flowTemplate);
                return(Request.CreateResponse(HttpStatusCode.OK));
            }
            catch (ValidationException validationException)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, validationException.Message));
            }
        }
Example #5
0
        public void Post_should_store_StoreDataStep_type()
        {
            // assemble
            FlowTemplate captured = null;

            A.CallTo(() => _flowTemplateService.Add(A <FlowTemplate> ._))
            .Invokes((FlowTemplate item) => captured = item);

            var instance = new FlowTemplateDto
            {
                Name  = "Example Step",
                Steps = new List <FlowTemplateStepDto>
                {
                    new FlowTemplateStepDto {
                        StepTypeName = "StoreDataStep"
                    },
                }
            };

            var controller = new FlowTemplatesController(_flowTemplateService);
            var config     = new HttpConfiguration();
            var request    = new HttpRequestMessage(HttpMethod.Post, "http://localhost/api/FlowTemplates");
            var route      = config.Routes.MapHttpRoute("DefaultApi", "api/{controller}/{id}", new { id = RouteParameter.Optional });
            var routeData  = new HttpRouteData(route, new HttpRouteValueDictionary {
                { "controller", "FlowTemplates" }
            });

            controller.ControllerContext = new HttpControllerContext(config, routeData, request);
            controller.Request           = request;
            controller.Request.Properties[HttpPropertyKeys.HttpConfigurationKey] = config;
            controller.Request.Properties.Add(HttpPropertyKeys.HttpRouteDataKey, routeData);

            // act
            controller.Post(instance);

            // assert
            A.CallTo(() => _flowTemplateService.Add(A <FlowTemplate> ._)).MustHaveHappened(Repeated.Exactly.Once);
            Assert.IsType <StoreDataStep>(captured.Steps[0]);
        }