Exemplo n.º 1
0
        public async Task HandleAsync_Should_Return_CollectionOutputQuery_With_RoomForRentAnnouncementOutputQuery_When_Input_Is_Null()
        {
            var roomForRentAnnouncement = RoomForRentAnnouncement.Builder()
                                          .SetId(Guid.NewGuid())
                                          .SetTitle("Title")
                                          .SetSourceUrl("http://source")
                                          .SetCityId(Guid.NewGuid())
                                          .SetCreated(DateTimeOffset.UtcNow)
                                          .SetDescription("Description")
                                          .SetPrice(1000)
                                          .SetCityDistricts(new List <Guid> {
                Guid.NewGuid()
            })
                                          .SetRoomTypes(new[] { RoomTypeEnumeration.Double })
                                          .Build();
            var roomForRentAnnouncements = new List <RoomForRentAnnouncement> {
                roomForRentAnnouncement
            };
            var roomForRentAnnouncementOutputQueries = roomForRentAnnouncements.Select(x =>
                                                                                       new RoomForRentAnnouncementOutputQuery(x.Id, x.Title, x.SourceUrl, x.CityId, x.Created, x.Description, x.Price, x.RoomTypes, x.CityDistricts)).ToList();
            var collectionOutputQuery =
                new CollectionOutputQuery <RoomForRentAnnouncementOutputQuery>(roomForRentAnnouncementOutputQueries.Count, roomForRentAnnouncementOutputQueries);

            _roomForRentAnnouncementRepositoryMock.Setup(x => x.GetAllAsync()).ReturnsAsync(roomForRentAnnouncements);
            _roomForRentAnnouncementRepositoryMock.Setup(x => x.CountAsync())
            .ReturnsAsync(roomForRentAnnouncements.Count);
            _mapperMock
            .Setup(x => x.Map <List <RoomForRentAnnouncement>, IEnumerable <RoomForRentAnnouncementOutputQuery> >(It.IsAny <List <RoomForRentAnnouncement> >()))
            .Returns(roomForRentAnnouncementOutputQueries);

            var result = await _queryHandler.HandleAsync(null);

            result.Should().BeEquivalentTo(collectionOutputQuery);
        }
Exemplo n.º 2
0
        public async Task HandleAsync_Should_Delete_RoomForRentAnnouncement()
        {
            var roomForRentAnnouncement = RoomForRentAnnouncement.Builder()
                                          .SetId(Guid.NewGuid())
                                          .SetTitle("Title")
                                          .SetSourceUrl("http://source")
                                          .SetCityId(Guid.NewGuid())
                                          .SetCreated(DateTimeOffset.UtcNow)
                                          .SetDescription("Description")
                                          .SetPrice(1000)
                                          .SetCityDistricts(new List <Guid> {
                Guid.NewGuid()
            })
                                          .SetRoomTypes(new List <RoomTypeEnumeration> {
                RoomTypeEnumeration.Double
            })
                                          .Build();
            var getRoomForRentAnnouncementResult = GetResult <RoomForRentAnnouncement> .Ok(roomForRentAnnouncement);

            var deleteRoomForRentAnnouncementCommand = new DeleteRoomForRentAnnouncementCommand(roomForRentAnnouncement.Id);

            _roomForRentAnnouncementGetterServiceMock.Setup(x => x.GetByIdAsync(It.IsAny <Guid>()))
            .ReturnsAsync(getRoomForRentAnnouncementResult);
            _roomForRentAnnouncementRepositoryMock.Setup(x => x.DeleteAsync(It.IsAny <RoomForRentAnnouncement>()))
            .Returns(Task.CompletedTask);

            Func <Task> result = async() => await _commandHandler.HandleAsync(deleteRoomForRentAnnouncementCommand);

            await result.Should().NotThrowAsync <Exception>();
        }
Exemplo n.º 3
0
        public void Should_Throw_RoomForRentAnnouncementTitleMaxLengthException_When_Title_Exceeds_Allowed_Max_Length_Value()
        {
            var    title  = CreateString(257);
            Action result = () =>
            {
                var unused = RoomForRentAnnouncement.Builder()
                             .SetId(Guid.NewGuid())
                             .SetTitle(title)
                             .SetSourceUrl("http://source")
                             .SetCityId(Guid.NewGuid())
                             .SetCreated(DateTimeOffset.UtcNow)
                             .SetDescription("Description")
                             .SetPrice(1000)
                             .SetCityDistricts(new List <Guid> {
                    Guid.NewGuid()
                })
                             .SetRoomTypes(new List <RoomTypeEnumeration> {
                    RoomTypeEnumeration.Single
                })
                             .Build();
            };

            result.Should().ThrowExactly <RoomForRentAnnouncementTitleMaxLengthException>()
            .WithMessage("Title argument max length is 256.");
        }
Exemplo n.º 4
0
        public async Task GetByIdAsync_Should_Return_GetResult_Ok()
        {
            var roomForRentAnnouncement = RoomForRentAnnouncement.Builder()
                                          .SetId(Guid.NewGuid())
                                          .SetTitle("Title")
                                          .SetSourceUrl("http://sourceUrl")
                                          .SetCityId(Guid.NewGuid())
                                          .SetCreated(DateTimeOffset.UtcNow)
                                          .SetDescription("Description")
                                          .SetCityDistricts(new List <Guid> {
                Guid.NewGuid()
            })
                                          .SetPrice(100)
                                          .SetRoomTypes(new List <RoomTypeEnumeration> {
                RoomTypeEnumeration.Double
            })
                                          .Build();
            var expectedResult = GetResult <RoomForRentAnnouncement> .Ok(roomForRentAnnouncement);

            _roomForRentAnnouncementRepositoryMock.Setup(x => x.GetByIdAsync(It.IsAny <Guid>()))
            .ReturnsAsync(roomForRentAnnouncement);

            var result = await _service.GetByIdAsync(roomForRentAnnouncement.Id);

            result.Should().BeEquivalentTo(expectedResult);
        }
Exemplo n.º 5
0
        public async Task GetAllAsync_Should_Return_RoomForRentAnnouncements()
        {
            var roomForRentAnnouncementEntities = await _cosmosStore.Query().ToListAsync();

            var roomForRentAnnouncements = roomForRentAnnouncementEntities
                                           .Select(x => RoomForRentAnnouncement.Builder()
                                                   .SetId(x.Id)
                                                   .SetTitle(x.Title)
                                                   .SetSourceUrl(x.SourceUrl)
                                                   .SetCityId(x.CityId)
                                                   .SetCreated(x.Created)
                                                   .SetDescription(x.Description)
                                                   .SetPrice(x.Price)
                                                   .SetCityDistricts(x.CityDistricts)
                                                   .SetRoomTypes(x.RoomTypes.Select(r => r.ConvertToEnumeration()))
                                                   .Build()
                                                   )
                                           .ToList();

            _mapperMock
            .Setup(x => x.Map <List <RoomForRentAnnouncementEntity>, List <RoomForRentAnnouncement> >(It.IsAny <List <RoomForRentAnnouncementEntity> >()))
            .Returns(roomForRentAnnouncements);
            var result = await _repository.GetAllAsync();

            result.Should().BeEquivalentTo(roomForRentAnnouncements);
        }
Exemplo n.º 6
0
        public void Should_Throw_RoomForRentAnnouncementRoomTypesDuplicateValuesException_When_RoomTypes_Contains_Duplicate()
        {
            var    roomType = RoomTypeEnumeration.Single;
            Action result   = () =>
            {
                var unused = RoomForRentAnnouncement.Builder()
                             .SetId(Guid.NewGuid())
                             .SetTitle("Title")
                             .SetSourceUrl("http://source")
                             .SetCityId(Guid.NewGuid())
                             .SetCreated(DateTimeOffset.UtcNow)
                             .SetDescription("Description")
                             .SetPrice(1000)
                             .SetCityDistricts(new List <Guid> {
                    Guid.NewGuid()
                })
                             .SetRoomTypes(new List <RoomTypeEnumeration> {
                    roomType, roomType
                })
                             .Build();
            };

            result.Should().ThrowExactly <RoomForRentAnnouncementRoomTypesDuplicateValuesException>()
            .WithMessage("RoomTypes argument contains duplicate values.");
        }
Exemplo n.º 7
0
        public Task UpdateAsync(RoomForRentAnnouncement roomForRentAnnouncement)
        {
            var roomForRentAnnouncementEntity =
                _mapper.Map <RoomForRentAnnouncement, RoomForRentAnnouncementEntity>(roomForRentAnnouncement);

            return(_cosmosStore.UpdateAsync(roomForRentAnnouncementEntity));
        }
Exemplo n.º 8
0
        public async Task HandleAsync_Should_Return_RoomForRentAnnouncementOutputQuery()
        {
            var roomForRentAnnouncement = RoomForRentAnnouncement.Builder()
                                          .SetId(Guid.NewGuid())
                                          .SetTitle("Title")
                                          .SetSourceUrl("http://source")
                                          .SetCityId(Guid.NewGuid())
                                          .SetCreated(DateTimeOffset.UtcNow)
                                          .SetDescription("Description")
                                          .SetPrice(1000)
                                          .SetCityDistricts(new List <Guid> {
                Guid.NewGuid()
            })
                                          .SetRoomTypes(new List <RoomTypeEnumeration> {
                RoomTypeEnumeration.Double
            })
                                          .Build();
            var getRoomForRentAnnouncementResult = GetResult <RoomForRentAnnouncement> .Ok(roomForRentAnnouncement);

            var roomForRentAnnouncementOutputQuery = new RoomForRentAnnouncementOutputQuery(roomForRentAnnouncement.Id,
                                                                                            roomForRentAnnouncement.Title, roomForRentAnnouncement.SourceUrl, roomForRentAnnouncement.CityId,
                                                                                            roomForRentAnnouncement.Created, roomForRentAnnouncement.Description, roomForRentAnnouncement.Price,
                                                                                            roomForRentAnnouncement.RoomTypes, roomForRentAnnouncement.CityDistricts);

            _roomForRentAnnouncementGetterServiceMock.Setup(x => x.GetByIdAsync(It.IsAny <Guid>()))
            .ReturnsAsync(getRoomForRentAnnouncementResult);
            _mapperMock
            .Setup(x => x.Map <RoomForRentAnnouncement, RoomForRentAnnouncementOutputQuery>(It.IsAny <RoomForRentAnnouncement>()))
            .Returns(roomForRentAnnouncementOutputQuery);

            var result = await _queryHandler.HandleAsync(new GetRoomForRentAnnouncementInputQuery(roomForRentAnnouncement.Id));

            result.Should().BeEquivalentTo(roomForRentAnnouncementOutputQuery);
        }
Exemplo n.º 9
0
 private static void UpdateDetails(RoomForRentAnnouncement roomForRentAnnouncement, UpdateRoomForRentAnnouncementCommand command)
 {
     roomForRentAnnouncement.ChangeTitle(command.Title);
     roomForRentAnnouncement.ChangeSourceUrl(command.SourceUrl);
     roomForRentAnnouncement.ChangeCityId(command.CityId);
     roomForRentAnnouncement.ChangeDescription(command.Description);
     roomForRentAnnouncement.ChangePrice(command.Price);
 }
Exemplo n.º 10
0
 public RoomForRentAnnouncementRepositoryTestFixture(DatabaseFixture fixture)
 {
     CosmosStore = fixture.RoomForRentAnnouncementCosmosStore;
     MapperMock  = new Mock <IMapper>();
     OrderByExpressionCreatorMock = new Mock <IOrderByExpressionCreator <RoomForRentAnnouncementEntity> >();
     Repository = new RoomForRentAnnouncementRepository(CosmosStore, MapperMock.Object, OrderByExpressionCreatorMock.Object);
     RoomForRentAnnouncement = InsertRoomForRentAnnouncementAsync().GetAwaiter().GetResult();
 }
Exemplo n.º 11
0
 public RoomForRentAnnouncementRepositoryTest(RoomForRentAnnouncementRepositoryTestFixture fixture)
 {
     _cosmosStore = fixture.CosmosStore;
     _mapperMock  = fixture.MapperMock;
     _orderByExpressionCreatorMock = fixture.OrderByExpressionCreatorMock;
     _repository = fixture.Repository;
     _roomForRentAnnouncement = fixture.RoomForRentAnnouncement;
     _fixture = fixture;
 }
Exemplo n.º 12
0
        private static bool CityDistrictsMatch(RoomForRentAnnouncement roomForRentAnnouncement, RoomForRentAnnouncementPreference roomForRentAnnouncementPreference)
        {
            if (roomForRentAnnouncement.CityDistricts.Any() && roomForRentAnnouncementPreference.CityDistricts.Any())
            {
                return(roomForRentAnnouncementPreference.CityDistricts.Intersect(roomForRentAnnouncementPreference.CityDistricts).Any());
            }

            return(true);
        }
Exemplo n.º 13
0
        public async Task HandleAsync_Should_Update_RoomForRentAnnouncement()
        {
            var cityDistrictToRemove    = Guid.NewGuid();
            var roomTypeToRemove        = RoomTypeEnumeration.MultiPerson;
            var roomForRentAnnouncement = RoomForRentAnnouncement.Builder()
                                          .SetId(Guid.NewGuid())
                                          .SetTitle("Title")
                                          .SetSourceUrl("http://source")
                                          .SetCityId(Guid.NewGuid())
                                          .SetCreated(DateTimeOffset.UtcNow)
                                          .SetDescription("Description")
                                          .SetPrice(1000)
                                          .SetCityDistricts(new List <Guid> {
                cityDistrictToRemove
            })
                                          .SetRoomTypes(new List <RoomTypeEnumeration> {
                roomTypeToRemove
            })
                                          .Build();
            var getRoomForRentAnnouncementResult = GetResult <RoomForRentAnnouncement> .Ok(roomForRentAnnouncement);

            var          cityVerificationResult          = VerificationResult.Ok();
            var          cityDistrictsVerificationResult = VerificationResult.Ok();
            const string newTitle          = "NewTitle";
            var          cityDistrictToAdd = Guid.NewGuid();
            var          roomTypeToAdd     = RoomTypeEnumeration.Single;
            var          updateRoomForRentAnnouncementCommand = new UpdateRoomForRentAnnouncementCommand(
                roomForRentAnnouncement.Id, newTitle, roomForRentAnnouncement.SourceUrl,
                roomForRentAnnouncement.CityId, roomForRentAnnouncement.Description, roomForRentAnnouncement.Price,
                new List <RoomTypeEnumeration> {
                roomTypeToAdd
            }, new List <Guid> {
                cityDistrictToAdd
            });

            _roomForRentAnnouncementGetterServiceMock.Setup(x => x.GetByIdAsync(It.IsAny <Guid>()))
            .ReturnsAsync(getRoomForRentAnnouncementResult);
            _cityVerificationServiceMock.Setup(x => x.VerifyCityExistsAsync(It.IsAny <Guid>()))
            .ReturnsAsync(cityVerificationResult);
            _cityDistrictVerificationServiceMock
            .Setup(x => x.VerifyCityDistrictsExistAsync(It.IsAny <Guid>(), It.IsAny <IEnumerable <Guid> >()))
            .ReturnsAsync(cityDistrictsVerificationResult);
            _roomForRentAnnouncementRepositoryMock.Setup(x => x.UpdateAsync(It.IsAny <RoomForRentAnnouncement>()))
            .Returns(Task.CompletedTask);

            Func <Task> result = async() => await _commandHandler.HandleAsync(updateRoomForRentAnnouncementCommand);

            await result.Should().NotThrowAsync <Exception>();

            roomForRentAnnouncement.Title.Should().Be(newTitle);
            roomForRentAnnouncement.CityDistricts.Should().NotContain(cityDistrictToRemove);
            roomForRentAnnouncement.CityDistricts.Should().Contain(cityDistrictToAdd);
            roomForRentAnnouncement.RoomTypes.Should().NotContain(roomTypeToRemove);
            roomForRentAnnouncement.RoomTypes.Should().Contain(roomTypeToAdd);
        }
Exemplo n.º 14
0
        private static void UpdateCityDistricts(RoomForRentAnnouncement roomForRentAnnouncement, ICollection <Guid> cityDistricts)
        {
            var cityDistrictsToRemove = roomForRentAnnouncement.CityDistricts.Except(cityDistricts).ToList();
            var cityDistrictsToAdd    = cityDistricts.Except(roomForRentAnnouncement.CityDistricts).ToList();

            foreach (var cityDistrict in cityDistrictsToRemove)
            {
                roomForRentAnnouncement.RemoveCityDistrict(cityDistrict);
            }

            foreach (var cityDistrict in cityDistrictsToAdd)
            {
                roomForRentAnnouncement.AddCityDistrict(cityDistrict);
            }
        }
Exemplo n.º 15
0
        private static void UpdateRoomTypes(RoomForRentAnnouncement roomForRentAnnouncement, ICollection <RoomTypeEnumeration> roomTypes)
        {
            var roomTypesToRemove = roomForRentAnnouncement.RoomTypes.Except(roomTypes).ToList();
            var roomTypesToAdd    = roomTypes.Except(roomForRentAnnouncement.RoomTypes).ToList();

            foreach (var roomType in roomTypesToRemove)
            {
                roomForRentAnnouncement.RemoveRoomType(roomType);
            }

            foreach (var roomType in roomTypesToAdd)
            {
                roomForRentAnnouncement.AddRoomType(roomType);
            }
        }
Exemplo n.º 16
0
 private static void ProcessRoomForRentAnnouncementPreferenceForPriceMin(RoomForRentAnnouncement roomForRentAnnouncement,
                                                                         RoomForRentAnnouncementPreference roomForRentAnnouncementPreference)
 {
     if (roomForRentAnnouncementPreference.PriceMin.HasValue && roomForRentAnnouncement.Price.HasValue)
     {
         if (PriceMinMatches(roomForRentAnnouncement.Price.Value, roomForRentAnnouncementPreference.PriceMin.Value))
         {
             ProcessRoomForRentAnnouncementPreferenceForPriceMax(roomForRentAnnouncement, roomForRentAnnouncementPreference);
         }
     }
     else
     {
         ProcessRoomForRentAnnouncementPreferenceForPriceMax(roomForRentAnnouncement, roomForRentAnnouncementPreference);
     }
 }
Exemplo n.º 17
0
        public async Task HandleAsync_Should_Create_RoomForRentAnnouncement()
        {
            var cityVerificationResult          = VerificationResult.Ok();
            var cityDistrictsVerificationResult = VerificationResult.Ok();
            var roomForRentAnnouncement         = RoomForRentAnnouncement.Builder()
                                                  .SetId(Guid.NewGuid())
                                                  .SetTitle("Title")
                                                  .SetSourceUrl("http://source")
                                                  .SetCityId(Guid.NewGuid())
                                                  .SetCreated(DateTimeOffset.UtcNow)
                                                  .SetDescription("Description")
                                                  .SetPrice(1000)
                                                  .SetCityDistricts(new List <Guid> {
                Guid.NewGuid()
            })
                                                  .SetRoomTypes(new List <RoomTypeEnumeration> {
                RoomTypeEnumeration.Single
            })
                                                  .Build();
            var createRoomForRentAnnouncementCommand = new CreateRoomForRentAnnouncementCommand(
                roomForRentAnnouncement.Id,
                roomForRentAnnouncement.Title,
                roomForRentAnnouncement.SourceUrl,
                roomForRentAnnouncement.CityId,
                roomForRentAnnouncement.Description,
                roomForRentAnnouncement.Price,
                roomForRentAnnouncement.RoomTypes,
                roomForRentAnnouncement.CityDistricts);

            _cityVerificationServiceMock.Setup(x => x.VerifyCityExistsAsync(It.IsAny <Guid>()))
            .ReturnsAsync(cityVerificationResult);
            _cityDistrictVerificationServiceMock
            .Setup(x => x.VerifyCityDistrictsExistAsync(It.IsAny <Guid>(), It.IsAny <IEnumerable <Guid> >()))
            .ReturnsAsync(cityDistrictsVerificationResult);
            _mapperMock
            .Setup(x => x.Map <CreateRoomForRentAnnouncementCommand, RoomForRentAnnouncement>(It.IsAny <CreateRoomForRentAnnouncementCommand>()))
            .Returns(roomForRentAnnouncement);
            _roomForRentAnnouncementRepositoryMock
            .Setup(x => x.AddAsync(It.IsAny <RoomForRentAnnouncement>()))
            .Returns(Task.CompletedTask);

            Func <Task> result = async() => await _commandHandler.HandleAsync(createRoomForRentAnnouncementCommand);

            await result.Should().NotThrowAsync <Exception>();
        }
Exemplo n.º 18
0
 private static void ProcessRoomForRentAnnouncementPreferenceForPriceMax(RoomForRentAnnouncement roomForRentAnnouncement,
                                                                         RoomForRentAnnouncementPreference roomForRentAnnouncementPreference)
 {
     if (roomForRentAnnouncementPreference.PriceMax.HasValue && roomForRentAnnouncement.Price.HasValue)
     {
         if (PriceMaxMatches(roomForRentAnnouncement.Price.Value, roomForRentAnnouncementPreference.PriceMax.Value) &&
             CityDistrictsMatch(roomForRentAnnouncement, roomForRentAnnouncementPreference))
         {
             roomForRentAnnouncementPreference.AnnouncementUrlsToSend.Add(roomForRentAnnouncement.SourceUrl);
         }
     }
     else
     {
         if (CityDistrictsMatch(roomForRentAnnouncement, roomForRentAnnouncementPreference))
         {
             roomForRentAnnouncementPreference.AnnouncementUrlsToSend.Add(roomForRentAnnouncement.SourceUrl);
         }
     }
 }
Exemplo n.º 19
0
        public RoomForRentAnnouncementProfile()
        {
            CreateMap <RoomForRentAnnouncement, RoomForRentAnnouncementOutputQuery>();

            CreateMap <CreateRoomForRentAnnouncementCommand, RoomForRentAnnouncement>()
            .ForMember(x => x.CityDistricts, opt => opt.Ignore())
            .ForMember(x => x.RoomTypes, opt => opt.Ignore())
            .ConstructUsing(x => RoomForRentAnnouncement.Builder()
                            .SetId(x.RoomForRentAnnouncementId)
                            .SetTitle(x.Title)
                            .SetSourceUrl(x.SourceUrl)
                            .SetCityId(x.CityId)
                            .SetCreated(DateTimeOffset.UtcNow)
                            .SetDescription(x.Description)
                            .SetPrice(x.Price)
                            .SetCityDistricts(x.CityDistricts)
                            .SetRoomTypes(x.RoomTypes)
                            .Build());
        }
Exemplo n.º 20
0
        public async Task HandleAsync_Should_Throw_ValidationException_When_Any_Of_CityDistricts_Is_Not_Found()
        {
            var roomForRentAnnouncement = RoomForRentAnnouncement.Builder()
                                          .SetId(Guid.NewGuid())
                                          .SetTitle("Title")
                                          .SetSourceUrl("http://source")
                                          .SetCityId(Guid.NewGuid())
                                          .SetCreated(DateTimeOffset.UtcNow)
                                          .SetDescription("Description")
                                          .SetPrice(1000)
                                          .SetCityDistricts(new List <Guid> {
                Guid.NewGuid()
            })
                                          .Build();
            var getRoomForRentAnnouncementResult = GetResult <RoomForRentAnnouncement> .Ok(roomForRentAnnouncement);

            var cityVerificationResult = VerificationResult.Ok();
            var errors = new Collection <IError>
            {
                new Error(CityDistrictErrorCodeEnumeration.NotFound, CityDistrictErrorMessage.NotFound)
            };
            var cityDistrictsVerificationResult      = VerificationResult.Fail(errors);
            var updateRoomForRentAnnouncementCommand = new UpdateRoomForRentAnnouncementCommand(
                roomForRentAnnouncement.Id, roomForRentAnnouncement.Title, roomForRentAnnouncement.SourceUrl,
                roomForRentAnnouncement.CityId, roomForRentAnnouncement.Description, roomForRentAnnouncement.Price,
                roomForRentAnnouncement.RoomTypes, roomForRentAnnouncement.CityDistricts);

            _roomForRentAnnouncementGetterServiceMock.Setup(x => x.GetByIdAsync(It.IsAny <Guid>()))
            .ReturnsAsync(getRoomForRentAnnouncementResult);
            _cityVerificationServiceMock.Setup(x => x.VerifyCityExistsAsync(It.IsAny <Guid>()))
            .ReturnsAsync(cityVerificationResult);
            _cityDistrictVerificationServiceMock
            .Setup(x => x.VerifyCityDistrictsExistAsync(It.IsAny <Guid>(), It.IsAny <IEnumerable <Guid> >()))
            .ReturnsAsync(cityDistrictsVerificationResult);

            Func <Task> result = async() => await _commandHandler.HandleAsync(updateRoomForRentAnnouncementCommand);

            var exceptionResult = await result.Should().ThrowExactlyAsync <ValidationException>();

            exceptionResult.And.Errors.Should().BeEquivalentTo(errors);
        }
Exemplo n.º 21
0
        public void Should_Create_RoomForRentAnnouncement()
        {
            var result = RoomForRentAnnouncement.Builder()
                         .SetId(Guid.NewGuid())
                         .SetTitle("Title")
                         .SetSourceUrl("http://source")
                         .SetCityId(Guid.NewGuid())
                         .SetCreated(DateTimeOffset.UtcNow)
                         .SetDescription("Description")
                         .SetPrice(1000)
                         .SetCityDistricts(new List <Guid> {
                Guid.NewGuid()
            })
                         .SetRoomTypes(new List <RoomTypeEnumeration> {
                RoomTypeEnumeration.Single
            })
                         .Build();


            result.Should().NotBeNull();
        }
Exemplo n.º 22
0
        public void Should_Throw_RoomForRentAnnouncementRoomTypesNullException_When_RoomTypes_Is_Null()
        {
            Action result = () =>
            {
                var unused = RoomForRentAnnouncement.Builder()
                             .SetId(Guid.NewGuid())
                             .SetTitle("Title")
                             .SetSourceUrl("http://source")
                             .SetCityId(Guid.NewGuid())
                             .SetCreated(DateTimeOffset.UtcNow)
                             .SetDescription("Description")
                             .SetPrice(1000)
                             .SetCityDistricts(new List <Guid> {
                    Guid.NewGuid()
                })
                             .SetRoomTypes(null)
                             .Build();
            };

            result.Should().ThrowExactly <RoomForRentAnnouncementRoomTypesNullException>()
            .WithMessage("RoomTypes argument is required.");
        }
Exemplo n.º 23
0
        public RoomForRentAnnouncementProfile()
        {
            CreateMap <RoomForRentAnnouncementEntity, RoomForRentAnnouncement>()
            .ForMember(x => x.CityDistricts, opt => opt.Ignore())
            .ForMember(x => x.RoomTypes, opt => opt.Ignore())
            .ConvertUsing(x => RoomForRentAnnouncement.Builder()
                          .SetId(x.Id)
                          .SetTitle(x.Title)
                          .SetSourceUrl(x.SourceUrl)
                          .SetCityId(x.CityId)
                          .SetCreated(x.Created)
                          .SetDescription(x.Description)
                          .SetPrice(x.Price)
                          .SetCityDistricts(x.CityDistricts)
                          .SetRoomTypes(x.RoomTypes.Select(r => r.ConvertToEnumeration()))
                          .Build());

            CreateMap <RoomForRentAnnouncement, RoomForRentAnnouncementEntity>()

            .ForMember(x => x.RoomTypes,
                       opt => opt.MapFrom <RoomTypeEnumerationToRoomTypeEnumValueResolver>());
        }
Exemplo n.º 24
0
        public void ChangeCityId_Should_Throw_RoomForRentAnnouncementCityIdInvalidValueException_When_CityId_Is_Empty_Guid()
        {
            var roomForRentAnnouncement = RoomForRentAnnouncement.Builder()
                                          .SetId(Guid.NewGuid())
                                          .SetTitle("Title")
                                          .SetSourceUrl("http://source")
                                          .SetCityId(Guid.NewGuid())
                                          .SetCreated(DateTimeOffset.UtcNow)
                                          .SetDescription("Description")
                                          .SetPrice(1000)
                                          .SetCityDistricts(new List <Guid> {
                Guid.NewGuid()
            })
                                          .SetRoomTypes(new List <RoomTypeEnumeration> {
                RoomTypeEnumeration.Single
            })
                                          .Build();

            Action result = () => roomForRentAnnouncement.ChangeCityId(Guid.Empty);

            result.Should().ThrowExactly <RoomForRentAnnouncementCityIdInvalidValueException>()
            .WithMessage("CityId argument is invalid.");
        }
Exemplo n.º 25
0
        public void ChangeDescription_Should_Change_Description()
        {
            var roomForRentAnnouncement = RoomForRentAnnouncement.Builder()
                                          .SetId(Guid.NewGuid())
                                          .SetTitle("Title")
                                          .SetSourceUrl("http://source")
                                          .SetCityId(Guid.NewGuid())
                                          .SetCreated(DateTimeOffset.UtcNow)
                                          .SetDescription("Description")
                                          .SetPrice(1000)
                                          .SetCityDistricts(new List <Guid> {
                Guid.NewGuid()
            })
                                          .SetRoomTypes(new List <RoomTypeEnumeration> {
                RoomTypeEnumeration.Single
            })
                                          .Build();
            const string newDescription = "New description";

            roomForRentAnnouncement.ChangeDescription(newDescription);

            roomForRentAnnouncement.Description.Should().Be(newDescription);
        }
Exemplo n.º 26
0
        public void AddCityDistrict_Should_Add_CityDistrict()
        {
            var roomForRentAnnouncement = RoomForRentAnnouncement.Builder()
                                          .SetId(Guid.NewGuid())
                                          .SetTitle("Title")
                                          .SetSourceUrl("http://source")
                                          .SetCityId(Guid.NewGuid())
                                          .SetCreated(DateTimeOffset.UtcNow)
                                          .SetDescription("Description")
                                          .SetPrice(1000)
                                          .SetCityDistricts(new List <Guid> {
                Guid.NewGuid()
            })
                                          .SetRoomTypes(new List <RoomTypeEnumeration> {
                RoomTypeEnumeration.Single
            })
                                          .Build();
            var newCityDistrict = Guid.NewGuid();

            roomForRentAnnouncement.AddCityDistrict(newCityDistrict);

            roomForRentAnnouncement.CityDistricts.Should().Contain(newCityDistrict);
        }
Exemplo n.º 27
0
        public void RemoveRoomType_Should_Remove_RoomType()
        {
            var roomForRentAnnouncement = RoomForRentAnnouncement.Builder()
                                          .SetId(Guid.NewGuid())
                                          .SetTitle("Title")
                                          .SetSourceUrl("http://source")
                                          .SetCityId(Guid.NewGuid())
                                          .SetCreated(DateTimeOffset.UtcNow)
                                          .SetDescription("Description")
                                          .SetPrice(1000)
                                          .SetCityDistricts(new List <Guid> {
                Guid.NewGuid()
            })
                                          .SetRoomTypes(new List <RoomTypeEnumeration> {
                RoomTypeEnumeration.Single
            })
                                          .Build();
            var roomType = RoomTypeEnumeration.Double;

            roomForRentAnnouncement.RemoveRoomType(roomType);

            roomForRentAnnouncement.RoomTypes.Should().NotContain(roomType);
        }
Exemplo n.º 28
0
        public void RemoveRoomType_Should_Throw_RoomForRentAnnouncementRoomTypeNullException_When_RoomType_Is_Null()
        {
            var roomForRentAnnouncement = RoomForRentAnnouncement.Builder()
                                          .SetId(Guid.NewGuid())
                                          .SetTitle("Title")
                                          .SetSourceUrl("http://source")
                                          .SetCityId(Guid.NewGuid())
                                          .SetCreated(DateTimeOffset.UtcNow)
                                          .SetDescription("Description")
                                          .SetPrice(1000)
                                          .SetCityDistricts(new List <Guid> {
                Guid.NewGuid()
            })
                                          .SetRoomTypes(new List <RoomTypeEnumeration> {
                RoomTypeEnumeration.Single
            })
                                          .Build();

            Action result = () => roomForRentAnnouncement.RemoveRoomType(null);

            result.Should().ThrowExactly <RoomForRentAnnouncementRoomTypeNullException>()
            .WithMessage("RoomType argument is required.");
        }
Exemplo n.º 29
0
        public void Should_Throw_RoomForRentAnnouncementSourceUrlNullException_When_SourceUrl_Is_Null_Or_Empty(string sourceUrl)
        {
            Action result = () =>
            {
                var unused = RoomForRentAnnouncement.Builder()
                             .SetId(Guid.NewGuid())
                             .SetTitle("Title")
                             .SetSourceUrl(sourceUrl)
                             .SetCityId(Guid.NewGuid())
                             .SetCreated(DateTimeOffset.UtcNow)
                             .SetDescription("Description")
                             .SetPrice(1000)
                             .SetCityDistricts(new List <Guid> {
                    Guid.NewGuid()
                })
                             .SetRoomTypes(new List <RoomTypeEnumeration> {
                    RoomTypeEnumeration.Single
                })
                             .Build();
            };

            result.Should().ThrowExactly <RoomForRentAnnouncementSourceUrlNullException>()
            .WithMessage("SourceUrl argument is required.");
        }
Exemplo n.º 30
0
        public void Should_Throw_RoomForRentAnnouncementCityDistrictsInvalidValueException_When_CityDistricts_Contains_New_Guid()
        {
            Action result = () =>
            {
                var unused = RoomForRentAnnouncement.Builder()
                             .SetId(Guid.NewGuid())
                             .SetTitle("Title")
                             .SetSourceUrl("http://source")
                             .SetCityId(Guid.NewGuid())
                             .SetCreated(DateTimeOffset.UtcNow)
                             .SetDescription("Description")
                             .SetPrice(1000)
                             .SetCityDistricts(new List <Guid> {
                    new Guid()
                })
                             .SetRoomTypes(new List <RoomTypeEnumeration> {
                    RoomTypeEnumeration.Single
                })
                             .Build();
            };

            result.Should().ThrowExactly <RoomForRentAnnouncementCityDistrictsInvalidValueException>()
            .WithMessage("CityDistricts argument is invalid.");
        }