public async Task Should_Create_FlatForRentAnnouncement_When_Requesting_By_Administrator_Client() { var createFlatForRentAnnouncementRequest = new CreateFlatForRentAnnouncementRequest { Title = "CreateFlatForRentAnnouncement", SourceUrl = "http://sourceUrl", CityId = CityOptions.City.Id, Description = "Description", Price = 1000, NumberOfRooms = NumberOfRooms.One, CityDistricts = CityDistrictOptions.CityDistricts.Select(x => x.Id) }; var createFlatForRentAnnouncementRequestString = JsonConvert.SerializeObject(createFlatForRentAnnouncementRequest); var requestContent = new StringContent(createFlatForRentAnnouncementRequestString, Encoding.UTF8, "application/json"); _fixture.AdministratorHttpClient.DefaultRequestHeaders.Add("api-version", "1"); var response = await _fixture.AdministratorHttpClient.PostAsync("api/flatForRentAnnouncements", requestContent); var responseContentString = await response.Content.ReadAsStringAsync(); var expectedResponse = await PrepareExpectedResponseAsync(_fixture.FlatForRentAnnouncementEntityCosmosStore, createFlatForRentAnnouncementRequest.Title); response.StatusCode.Should().BeEquivalentTo(HttpStatusCode.Created); responseContentString.Should().BeEquivalentTo(expectedResponse); }
public async Task <IActionResult> CreateFlatForRentAnnouncementAsync([FromBody] CreateFlatForRentAnnouncementRequest request) { var createFlatForRentAnnouncementCommand = _mapper.Map <CreateFlatForRentAnnouncementRequest, CreateFlatForRentAnnouncementCommand>(request); await _communicationBus.SendCommandAsync(createFlatForRentAnnouncementCommand); var getFlatForRentAnnouncementOutputQuery = await _getFlatForRentAnnouncementQueryHandler.HandleAsync( new GetFlatForRentAnnouncementInputQuery(createFlatForRentAnnouncementCommand .FlatForRentAnnouncementId)); var getFlatForRentAnnouncementResponse = _mapper.Map <FlatForRentAnnouncementOutputQuery, FlatForRentAnnouncementResponse>(getFlatForRentAnnouncementOutputQuery); return(CreatedAtRoute("GetFlatForRentAnnouncement", new { id = getFlatForRentAnnouncementResponse.Id }, getFlatForRentAnnouncementResponse)); }
public async Task Should_Return_Unauthorized_Status_Code_When_Requesting_By_Anonymous_Client() { var createFlatForRentAnnouncementRequest = new CreateFlatForRentAnnouncementRequest { Title = "CreateFlatForRentAnnouncement", SourceUrl = "http://sourceUrl", CityId = CityOptions.City.Id, Description = "Description", Price = 1000, NumberOfRooms = NumberOfRooms.One, CityDistricts = CityDistrictOptions.CityDistricts.Select(x => x.Id) }; var createFlatForRentAnnouncementRequestString = JsonConvert.SerializeObject(createFlatForRentAnnouncementRequest); var requestContent = new StringContent(createFlatForRentAnnouncementRequestString, Encoding.UTF8, "application/json"); _fixture.AnonymousHttpClient.DefaultRequestHeaders.Add("api-version", "1"); var response = await _fixture.AnonymousHttpClient.PostAsync("api/flatForRentAnnouncements", requestContent); response.StatusCode.Should().BeEquivalentTo(HttpStatusCode.Unauthorized); }
public async Task CreateFlatForRentAnnouncementAsync_Should_Return_CreatedAtRouteResult_With_FlatForRentAnnouncementResponse() { var createFlatForRentAnnouncementRequest = new CreateFlatForRentAnnouncementRequest { Title = "Title", SourceUrl = "http://sourceUrl", CityId = Guid.NewGuid(), Description = "Description", Price = 100, NumberOfRooms = NumberOfRooms.One, CityDistricts = new List <Guid> { Guid.NewGuid() } }; var createFlatForRentAnnouncementCommand = new CreateFlatForRentAnnouncementCommand( Guid.NewGuid(), createFlatForRentAnnouncementRequest.Title, createFlatForRentAnnouncementRequest.SourceUrl, createFlatForRentAnnouncementRequest.CityId, createFlatForRentAnnouncementRequest.Description, createFlatForRentAnnouncementRequest.Price, FlatForRentAnnouncementProfile.ConvertToNumberOfRoomsEnumeration(createFlatForRentAnnouncementRequest.NumberOfRooms), createFlatForRentAnnouncementRequest.CityDistricts); var flatForRentAnnouncementOutputQuery = new FlatForRentAnnouncementOutputQuery( createFlatForRentAnnouncementCommand.FlatForRentAnnouncementId, createFlatForRentAnnouncementCommand.Title, createFlatForRentAnnouncementCommand.SourceUrl, createFlatForRentAnnouncementCommand.CityId, DateTimeOffset.UtcNow, createFlatForRentAnnouncementCommand.Description, createFlatForRentAnnouncementCommand.Price, createFlatForRentAnnouncementCommand.NumberOfRooms, createFlatForRentAnnouncementCommand.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 <CreateFlatForRentAnnouncementRequest, CreateFlatForRentAnnouncementCommand>(It.IsAny <CreateFlatForRentAnnouncementRequest>())) .Returns(createFlatForRentAnnouncementCommand); _communicationBusMock .Setup(x => x.SendCommandAsync(It.IsAny <CreateFlatForRentAnnouncementCommand>(), 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.CreateFlatForRentAnnouncementAsync(createFlatForRentAnnouncementRequest); var createdAtRouteResult = result.As <CreatedAtRouteResult>(); createdAtRouteResult.Value.Should().BeEquivalentTo(flatForRentAnnouncementResponse); createdAtRouteResult.RouteName.Should().BeEquivalentTo("GetFlatForRentAnnouncement"); createdAtRouteResult.RouteValues.Should() .BeEquivalentTo(new Microsoft.AspNetCore.Routing.RouteValueDictionary(new { id = flatForRentAnnouncementResponse.Id })); }