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); }
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 })); }
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)); }
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)); } }
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]); }