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); }
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()); }
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); }