コード例 #1
0
        public async Task Execute_Done_EarlierStepNotDone_Invalid()
        {
            // Arrange
            var tenantId = Guid.NewGuid();
            var stepId   = Guid.NewGuid();

            var day = new Day
            {
                Tenant = new Tenant
                {
                    Id = tenantId
                },
                Tasks = new List <ScheduledTask>
                {
                    new ScheduledTask
                    {
                        Start = 7.Hours(),
                        End   = 9.Hours(),
                        Steps = new List <ScheduledStep>
                        {
                            new ScheduledStep
                            {
                                Id    = stepId,
                                Order = 1,
                                Text  = "Step to set done",
                                State = StepState.Undone
                            },
                            new ScheduledStep
                            {
                                Id    = Guid.NewGuid(),
                                Order = 0,
                                Text  = "Undone Step",
                                State = StepState.Undone
                            }
                        }
                    }
                }
            };

            var model = new UpdateStepStateOperationsModel
            {
                StepId       = stepId,
                NewStepState = StepState.Done
            };

            var sut = new ValidateStepStateChangeOperationBuilder()
                      .WithContext(tenantId)
                      .WithEntity(day)
                      .Build();

            // Act
            var result = await sut.Execute(model);

            // Assert
            result.Should().BeInvalid();
        }
コード例 #2
0
        public async Task <IActionResult> UpdateStepState(Guid stepId, [FromBody] UpdateStepStateModel model)
        {
            var operationsModel = new UpdateStepStateOperationsModel
            {
                NewStepState = model.State,
                StepId       = stepId
            };

            var result = await _executor
                         .Add <ValidateStepStateChangeOperation, UpdateStepStateOperationsModel>(() => operationsModel)
                         .Add <UpdateStepStateOperation, UpdateStepStateOperationsModel, UpdateStepStateOperationsModel>(m => m)
                         .Add <CreateScheduledStepActivityOperation, (Guid taskId, ActivityType type)>(() => (stepId, ActivityType.StepState))
                         .Add <AddActivityOperation, ScheduledStepActivity, AddActivityOperation.Request>(activity =>
                                                                                                          new AddActivityOperation.Request(model, activity, new Dictionary <string, object>
            {
                [ScheduledStepActivity.StateDataKey] = model.State
            }))
                         .Execute();

            // Return empty payload if succeeded
            return(result.ResultType == OperationResultType.Succeeded ? Ok() : result.CreateHttpResult());
        }