Exemple #1
0
        public void VerifyFlatForRentAnnouncementPreferences_Should_Return_Fail_VerificationResult_When_RoomNumbers_Can_Be_Changed()
        {
            var cityId        = Guid.NewGuid();
            var cityDistricts = new List <Guid> {
                Guid.NewGuid()
            };
            var flatForRentAnnouncementPreferences = new List <FlatForRentAnnouncementPreference>
            {
                FlatForRentAnnouncementPreference.Builder()
                .SetId(Guid.NewGuid())
                .SetCityId(cityId)
                .SetPriceMin(0)
                .SetPriceMax(1000)
                .SetRoomNumbersMin(1)
                .SetRoomNumbersMax(1)
                .SetCityDistricts(cityDistricts)
                .Build(),
                FlatForRentAnnouncementPreference.Builder()
                .SetId(Guid.NewGuid())
                .SetCityId(cityId)
                .SetPriceMin(0)
                .SetPriceMax(1000)
                .SetRoomNumbersMin(1)
                .SetRoomNumbersMax(2)
                .SetCityDistricts(cityDistricts)
                .Build()
            };
            var errors = new List <IError>
            {
                new Error(FlatForRentAnnouncementPreferenceErrorCode.ChangeableRoomNumbers, FlatForRentAnnouncementPreferenceErrorMessage.ChangeableRoomNumbers)
            };
            var expectedResult = VerificationResult.Fail(errors);

            var result = _service.VerifyFlatForRentAnnouncementPreferences(flatForRentAnnouncementPreferences);

            result.Should().BeEquivalentTo(expectedResult);
        }
Exemple #2
0
        private static User MapUserEntityToUser(UserEntity userEntity)
        {
            var flatForRentAnnouncementPreferenceEntities = userEntity.AnnouncementPreferences.Where(a =>
                                                                                                     a.AnnouncementPreferenceType == AnnouncementPreferenceType.FlatForRentAnnouncementPreference);
            var flatForRentAnnouncementPreferences = flatForRentAnnouncementPreferenceEntities.Select(f =>
                                                                                                      FlatForRentAnnouncementPreference.Builder()
                                                                                                      .SetId(f.Id)
                                                                                                      .SetCityId(f.CityId)
                                                                                                      .SetPriceMin(f.PriceMin)
                                                                                                      .SetPriceMax(f.PriceMax)
                                                                                                      .SetRoomNumbersMin(f.RoomNumbersMin)
                                                                                                      .SetRoomNumbersMax(f.RoomNumbersMax)
                                                                                                      .SetCityDistricts(f.AnnouncementPreferenceCityDistricts.Select(a => a.CityDistrictId))
                                                                                                      .Build()
                                                                                                      );
            var roomForRentAnnouncementPreferenceEntities = userEntity.AnnouncementPreferences.Where(a =>
                                                                                                     a.AnnouncementPreferenceType == AnnouncementPreferenceType.RoomForRentAnnouncementPreference);
            var roomForRentAnnouncementPreferences = roomForRentAnnouncementPreferenceEntities.Select(r =>
                                                                                                      RoomForRentAnnouncementPreference.Builder()
                                                                                                      .SetId(r.Id)
                                                                                                      .SetCityId(r.CityId)
                                                                                                      .SetPriceMin(r.PriceMin)
                                                                                                      .SetPriceMax(r.PriceMax)
                                                                                                      .SetRoomType(r.RoomType.ConvertToEnumeration())
                                                                                                      .SetCityDistricts(r.AnnouncementPreferenceCityDistricts.Select(a => a.CityDistrictId))
                                                                                                      .Build()
                                                                                                      );

            return(User.Builder()
                   .SetId(userEntity.Id)
                   .SetEmail(userEntity.Email)
                   .SetServiceActive(userEntity.ServiceActive)
                   .SetAnnouncementPreferenceLimit(userEntity.AnnouncementPreferenceLimit)
                   .SetAnnouncementSendingFrequency(userEntity.AnnouncementSendingFrequency.ConvertToEnumeration())
                   .SetFlatForRentAnnouncementPreferences(flatForRentAnnouncementPreferences)
                   .SetRoomForRentAnnouncementPreferences(roomForRentAnnouncementPreferences)
                   .Build());
        }
Exemple #3
0
        public async Task UpdateAsync_Should_Update_User()
        {
            var user          = _fixture.InsertUser("*****@*****.**");
            var correlationId = Guid.NewGuid();

            user.ChangeServiceActive(!user.ServiceActive, correlationId);
            user.ChangeAnnouncementPreferenceLimit(10, correlationId);
            user.ChangeAnnouncementSendingFrequency(AnnouncementSendingFrequencyEnumeration.EveryHour, correlationId);
            var flatForRentAnnouncementPreferenceToUpdate = user.FlatForRentAnnouncementPreferences.First();

            flatForRentAnnouncementPreferenceToUpdate.ChangeCityId(Guid.NewGuid());
            flatForRentAnnouncementPreferenceToUpdate.ChangePriceMin(1000);
            flatForRentAnnouncementPreferenceToUpdate.ChangePriceMax(3000);
            flatForRentAnnouncementPreferenceToUpdate.ChangeRoomNumbersMin(2);
            flatForRentAnnouncementPreferenceToUpdate.ChangeRoomNumbersMax(3);
            flatForRentAnnouncementPreferenceToUpdate.ChangeCityDistricts(new List <Guid> {
                Guid.NewGuid()
            });
            var roomForRentAnnouncementPreferenceToUpdate = user.RoomForRentAnnouncementPreferences.First();

            roomForRentAnnouncementPreferenceToUpdate.ChangeCityId(Guid.NewGuid());
            roomForRentAnnouncementPreferenceToUpdate.ChangePriceMin(1000);
            roomForRentAnnouncementPreferenceToUpdate.ChangePriceMax(3000);
            roomForRentAnnouncementPreferenceToUpdate.ChangeRoomType(RoomTypeEnumeration.Double);
            roomForRentAnnouncementPreferenceToUpdate.ChangeCityDistricts(new List <Guid> {
                Guid.NewGuid()
            });
            var newFlatForRentAnnouncementPreference = FlatForRentAnnouncementPreference.Builder()
                                                       .SetId(Guid.NewGuid())
                                                       .SetCityId(Guid.NewGuid())
                                                       .SetPriceMin(0)
                                                       .SetPriceMax(2000)
                                                       .SetRoomNumbersMin(1)
                                                       .SetRoomNumbersMax(2)
                                                       .SetCityDistricts(new List <Guid> {
                Guid.NewGuid()
            })
                                                       .Build();

            user.AddFlatForRentAnnouncementPreference(newFlatForRentAnnouncementPreference, correlationId);
            var newRoomForRentAnnouncementPreference = RoomForRentAnnouncementPreference.Builder()
                                                       .SetId(Guid.NewGuid())
                                                       .SetCityId(Guid.NewGuid())
                                                       .SetPriceMin(0)
                                                       .SetPriceMax(2000)
                                                       .SetRoomType(RoomTypeEnumeration.Single)
                                                       .SetCityDistricts(new List <Guid> {
                Guid.NewGuid()
            })
                                                       .Build();

            user.AddRoomForRentAnnouncementPreference(newRoomForRentAnnouncementPreference, correlationId);


            Func <Task> result = async() => await _repository.UpdateAsync(user);

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

            var updatedUserEntity = await _context.Users.Include(x => x.AnnouncementPreferences)
                                    .SingleAsync(x => x.Id == user.Id);

            var updatedUser = MapUserEntityToUser(updatedUserEntity);

            updatedUser.AddEvents(user.DomainEvents);
            updatedUser.Should().BeEquivalentTo(user);
        }