public async Task Should_Create_RoomForRentAnnouncement_When_Requesting_By_Administrator_Client() { var createRoomForRentAnnouncementRequest = new CreateRoomForRentAnnouncementRequest { Title = "CreateRoomForRentAnnouncement", SourceUrl = "http://sourceUrl", CityId = CityOptions.City.Id, Description = "Description", Price = 1000, RoomTypes = new List <RoomType> { RoomType.Single }, CityDistricts = CityDistrictOptions.CityDistricts.Select(x => x.Id) }; var createRoomForRentAnnouncementRequestString = JsonConvert.SerializeObject(createRoomForRentAnnouncementRequest); var requestContent = new StringContent(createRoomForRentAnnouncementRequestString, Encoding.UTF8, "application/json"); _fixture.AdministratorHttpClient.DefaultRequestHeaders.Add("api-version", "1"); var response = await _fixture.AdministratorHttpClient.PostAsync("api/roomForRentAnnouncements", requestContent); var responseContentString = await response.Content.ReadAsStringAsync(); var expectedResponse = await PrepareExpectedResponseAsync(_fixture.RoomForRentAnnouncementEntityCosmosStore, createRoomForRentAnnouncementRequest.Title); response.StatusCode.Should().BeEquivalentTo(HttpStatusCode.Created); responseContentString.Should().BeEquivalentTo(expectedResponse); }
public async Task <IActionResult> CreateRoomForRentAnnouncementAsync([FromBody] CreateRoomForRentAnnouncementRequest request) { var createRoomForRentAnnouncementCommand = _mapper.Map <CreateRoomForRentAnnouncementRequest, CreateRoomForRentAnnouncementCommand>(request); await _communicationBus.SendCommandAsync(createRoomForRentAnnouncementCommand); var getRoomForRentAnnouncementOutputQuery = await _getRoomForRentAnnouncementQueryHandler.HandleAsync( new GetRoomForRentAnnouncementInputQuery(createRoomForRentAnnouncementCommand .RoomForRentAnnouncementId)); var getRoomForRentAnnouncementResponse = _mapper.Map <RoomForRentAnnouncementOutputQuery, RoomForRentAnnouncementResponse>(getRoomForRentAnnouncementOutputQuery); return(CreatedAtRoute("GetRoomForRentAnnouncement", new { id = getRoomForRentAnnouncementResponse.Id }, getRoomForRentAnnouncementResponse)); }
public async Task Should_Return_Unauthorized_Status_Code_When_Requesting_By_Anonymous_Client() { var createRoomForRentAnnouncementRequest = new CreateRoomForRentAnnouncementRequest { Title = "CreateRoomForRentAnnouncement", SourceUrl = "http://sourceUrl", CityId = CityOptions.City.Id, Description = "Description", Price = 1000, RoomTypes = new List <RoomType> { RoomType.Single }, CityDistricts = CityDistrictOptions.CityDistricts.Select(x => x.Id) }; var createRoomForRentAnnouncementRequestString = JsonConvert.SerializeObject(createRoomForRentAnnouncementRequest); var requestContent = new StringContent(createRoomForRentAnnouncementRequestString, Encoding.UTF8, "application/json"); _fixture.AnonymousHttpClient.DefaultRequestHeaders.Add("api-version", "1"); var response = await _fixture.AnonymousHttpClient.PostAsync("api/roomForRentAnnouncements", requestContent); response.StatusCode.Should().BeEquivalentTo(HttpStatusCode.Unauthorized); }
public async Task CreateRoomForRentAnnouncementAsync_Should_Return_CreatedAtRouteResult_With_RoomForRentAnnouncementResponse() { var createRoomForRentAnnouncementRequest = new CreateRoomForRentAnnouncementRequest { Title = "Title", SourceUrl = "http://sourceUrl", CityId = Guid.NewGuid(), Description = "Description", Price = 100, RoomTypes = new List <RoomType> { RoomType.Double }, CityDistricts = new List <Guid> { Guid.NewGuid() } }; var createRoomForRentAnnouncementCommand = new CreateRoomForRentAnnouncementCommand( Guid.NewGuid(), createRoomForRentAnnouncementRequest.Title, createRoomForRentAnnouncementRequest.SourceUrl, createRoomForRentAnnouncementRequest.CityId, createRoomForRentAnnouncementRequest.Description, createRoomForRentAnnouncementRequest.Price, createRoomForRentAnnouncementRequest.RoomTypes.Select(RoomForRentAnnouncementProfile.ConvertToRoomTypeEnumeration), createRoomForRentAnnouncementRequest.CityDistricts); var roomForRentAnnouncementOutputQuery = new RoomForRentAnnouncementOutputQuery( createRoomForRentAnnouncementCommand.RoomForRentAnnouncementId, createRoomForRentAnnouncementCommand.Title, createRoomForRentAnnouncementCommand.SourceUrl, createRoomForRentAnnouncementCommand.CityId, DateTimeOffset.UtcNow, createRoomForRentAnnouncementCommand.Description, createRoomForRentAnnouncementCommand.Price, createRoomForRentAnnouncementCommand.RoomTypes, createRoomForRentAnnouncementCommand.CityDistricts); var roomForRentAnnouncementResponse = new RoomForRentAnnouncementResponse( roomForRentAnnouncementOutputQuery.Id, roomForRentAnnouncementOutputQuery.Title, roomForRentAnnouncementOutputQuery.SourceUrl, roomForRentAnnouncementOutputQuery.CityId, roomForRentAnnouncementOutputQuery.Created, roomForRentAnnouncementOutputQuery.Description, roomForRentAnnouncementOutputQuery.Price, roomForRentAnnouncementOutputQuery.RoomTypes.Select(RoomForRentAnnouncementProfile.ConvertToRoomTypeEnum), roomForRentAnnouncementOutputQuery.CityDistricts); _mapperMock .Setup(x => x.Map <CreateRoomForRentAnnouncementRequest, CreateRoomForRentAnnouncementCommand>(It.IsAny <CreateRoomForRentAnnouncementRequest>())) .Returns(createRoomForRentAnnouncementCommand); _communicationBusMock .Setup(x => x.SendCommandAsync(It.IsAny <CreateRoomForRentAnnouncementCommand>(), It.IsAny <CancellationToken>())) .Returns(Task.CompletedTask); _getRoomForRentAnnouncementQueryHandlerMock .Setup(x => x.HandleAsync(It.IsAny <GetRoomForRentAnnouncementInputQuery>(), It.IsAny <CancellationToken>())) .ReturnsAsync(roomForRentAnnouncementOutputQuery); _mapperMock .Setup(x => x.Map <RoomForRentAnnouncementOutputQuery, RoomForRentAnnouncementResponse>(It.IsAny <RoomForRentAnnouncementOutputQuery>())) .Returns(roomForRentAnnouncementResponse); var result = await _controller.CreateRoomForRentAnnouncementAsync(createRoomForRentAnnouncementRequest); var createdAtRouteResult = result.As <CreatedAtRouteResult>(); createdAtRouteResult.Value.Should().BeEquivalentTo(roomForRentAnnouncementResponse); createdAtRouteResult.RouteName.Should().BeEquivalentTo("GetRoomForRentAnnouncement"); createdAtRouteResult.RouteValues.Should() .BeEquivalentTo(new Microsoft.AspNetCore.Routing.RouteValueDictionary(new { id = roomForRentAnnouncementResponse.Id })); }