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