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