Пример #1
0
        public async Task Update_ShouldReturnNotFound_WhenWrongValues()
        {
            // Arrange
            int id = 1;
            var additionalWorkRequest = new AdditionalWorkUpdateRequest
            {
                Valuation  = 9,
                MetalOrder = 9,
            };
            var wrongAdditionalWorkRequest = new AdditionalWorkUpdateRequest
            {
                EmployeeId = 999,
            };
            string json1        = JsonSerializer.Serialize(wrongAdditionalWorkRequest);
            string json2        = JsonSerializer.Serialize(additionalWorkRequest);
            var    httpContent1 = new StringContent(json1, Encoding.UTF8, "application/json");
            var    httpContent2 = new StringContent(json2, Encoding.UTF8, "application/json");
            var    endpoint1    = $"/api/additional-work/{id}";
            var    endpoint2    = $"/api/additional-work/{999}";

            // Act
            var response1 = await _httpClient.PatchAsync(endpoint1, httpContent1);

            var response2 = await _httpClient.PatchAsync(endpoint2, httpContent2);

            // Assert
            Assert.Equal(HttpStatusCode.NotFound, response1.StatusCode);
            Assert.Equal(HttpStatusCode.NotFound, response2.StatusCode);
        }
Пример #2
0
        public void Update(
            int id,
            AdditionalWorkUpdateRequest additionalWork)
        {
            if (additionalWork == null)
            {
                throw new ArgumentNullException(nameof(additionalWork));
            }
            var foundAdditionalWork = _repository.GetById(id);

            if (foundAdditionalWork == null)
            {
                throw new ArgumentNullException(nameof(foundAdditionalWork));
            }

            if (additionalWork.EmployeeId != null)
            {
                var employeeId = additionalWork.EmployeeId.GetValueOrDefault();
                var employee   = _employeeRepo.GetById(employeeId);
                if (employee == null)
                {
                    throw new ArgumentNullException(nameof(employee));
                }

                var uniqueConstraintViolationCheck = _repository.GetByUniqueKey(
                    foundAdditionalWork.Mark.Id, employeeId);
                if (uniqueConstraintViolationCheck != null && uniqueConstraintViolationCheck.Id != id)
                {
                    throw new ConflictException(uniqueConstraintViolationCheck.Id.ToString());
                }
                foundAdditionalWork.Employee = employee;
            }
            if (additionalWork.Valuation != null)
            {
                foundAdditionalWork.Valuation = additionalWork.Valuation.GetValueOrDefault();
            }
            if (additionalWork.MetalOrder != null)
            {
                foundAdditionalWork.MetalOrder = additionalWork.MetalOrder.GetValueOrDefault();
            }

            _repository.Update(foundAdditionalWork);

            var foundMark = _markRepo.GetById(foundAdditionalWork.Mark.Id);

            foundMark.EditedDate = DateTime.Now;
            _markRepo.Update(foundMark);
        }
Пример #3
0
        public void Update_ShouldFailWithNull_WhenWrongValues()
        {
            // Arrange
            int id = _rnd.Next(1, _additionalWork.Count());

            var newAdditionalWorkRequest = new AdditionalWorkUpdateRequest
            {
                Valuation = 11,
            };

            // Act & Assert
            Assert.Throws <ArgumentNullException>(() => _service.Update(id, null));
            Assert.Throws <ArgumentNullException>(() => _service.Update(999, newAdditionalWorkRequest));

            _repository.Verify(mock => mock.Update(It.IsAny <AdditionalWork>()), Times.Never);
        }
Пример #4
0
        public void Update_ShouldFailWithConflict_WhenConflictValues()
        {
            // Arrange
            var conflictEmployeeId = _additionalWork[0].Employee.Id;
            var id = _additionalWork[1].Id;

            var newAdditionalWorkRequest = new AdditionalWorkUpdateRequest
            {
                EmployeeId = conflictEmployeeId,
                Valuation  = 11,
            };

            // Act & Assert
            Assert.Throws <ConflictException>(() => _service.Update(id, newAdditionalWorkRequest));

            _repository.Verify(mock => mock.Update(It.IsAny <AdditionalWork>()), Times.Never);
        }
Пример #5
0
        public async Task Update_ShouldReturnUnauthorized_WhenNoAccessToken()
        {
            // Arrange
            int id = 1;
            var additionalWorkRequest = new AdditionalWorkUpdateRequest
            {
                Valuation  = 9,
                MetalOrder = 9,
            };
            string json        = JsonSerializer.Serialize(additionalWorkRequest);
            var    httpContent = new StringContent(json, Encoding.UTF8, "application/json");
            var    endpoint    = $"/api/additional-work/{id}";

            // Act
            var response = await _authHttpClient.PatchAsync(endpoint, httpContent);

            // Assert
            Assert.Equal(HttpStatusCode.Unauthorized, response.StatusCode);
        }
Пример #6
0
        public async Task Update_ShouldReturnConflict_WhenConflictValues()
        {
            // Arrange
            int id = 3;
            var additionalWorkRequest = new AdditionalWorkUpdateRequest
            {
                EmployeeId = 2,
                Valuation  = 9,
                MetalOrder = 9,
            };
            string json        = JsonSerializer.Serialize(additionalWorkRequest);
            var    httpContent = new StringContent(json, Encoding.UTF8, "application/json");
            var    endpoint    = $"/api/additional-work/{id}";

            // Act
            var response = await _httpClient.PatchAsync(endpoint, httpContent);

            // Assert
            Assert.Equal(HttpStatusCode.Conflict, response.StatusCode);
        }
Пример #7
0
 public ActionResult Update(
     int id, [FromBody] AdditionalWorkUpdateRequest additionalWorkRequest)
 {
     if (!additionalWorkRequest.Validate())
     {
         return(BadRequest());
     }
     try
     {
         _service.Update(id, additionalWorkRequest);
     }
     catch (ArgumentNullException)
     {
         return(NotFound());
     }
     catch (ConflictException)
     {
         return(Conflict());
     }
     return(NoContent());
 }
Пример #8
0
        public void Update_ShouldUpdateAdditionalWork()
        {
            // Arrange
            int   id          = _rnd.Next(1, _additionalWork.Count());
            short newIntValue = 99;

            var newAdditionalWorkRequest = new AdditionalWorkUpdateRequest
            {
                Valuation  = newIntValue,
                MetalOrder = newIntValue,
            };

            // Act
            _service.Update(id, newAdditionalWorkRequest);

            // Assert
            _repository.Verify(mock => mock.Update(It.IsAny <AdditionalWork>()), Times.Once);
            var v = _additionalWork.SingleOrDefault(v => v.Id == id);

            Assert.Equal(newIntValue, v.Valuation);
            Assert.Equal(newIntValue, v.MetalOrder);
        }