Пример #1
0
        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);
        }
Пример #2
0
        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));
        }
Пример #3
0
        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);
        }
Пример #4
0
        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 }));
        }