Пример #1
0
        public void ChangeStateTask()
        {
            Guid taskId = Guid.Parse("{E79904A7-F442-454E-B8EF-01B1C1AACDD4}");

            _taskRepository.Clear();

            _taskRepository.Add(new Job
            {
                Id    = taskId,
                State = TaskState.New
            });
            TaskCommandHandlers taskCommandComponent = _taskCommandHandlers;


            ICommandHandler <SetStateInProcessCommand> setStateInProcessCommandHandler = taskCommandComponent;
            var setStateInProcessCommand = new SetStateInProcessCommand(taskId, "executor");

            setStateInProcessCommandHandler.Handle(setStateInProcessCommand);

            var task = _taskRepository.First();

            Assert.AreEqual(TaskState.InProcess, task.State);


            ICommandHandler <SetStateDoneCommand> setStateDoneCommandHandler = taskCommandComponent;
            var setStateDoneCommand = new SetStateDoneCommand(taskId);

            setStateDoneCommandHandler.Handle(setStateDoneCommand);

            task = _taskRepository.First();

            Assert.AreEqual(TaskState.Done, task.State);

            task.State = TaskState.InProcess;


            ICommandHandler <SetStateFailCommand> setStateNewCommandHandler = taskCommandComponent;
            var setStateNewCommand = new SetStateFailCommand(taskId);

            setStateNewCommandHandler.Handle(setStateNewCommand);

            task = _taskRepository.First();

            Assert.AreEqual(TaskState.Fail, task.State);
        }
Пример #2
0
        /// <summary>
        /// Поменять статус задачи -> Выполнена с ошибкой.
        /// </summary>
        /// <param name="command"></param>
        public void Handle(SetStateFailCommand command)
        {
            CommitWrapper(() =>
            {
                var task = _taskRepository.GetByIdOrNull(command.TaskId);

                if (task == null)
                {
                    throw new NullReferenceException();
                }

                if (task.State != TaskState.InProcess)
                {
                    throw new InvalidOperationException();
                }

                task.State = TaskState.Fail;
            });

            _eventAggregator.GetEvent <SetStateFailEvent>().Publish(command);
        }