Example #1
0
        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);
        }
Example #2
0
        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));
        }
Example #3
0
        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);
        }
Example #4
0
        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 }));
        }