public void PostDuplicateName_WhenCalled_ReturnsBadRequestResult()
        {
            var newTask = new SimpleTaskBaseDto
            {
                Name      = "Task 1",
                CreatedBy = "Mikk"
            };

            var result = _controller.Post(newTask);

            Assert.IsType <BadRequestObjectResult>(result.Result);
        }
        public void Post_WhenCalled_ReturnsOkResult()
        {
            var newTask = new SimpleTaskBaseDto
            {
                Name      = "New Task 1",
                CreatedBy = "Mikk"
            };

            var result = _controller.Post(newTask);

            Assert.IsType <OkObjectResult>(result.Result);
        }
Beispiel #3
0
        public async Task <ActionResult> Post([FromBody] SimpleTaskBaseDto value)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            bool isTaskInProgress = true;

            do
            {
                isTaskInProgress = _tasksInProgress.Any(x => x == value.Name);
                if (isTaskInProgress)
                {
                    Thread.Sleep(1000);
                }
                else
                {
                    _tasksInProgress.Add(value.Name);
                }
            } while (!isTaskInProgress);

            var task = _iMapper.Map <SimpleTaskBaseDto, SimpleTask>(value);

            task.LastUpdateBy       = task.CreatedBy;
            task.LastUpdateDateTime = task.CreationDateTime;

            bool isValid = await Validate(task);

            if (!isValid)
            {
                _tasksInProgress.Remove(value.Name);
                return(BadRequest($"Task with name {task.Name} already exists in database."));
            }

            _simpleTaskRepository.Add(task);
            IncrementNumberOfTotalOperations();
            _tasksInProgress.Remove(value.Name);

            return(Ok(value));
        }