public async Task Should_Update_FlatForRentAnnouncement_When_Requesting_By_Administrator_Client() { var flatForRentAnnouncementEntity = await InsertFlatForRentAnnouncementEntityAsync(_fixture.FlatForRentAnnouncementEntityCosmosStore); var updateFlatForRentAnnouncementRequest = new UpdateFlatForRentAnnouncementRequest { Id = flatForRentAnnouncementEntity.Id, Title = "UpdateFlatForRentAnnouncementNewName", SourceUrl = flatForRentAnnouncementEntity.SourceUrl, CityId = flatForRentAnnouncementEntity.CityId, Description = flatForRentAnnouncementEntity.Description, Price = flatForRentAnnouncementEntity.Price, NumberOfRooms = FlatForRentAnnouncementProfile.ConvertToNumberOfRoomsEnum(flatForRentAnnouncementEntity.NumberOfRooms.ConvertToEnumeration()), CityDistricts = flatForRentAnnouncementEntity.CityDistricts }; var updateFlatForRentAnnouncementRequestString = JsonConvert.SerializeObject(updateFlatForRentAnnouncementRequest); var requestContent = new StringContent(updateFlatForRentAnnouncementRequestString, Encoding.UTF8, "application/json"); _fixture.AdministratorHttpClient.DefaultRequestHeaders.Add("api-version", "1"); var response = await _fixture.AdministratorHttpClient.PutAsync($"api/flatForRentAnnouncements/{flatForRentAnnouncementEntity.Id}", requestContent); var responseContentString = await response.Content.ReadAsStringAsync(); var expectedResponse = await PrepareExpectedResponseAsync(flatForRentAnnouncementEntity.Id, _fixture.FlatForRentAnnouncementEntityCosmosStore); response.StatusCode.Should().BeEquivalentTo(HttpStatusCode.OK); responseContentString.Should().BeEquivalentTo(expectedResponse); }
public async Task Should_Return_Unauthorized_Status_Code_When_Requesting_By_Anonymous_Client() { var updateFlatForRentAnnouncementRequest = new UpdateFlatForRentAnnouncementRequest { Id = Guid.NewGuid(), Title = "UpdateFlatForRentAnnouncementNewName", SourceUrl = "http://sourceUrl", CityId = CityOptions.City.Id, Description = "Description", Price = 1000, NumberOfRooms = Models.Enums.NumberOfRooms.One, CityDistricts = CityDistrictOptions.CityDistricts.Select(x => x.Id) }; var updateFlatForRentAnnouncementRequestString = JsonConvert.SerializeObject(updateFlatForRentAnnouncementRequest); var requestContent = new StringContent(updateFlatForRentAnnouncementRequestString, Encoding.UTF8, "application/json"); _fixture.AnonymousHttpClient.DefaultRequestHeaders.Add("api-version", "1"); var response = await _fixture.AnonymousHttpClient.PutAsync($"api/flatForRentAnnouncements/{updateFlatForRentAnnouncementRequest.Id}", requestContent); response.StatusCode.Should().BeEquivalentTo(HttpStatusCode.Unauthorized); }
public async Task <IActionResult> UpdateFlatForRentAnnouncementAsync([FromRoute] Guid id, [FromBody] UpdateFlatForRentAnnouncementRequest request) { ValidatePathIdWithRequestBodyId(id, request.Id); var updateFlatForRentAnnouncementCommand = _mapper.Map <UpdateFlatForRentAnnouncementRequest, UpdateFlatForRentAnnouncementCommand>(request); await _communicationBus.SendCommandAsync(updateFlatForRentAnnouncementCommand); var getFlatForRentAnnouncementOutputQuery = await _getFlatForRentAnnouncementQueryHandler.HandleAsync( new GetFlatForRentAnnouncementInputQuery(updateFlatForRentAnnouncementCommand .FlatForRentAnnouncementId)); var getFlatForRentAnnouncementResponse = _mapper.Map <FlatForRentAnnouncementOutputQuery, FlatForRentAnnouncementResponse>(getFlatForRentAnnouncementOutputQuery); return(Ok(getFlatForRentAnnouncementResponse)); }
public async Task UpdateFlatForRentAnnouncementAsync_Should_Return_OkObjectResult_With_FlatForRentAnnouncementResponse() { var flatForRentAnnouncementId = Guid.NewGuid(); var updateFlatForRentAnnouncementRequest = new UpdateFlatForRentAnnouncementRequest { Id = flatForRentAnnouncementId, Title = "NewTitle", SourceUrl = "http://sourceUrl", CityId = Guid.NewGuid(), Description = "Description", Price = 100, NumberOfRooms = NumberOfRooms.One, CityDistricts = new List <Guid> { Guid.NewGuid() } }; var updateFlatForRentAnnouncementCommand = new UpdateFlatForRentAnnouncementCommand( flatForRentAnnouncementId, updateFlatForRentAnnouncementRequest.Title, updateFlatForRentAnnouncementRequest.SourceUrl, updateFlatForRentAnnouncementRequest.CityId, updateFlatForRentAnnouncementRequest.Description, updateFlatForRentAnnouncementRequest.Price, FlatForRentAnnouncementProfile.ConvertToNumberOfRoomsEnumeration(updateFlatForRentAnnouncementRequest.NumberOfRooms), updateFlatForRentAnnouncementRequest.CityDistricts); var flatForRentAnnouncementOutputQuery = new FlatForRentAnnouncementOutputQuery( updateFlatForRentAnnouncementCommand.FlatForRentAnnouncementId, updateFlatForRentAnnouncementCommand.Title, updateFlatForRentAnnouncementCommand.SourceUrl, updateFlatForRentAnnouncementCommand.CityId, DateTimeOffset.UtcNow, updateFlatForRentAnnouncementCommand.Description, updateFlatForRentAnnouncementCommand.Price, updateFlatForRentAnnouncementCommand.NumberOfRooms, updateFlatForRentAnnouncementCommand.CityDistricts); var flatForRentAnnouncementResponse = new FlatForRentAnnouncementResponse( flatForRentAnnouncementOutputQuery.Id, flatForRentAnnouncementOutputQuery.Title, flatForRentAnnouncementOutputQuery.SourceUrl, flatForRentAnnouncementOutputQuery.CityId, flatForRentAnnouncementOutputQuery.Created, flatForRentAnnouncementOutputQuery.Description, flatForRentAnnouncementOutputQuery.Price, FlatForRentAnnouncementProfile.ConvertToNumberOfRoomsEnum(flatForRentAnnouncementOutputQuery.NumberOfRooms), flatForRentAnnouncementOutputQuery.CityDistricts); _mapperMock .Setup(x => x.Map <UpdateFlatForRentAnnouncementRequest, UpdateFlatForRentAnnouncementCommand>(It.IsAny <UpdateFlatForRentAnnouncementRequest>())) .Returns(updateFlatForRentAnnouncementCommand); _communicationBusMock .Setup(x => x.SendCommandAsync(It.IsAny <UpdateFlatForRentAnnouncementCommand>(), It.IsAny <CancellationToken>())) .Returns(Task.CompletedTask); _getFlatForRentAnnouncementQueryHandlerMock .Setup(x => x.HandleAsync(It.IsAny <GetFlatForRentAnnouncementInputQuery>(), It.IsAny <CancellationToken>())) .ReturnsAsync(flatForRentAnnouncementOutputQuery); _mapperMock .Setup(x => x.Map <FlatForRentAnnouncementOutputQuery, FlatForRentAnnouncementResponse>(It.IsAny <FlatForRentAnnouncementOutputQuery>())) .Returns(flatForRentAnnouncementResponse); var result = await _controller.UpdateFlatForRentAnnouncementAsync(flatForRentAnnouncementId, updateFlatForRentAnnouncementRequest); var okObjectResult = result.As <OkObjectResult>(); okObjectResult.Value.Should().BeEquivalentTo(flatForRentAnnouncementResponse); }