public void FlowTemplateStep_Post_should_return_bad_request_if_service_throws_validation_error()
        {
            // Assemble
            var unitOfWork = A.Fake <IUnitOfWork>();

            A.CallTo(() => unitOfWork.FlowTemplateSteps.Add(A <IFlowTemplateStep> ._))
            .Throws(new ValidationException("Example Validation Message"));

            var sut = new FlowTemplateStepsController(unitOfWork);

            SetupController(sut, "http://example.com/api/FlowTemplates/1/Steps", HttpMethod.Post);

            // Act
            var instance = new FlowTemplateStepDto {
                StepTypeName = "StartStep"
            };
            var response = sut.Post(3, instance);

            var task = response.Content.ReadAsAsync <ExpandoObject>();

            task.Wait();
            dynamic result = task.Result;

            Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
            Assert.Equal("Example Validation Message", result.BrokenRules[0]);
            Assert.Equal(1, result.BrokenRules.Count);
        }
コード例 #2
0
        public void FlowTemplateStepDto_should_map_to_StoreDataStep_when_mapped_to_IStep()
        {
            var origin = new FlowTemplateStepDto {
                Name = "StoreDataStep Example", StepTypeName = "StoreDataStep"
            };

            var result = Mapper.Map <IStep>(origin);

            Assert.IsType <StoreDataStep>(result);
        }
コード例 #3
0
 public HttpResponseMessage Post(int parent, FlowTemplateStepDto instance)
 {
     try
     {
         var source = Map <IStep>(instance);
         var id     = _templates.Add(source, parent);
         _unitOfWork.Commit();
         return(Request.CreateResponse(HttpStatusCode.OK, new { Id = id }));
     }
     catch (ValidationException ex)
     {
         return(Request.CreateResponse(HttpStatusCode.BadRequest, new { ex.BrokenRules }));
     }
 }
コード例 #4
0
        public void FlowTemplateStepDto_should_map_values_to_StopStep()
        {
            var data = new FlowTemplateStepDto
            {
                Id           = 1,
                Name         = "StopStep Example",
                StepTypeName = "StopStep"
            };

            var result = Mapper.Map <StopStep>(data);

            Assert.IsType <StopStep>(result);
            Assert.Equal(1, result.Id);
            Assert.Equal("StopStep Example", result.Name);
        }
コード例 #5
0
        private static IStep FlowTemplateDtoToIStep(FlowTemplateStepDto source)
        {
            switch (source.StepTypeName)
            {
            case "StartStep":
                return(Mapper.Map <StartStep>(source));

            case "StopStep":
                return(Mapper.Map <StopStep>(source));

            case "CollectDataStep":
                return(Mapper.Map <CollectDataStep>(source));

            case "StoreDataStep":
                return(Mapper.Map <StoreDataStep>(source));

            default:
                throw new NotSupportedException("Unable to map from " + source.GetType().Name + " to a supported step");
            }
        }
        public void FlowTemplateService_Post_should_add_StartStep_values()
        {
            var unitOfWork = A.Fake <IUnitOfWork>();

            A.CallTo(() => unitOfWork.FlowTemplateSteps.Get()).Returns(new List <IFlowTemplateStep>
            {
                new FlowTemplateStep {
                    Id = 10
                }
            });
            var sut = new FlowTemplateStepsController(unitOfWork);
            IFlowTemplateStep captured = null;

            A.CallTo(() => unitOfWork.FlowTemplateSteps.Add(A <IFlowTemplateStep> ._))
            .Invokes((IFlowTemplateStep item) => captured = item);
            SetupController(sut, "http://example.com/api/FlowTemplates/1/Steps", HttpMethod.Post);

            // Act
            var instance = new FlowTemplateStepDto {
                Name = "New StartStep", StepTypeName = "StartStep"
            };
            var response = sut.Post(3, instance);

            var task = response.Content.ReadAsAsync <ExpandoObject>();

            task.Wait();
            dynamic result = task.Result;

            A.CallTo(() => unitOfWork.FlowTemplateSteps.Get()).MustHaveHappened(Repeated.Exactly.Once);
            A.CallTo(() => unitOfWork.FlowTemplateSteps.Add(A <IFlowTemplateStep> ._)).MustHaveHappened(Repeated.Exactly.Once);
            A.CallTo(() => unitOfWork.Commit()).MustHaveHappened(Repeated.Exactly.Once);
            Assert.Equal(HttpStatusCode.OK, response.StatusCode);
            Assert.Equal(11, result.Id);
            Assert.Equal(captured.Id, result.Id);
            Assert.Equal(3, captured.FlowTemplateId);
            Assert.Equal(1, captured.StepTypeId);
            Assert.Equal("New StartStep", captured.Name);
        }