public async Task Update_Computer(CreateComputer createComputer, UpdateComputer updateComputer) { var postResponse = await HttpClient.PostAsync(ResourceKey, new StringContent(JsonConvert.SerializeObject(createComputer), Encoding.UTF8, "application/json")); Assert.Equal(HttpStatusCode.Created, postResponse.StatusCode); var computer = JsonConvert.DeserializeObject <ComputerDto>(await postResponse.Content.ReadAsStringAsync()); var putResult = await HttpClient.PutAsync(ResourceKey + "/" + computer.Id, new StringContent(JsonConvert.SerializeObject(updateComputer), Encoding.UTF8, "application/json")); putResult = await HttpClient.GetAsync(putResult.Headers.Location); computer = JsonConvert.DeserializeObject <ComputerDto>(await putResult.Content.ReadAsStringAsync()); computer.Name.Should().Be(updateComputer.Name); computer.Price.Should().Be(updateComputer.Price); foreach (var graphicsCard in createComputer.GraphicsCard) { Assert.Contains(createComputer.GraphicsCard, x => x.Name == graphicsCard.Name); Assert.Contains(createComputer.GraphicsCard, x => x.Price.Equals(graphicsCard.Price)); } foreach (var ram in createComputer.Ram) { Assert.Contains(createComputer.Ram, x => x.Name == ram.Name); Assert.Contains(createComputer.Ram, x => x.Price.Equals(ram.Price)); } }
public async Task <IActionResult> UpdateComputer(Guid computerId, [FromBody] UpdateComputer request, [FromHeader(Name = "Accept")] string mediaType) { if (request == null) { return(NotFound()); } var response = await _computersService.UpdateComputer(computerId, request); if (response.HttpStatusCode == (int)HttpStatusCode.Created) { if (mediaType.IsApplicationHal()) { return(CreatedAtRoute("GetComputer", new { response.Data.Id }, CreateLinkForComputer(response.Data))); } return(CreatedAtRoute("GetComputer", new { response.Data.Id }, response.Data)); } return(new ObjectResult(response.Data) { StatusCode = (int)response.HttpStatusCode }); }
public async Task Update_Computer_Should_Return_UnProcessableEntity(CreateComputer createComputer, UpdateComputer updateComputer) { var postResponse = await HttpClient.PostAsync(ResourceKey, new StringContent(JsonConvert.SerializeObject(createComputer), Encoding.UTF8, "application/json")); Assert.Equal(HttpStatusCode.Created, postResponse.StatusCode); var computer = JsonConvert.DeserializeObject <ComputerDto>(await postResponse.Content.ReadAsStringAsync()); updateComputer.Name = new String('a', 256); var putResult = await HttpClient.PutAsync(ResourceKey + "/" + computer.Id, new StringContent(JsonConvert.SerializeObject(updateComputer), Encoding.UTF8, "application/json")); Assert.Equal(422, (int)putResult.StatusCode); }
public async Task Update_Computer_With_Hal_Should_Have_Valid_Links(UpdateComputer updateComputer) { var response = await _httpClient.GetAsync(ResourceKey); Assert.Equal(HttpStatusCode.OK, response.StatusCode); var result = JsonConvert.DeserializeObject <LinkedCollectionResourceWrapperDto <ComputerDto> >(await response.Content.ReadAsStringAsync()); response = await _httpClient.GetAsync(result.Value.First().Links.First(x => x.Rel == "self").Href); var computer = JsonConvert.DeserializeObject <ComputerDto>(await response.Content.ReadAsStringAsync()); response = await _httpClient.PutAsync(computer.Links.First(x => x.Rel == "update").Href, new StringContent(JsonConvert.SerializeObject(updateComputer), Encoding.UTF8, "application/json")); var updatedComputer = JsonConvert.DeserializeObject <ComputerDto>(await response.Content.ReadAsStringAsync()); var self = computer.Links.FirstOrDefault(x => x.Rel == "self"); var delete = computer.Links.FirstOrDefault(x => x.Rel == "delete"); var put = computer.Links.FirstOrDefault(x => x.Rel == "update"); var patch = computer.Links.FirstOrDefault(x => x.Rel == "patch"); Assert.NotNull(self); Assert.Equal(HttpMethod.Get.ToString(), self.Method); Assert.Equal(_httpClient.BaseAddress + ResourceKey.Substring(1) + "/" + computer.Id, self.Href); Assert.NotNull(delete); Assert.Equal(HttpMethod.Delete.ToString(), delete.Method); Assert.Equal(_httpClient.BaseAddress + ResourceKey.Substring(1) + "/" + computer.Id, delete.Href); Assert.NotNull(put); Assert.Equal(HttpMethod.Put.ToString(), put.Method); Assert.Equal(_httpClient.BaseAddress + ResourceKey.Substring(1) + "/" + computer.Id, put.Href); Assert.NotNull(patch); Assert.Equal("PATCH", patch.Method); Assert.Equal(_httpClient.BaseAddress + ResourceKey.Substring(1) + "/" + computer.Id, patch.Href); }
public async Task <BaseResponse <ComputerDto> > UpdateComputer(Guid computerId, UpdateComputer request) { var(errors, isValid) = EntityValidator.Validate(request); if (!isValid) { return(new BaseResponse <ComputerDto>((int)CustomHttpStatusCode.UnprocessableEntity, string.Join("", errors))); } if (!await _computerRepository.Exists(computerId)) { return(new BaseResponse <ComputerDto>((int)HttpStatusCode.NotFound)); } var computer = await _computerRepository.Get(computerId); computer.Update(request.Name, request.Price); await _computerRepository.Update(computer); return(new BaseResponse <ComputerDto>((int)HttpStatusCode.Created, _mapper.Map <ComputerDto>(computer))); }