public void Add_StoreDataStep_should_add_values()
        {
            IFlowTemplateStep inserted = null;

            A.CallTo(() => _unitofwork.FlowTemplateSteps.Add(A <IFlowTemplateStep> ._))
            .Invokes((IFlowTemplateStep item) => inserted = item);

            _flowTemplateService.Add(new StoreDataStep {
                Name = "StoreDataStep Example",
            }, 2);

            A.CallTo(() => _unitofwork.FlowTemplateSteps.Add(A <IFlowTemplateStep> ._)).MustHaveHappened(Repeated.Exactly.Once);
            Assert.Equal(1, inserted.Id);
            Assert.Equal("StoreDataStep Example", inserted.Name);
            Assert.Equal(2, inserted.FlowTemplateId);
            Assert.Equal(4, inserted.StepTypeId);
        }
        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);
        }