private static void ProcessFlatForRentAnnouncementPreference(FlatForRentAnnouncementPreference flatForRentAnnouncementPreference, FlatForRentAnnouncementsIntegrationEvent integrationEvent, HashSet <Guid> processedAnnouncementPreferenceIds) { lock (processedAnnouncementPreferenceIds) { if (!processedAnnouncementPreferenceIds.Add(flatForRentAnnouncementPreference.Id)) { return; } } foreach (var flatForRentAnnouncement in integrationEvent.FlatForRentAnnouncements) { var numberOfRooms = flatForRentAnnouncement.NumberOfRooms.ConvertToInt(); if (flatForRentAnnouncementPreference.RoomNumbersMin.HasValue && numberOfRooms.HasValue) { if (NumberOfRoomsMinMatches(numberOfRooms.Value, flatForRentAnnouncementPreference.RoomNumbersMin.Value)) { ProcessFlatForRentAnnouncementPreferenceForNumberOfRoomsMax(flatForRentAnnouncement, flatForRentAnnouncementPreference, numberOfRooms); } } else { ProcessFlatForRentAnnouncementPreferenceForNumberOfRoomsMax(flatForRentAnnouncement, flatForRentAnnouncementPreference, numberOfRooms); } } }
public async Task GetByIdAsync_Should_Return_GetResult_Ok_With_User() { var id = Guid.NewGuid(); var flatForRentAnnouncementPreferences = new List <FlatForRentAnnouncementPreference> { FlatForRentAnnouncementPreference.Builder() .SetId(Guid.NewGuid()) .SetCityId(Guid.NewGuid()) .SetPriceMin(0) .SetPriceMax(3000) .SetRoomNumbersMin(1) .SetRoomNumbersMax(3) .SetCityDistricts(new List <Guid> { Guid.NewGuid() }) .Build() }; var user = User.Builder() .SetId(id) .SetEmail("*****@*****.**") .SetServiceActive(DefaultUserSettings.ServiceActive) .SetAnnouncementPreferenceLimit(DefaultUserSettings.AnnouncementPreferenceLimit) .SetAnnouncementSendingFrequency(DefaultUserSettings.AnnouncementSendingFrequency) .SetFlatForRentAnnouncementPreferences(flatForRentAnnouncementPreferences) .Build(); var expectedResult = GetResult <User> .Ok(user); _userRepositoryMock.Setup(x => x.GetByIdAsync(It.IsAny <Guid>())) .ReturnsAsync(user); var result = await _service.GetByIdAsync(id); result.Should().BeEquivalentTo(expectedResult); }
public void GetByByUserAndId_Should_Return_GetResult_Ok_With_FlatForRentAnnouncementPreference() { var id = Guid.NewGuid(); var flatForRentAnnouncementPreference = FlatForRentAnnouncementPreference.Builder() .SetId(id) .SetCityId(Guid.NewGuid()) .SetPriceMin(0) .SetPriceMax(3000) .SetRoomNumbersMin(1) .SetRoomNumbersMax(3) .SetCityDistricts(new List <Guid> { Guid.NewGuid() }) .Build(); var flatForRentAnnouncementPreferences = new List <FlatForRentAnnouncementPreference> { flatForRentAnnouncementPreference }; var user = User.Builder() .SetId(Guid.NewGuid()) .SetEmail("*****@*****.**") .SetServiceActive(DefaultUserSettings.ServiceActive) .SetAnnouncementPreferenceLimit(DefaultUserSettings.AnnouncementPreferenceLimit) .SetAnnouncementSendingFrequency(DefaultUserSettings.AnnouncementSendingFrequency) .SetFlatForRentAnnouncementPreferences(flatForRentAnnouncementPreferences) .Build(); var expectedResult = GetResult <FlatForRentAnnouncementPreference> .Ok(flatForRentAnnouncementPreference); var result = _service.GetByByUserAndId(user, id); result.Should().BeEquivalentTo(expectedResult); }
public void Should_Create_FlatForRentAnnouncementPreference_With_Null_Values() { var flatForRentAnnouncementPreferenceId = Guid.NewGuid(); var cityId = Guid.NewGuid(); var cityDistricts = new List <Guid> { Guid.NewGuid() }; var flatForRentAnnouncementPreference = FlatForRentAnnouncementPreference.Builder() .SetId(flatForRentAnnouncementPreferenceId) .SetCityId(cityId) .SetPriceMin(null) .SetPriceMax(null) .SetRoomNumbersMin(null) .SetRoomNumbersMax(null) .SetCityDistricts(cityDistricts) .Build(); flatForRentAnnouncementPreference.Id.Should().Be(flatForRentAnnouncementPreferenceId); flatForRentAnnouncementPreference.CityId.Should().Be(cityId); flatForRentAnnouncementPreference.PriceMin.Should().BeNull(); flatForRentAnnouncementPreference.PriceMax.Should().BeNull(); flatForRentAnnouncementPreference.RoomNumbersMin.Should().BeNull(); flatForRentAnnouncementPreference.RoomNumbersMax.Should().BeNull(); flatForRentAnnouncementPreference.CityDistricts.Should().BeEquivalentTo(cityDistricts); }
public void Should_Create_FlatForRentAnnouncementPreference() { var flatForRentAnnouncementPreferenceId = Guid.NewGuid(); var cityId = Guid.NewGuid(); var cityDistricts = new List <Guid> { Guid.NewGuid() }; const decimal priceMin = 0; const decimal priceMax = 2000; const int roomNumberMin = 1; const int roomNumberMax = 2; var flatForRentAnnouncementPreference = FlatForRentAnnouncementPreference.Builder() .SetId(flatForRentAnnouncementPreferenceId) .SetCityId(cityId) .SetPriceMin(priceMin) .SetPriceMax(priceMax) .SetRoomNumbersMin(roomNumberMin) .SetRoomNumbersMax(roomNumberMax) .SetCityDistricts(cityDistricts) .Build(); flatForRentAnnouncementPreference.Id.Should().Be(flatForRentAnnouncementPreferenceId); flatForRentAnnouncementPreference.CityId.Should().Be(cityId); flatForRentAnnouncementPreference.PriceMin.Should().Be(priceMin); flatForRentAnnouncementPreference.PriceMax.Should().Be(priceMax); flatForRentAnnouncementPreference.RoomNumbersMin.Should().Be(roomNumberMin); flatForRentAnnouncementPreference.RoomNumbersMax.Should().Be(roomNumberMax); flatForRentAnnouncementPreference.CityDistricts.Should().BeEquivalentTo(cityDistricts); }
public void AddFlatForRentAnnouncementPreference(FlatForRentAnnouncementPreference flatForRentAnnouncementPreference, Guid correlationId) { _flatForRentAnnouncementPreferences.Add(flatForRentAnnouncementPreference); _flatForRentAnnouncementPreferences = new UserFlatForRentAnnouncementPreferences(_flatForRentAnnouncementPreferences, _roomForRentAnnouncementPreferences.Count, AnnouncementPreferenceLimit); AddEvent(new UserFlatForRentAnnouncementPreferenceAddedDomainEvent(Id, correlationId, flatForRentAnnouncementPreference)); }
private async Task UpdateCityAndCityDistrictsAsync(FlatForRentAnnouncementPreference flatForRentAnnouncementPreference, Guid cityId, ICollection <Guid> cityDistricts) { if (flatForRentAnnouncementPreference.CityId != cityId) { var cityAndCityDistrictsVerificationResult = await _cityVerificationService.VerifyCityAndCityDistrictsAsync(cityId, cityDistricts); if (!cityAndCityDistrictsVerificationResult.Success) { throw new ValidationException(cityAndCityDistrictsVerificationResult.Errors); } flatForRentAnnouncementPreference.ChangeCityId(cityId); flatForRentAnnouncementPreference.ChangeCityDistricts(cityDistricts); } else { var sameCityDistricts = flatForRentAnnouncementPreference.CityDistricts.All(cityDistricts.Contains) && flatForRentAnnouncementPreference.CityDistricts.Count == cityDistricts.Count; if (!sameCityDistricts) { var cityAndCityDistrictsVerificationResult = await _cityVerificationService.VerifyCityAndCityDistrictsAsync(cityId, cityDistricts); if (!cityAndCityDistrictsVerificationResult.Success) { throw new ValidationException(cityAndCityDistrictsVerificationResult.Errors); } flatForRentAnnouncementPreference.ChangeCityDistricts(cityDistricts); } } }
private static void UpdateFlatForRentAnnouncementPreferenceEntity(AnnouncementPreferenceEntity announcementPreferenceEntity, FlatForRentAnnouncementPreference flatForRentAnnouncementPreference) { announcementPreferenceEntity.CityId = flatForRentAnnouncementPreference.CityId; announcementPreferenceEntity.PriceMin = flatForRentAnnouncementPreference.PriceMin; announcementPreferenceEntity.PriceMax = flatForRentAnnouncementPreference.PriceMax; announcementPreferenceEntity.RoomNumbersMin = flatForRentAnnouncementPreference.RoomNumbersMin; announcementPreferenceEntity.RoomNumbersMax = flatForRentAnnouncementPreference.RoomNumbersMax; }
public async Task HandleAsync_Should_Throw_ValidationException_When_Flat_For_Rent_Announcement_Preferences_Verification_Fails() { var command = new CreateFlatForRentAnnouncementPreferenceCommand(Guid.NewGuid(), Guid.NewGuid(), 1, 1000, 1, 1, new List <Guid> { Guid.NewGuid() }); var user = User.Builder() .SetId(command.UserId) .SetEmail("*****@*****.**") .SetServiceActive(DefaultUserSettings.ServiceActive) .SetAnnouncementPreferenceLimit(DefaultUserSettings.AnnouncementPreferenceLimit) .SetAnnouncementSendingFrequency(DefaultUserSettings.AnnouncementSendingFrequency) .Build(); var getUserResult = GetResult <User> .Ok(user); var cityAndCityDistrictsVerificationResult = VerificationResult.Ok(); var announcementPreferenceLimitIsNotExceededVerificationResult = VerificationResult.Ok(); var flatForRentAnnouncementPreference = FlatForRentAnnouncementPreference.Builder() .SetId(command.FlatForRentAnnouncementPreferenceId) .SetCityId(command.CityId) .SetPriceMin(command.PriceMin) .SetPriceMax(command.PriceMax) .SetRoomNumbersMin(command.RoomNumbersMin) .SetRoomNumbersMax(command.RoomNumbersMax) .SetCityDistricts(command.CityDistricts) .Build(); var errors = new Collection <IError> { new Error(FlatForRentAnnouncementPreferenceErrorCode.ExpansibleCityDistricts, FlatForRentAnnouncementPreferenceErrorMessage.ExpansibleCityDistricts) }; var flatForRentAnnouncementPreferencesVerificationResult = VerificationResult.Fail(errors); _userGetterServiceMock.Setup(x => x.GetByIdAsync(It.IsAny <Guid>())).ReturnsAsync(getUserResult); _cityVerificationServiceMock .Setup(x => x.VerifyCityAndCityDistrictsAsync(It.IsAny <Guid>(), It.IsAny <IEnumerable <Guid> >())) .ReturnsAsync(cityAndCityDistrictsVerificationResult); _userVerificationServiceMock .Setup(x => x.VerifyAnnouncementPreferenceLimitIsNotExceeded(It.IsAny <int>(), It.IsAny <int>())) .Returns(announcementPreferenceLimitIsNotExceededVerificationResult); _mapperMock.Setup(x => x.Map <CreateFlatForRentAnnouncementPreferenceCommand, FlatForRentAnnouncementPreference>( It.IsAny <CreateFlatForRentAnnouncementPreferenceCommand>())) .Returns(flatForRentAnnouncementPreference); _flatForRentAnnouncementPreferenceVerificationServiceMock .Setup(x => x.VerifyFlatForRentAnnouncementPreferences( It.IsAny <IEnumerable <FlatForRentAnnouncementPreference> >())) .Returns(flatForRentAnnouncementPreferencesVerificationResult); Func <Task> result = async() => await _commandHandler.HandleAsync(command); var exceptionResult = await result.Should().ThrowExactlyAsync <ValidationException>(); exceptionResult.And.Errors.Should().BeEquivalentTo(errors); }
public async Task HandleAsync_Should_Create_Flat_For_Rent_Announcement_Preference() { var command = new CreateFlatForRentAnnouncementPreferenceCommand(Guid.NewGuid(), Guid.NewGuid(), 1, 1000, 1, 1, new List <Guid> { Guid.NewGuid() }); var user = User.Builder() .SetId(command.UserId) .SetEmail("*****@*****.**") .SetServiceActive(DefaultUserSettings.ServiceActive) .SetAnnouncementPreferenceLimit(DefaultUserSettings.AnnouncementPreferenceLimit) .SetAnnouncementSendingFrequency(DefaultUserSettings.AnnouncementSendingFrequency) .Build(); var getUserResult = GetResult <User> .Ok(user); var cityAndCityDistrictsVerificationResult = VerificationResult.Ok(); var announcementPreferenceLimitIsNotExceededVerificationResult = VerificationResult.Ok(); var flatForRentAnnouncementPreference = FlatForRentAnnouncementPreference.Builder() .SetId(command.FlatForRentAnnouncementPreferenceId) .SetCityId(command.CityId) .SetPriceMin(command.PriceMin) .SetPriceMax(command.PriceMax) .SetRoomNumbersMin(command.RoomNumbersMin) .SetRoomNumbersMax(command.RoomNumbersMax) .SetCityDistricts(command.CityDistricts) .Build(); var flatForRentAnnouncementPreferencesVerificationResult = VerificationResult.Ok(); _userGetterServiceMock.Setup(x => x.GetByIdAsync(It.IsAny <Guid>())).ReturnsAsync(getUserResult); _cityVerificationServiceMock .Setup(x => x.VerifyCityAndCityDistrictsAsync(It.IsAny <Guid>(), It.IsAny <IEnumerable <Guid> >())) .ReturnsAsync(cityAndCityDistrictsVerificationResult); _userVerificationServiceMock .Setup(x => x.VerifyAnnouncementPreferenceLimitIsNotExceeded(It.IsAny <int>(), It.IsAny <int>())) .Returns(announcementPreferenceLimitIsNotExceededVerificationResult); _mapperMock.Setup(x => x.Map <CreateFlatForRentAnnouncementPreferenceCommand, FlatForRentAnnouncementPreference>( It.IsAny <CreateFlatForRentAnnouncementPreferenceCommand>())) .Returns(flatForRentAnnouncementPreference); _flatForRentAnnouncementPreferenceVerificationServiceMock .Setup(x => x.VerifyFlatForRentAnnouncementPreferences( It.IsAny <IEnumerable <FlatForRentAnnouncementPreference> >())) .Returns(flatForRentAnnouncementPreferencesVerificationResult); _communicationBusMock .Setup(x => x.DispatchDomainEventsAsync(It.IsAny <User>(), It.IsAny <CancellationToken>())) .Returns(Task.CompletedTask); _userRepositoryMock.Setup(x => x.UpdateAsync(It.IsAny <User>())).Returns(Task.CompletedTask); _integrationEventBusMock.Setup(x => x.PublishIntegrationEventAsync(It.IsAny <IIntegrationEvent>())) .Returns(Task.CompletedTask); Func <Task> result = async() => await _commandHandler.HandleAsync(command); await result.Should().NotThrowAsync <Exception>(); }
public FlatForRentAnnouncementPreferenceProfile() { CreateMap <AnnouncementPreferenceEntity, FlatForRentAnnouncementPreference>() .ConvertUsing(x => FlatForRentAnnouncementPreference.Builder() .SetId(x.Id) .SetCityId(x.CityId) .SetPriceMin(x.PriceMin) .SetPriceMax(x.PriceMax) .SetRoomNumbersMin(x.RoomNumbersMin) .SetRoomNumbersMax(x.RoomNumbersMax) .SetCityDistricts(x.AnnouncementPreferenceCityDistricts.Select(acd => acd.CityDistrictId)) .Build()); }
public async Task HandleAsync_Should_Throw_ValidationException_When_City_And_City_Districts_Verification_Fails_For_The_Same_CityId() { var command = new UpdateFlatForRentAnnouncementPreferenceCommand(Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid(), 1, 3000, 1, 3, new List <Guid> { Guid.NewGuid() }); var user = User.Builder() .SetId(command.UserId) .SetEmail("*****@*****.**") .SetServiceActive(DefaultUserSettings.ServiceActive) .SetAnnouncementPreferenceLimit(DefaultUserSettings.AnnouncementPreferenceLimit) .SetAnnouncementSendingFrequency(DefaultUserSettings.AnnouncementSendingFrequency) .Build(); var getUserResult = GetResult <User> .Ok(user); var flatForRentAnnouncementPreference = FlatForRentAnnouncementPreference.Builder() .SetId(command.FlatForRentAnnouncementPreferenceId) .SetCityId(command.CityId) .SetPriceMin(1) .SetPriceMax(1000) .SetRoomNumbersMin(1) .SetRoomNumbersMax(1) .SetCityDistricts(new List <Guid> { Guid.NewGuid() }) .Build(); var getFlatForRentAnnouncementPreferenceResult = GetResult <FlatForRentAnnouncementPreference> .Ok(flatForRentAnnouncementPreference); var errors = new Collection <IError> { new Error(CityErrorCodeEnumeration.IncorrectCityDistricts, CityErrorMessage.IncorrectCityDistricts) }; var cityAndCityDistrictsVerificationResult = VerificationResult.Fail(errors); _userGetterServiceMock.Setup(x => x.GetByIdAsync(It.IsAny <Guid>())).ReturnsAsync(getUserResult); _flatForRentAnnouncementPreferenceGetterServiceMock .Setup(x => x.GetByByUserAndId(It.IsAny <User>(), It.IsAny <Guid>())) .Returns(getFlatForRentAnnouncementPreferenceResult); _cityVerificationServiceMock .Setup(x => x.VerifyCityAndCityDistrictsAsync(It.IsAny <Guid>(), It.IsAny <IEnumerable <Guid> >())) .ReturnsAsync(cityAndCityDistrictsVerificationResult); Func <Task> result = async() => await _commandHandler.HandleAsync(command); var exceptionResult = await result.Should().ThrowExactlyAsync <ValidationException>(); exceptionResult.And.Errors.Should().BeEquivalentTo(errors); }
private static void ProcessFlatForRentAnnouncementPreferenceForPriceMin(FlatForRentAnnouncement flatForRentAnnouncement, FlatForRentAnnouncementPreference flatForRentAnnouncementPreference) { if (flatForRentAnnouncementPreference.PriceMin.HasValue && flatForRentAnnouncement.Price.HasValue) { if (PriceMinMatches(flatForRentAnnouncement.Price.Value, flatForRentAnnouncementPreference.PriceMin.Value)) { ProcessFlatForRentAnnouncementPreferenceForPriceMax(flatForRentAnnouncement, flatForRentAnnouncementPreference); } } else { ProcessFlatForRentAnnouncementPreferenceForPriceMax(flatForRentAnnouncement, flatForRentAnnouncementPreference); } }
public FlatForRentAnnouncementPreferenceProfile() { CreateMap <FlatForRentAnnouncementPreference, FlatForRentAnnouncementPreferenceOutputQuery>(); CreateMap <CreateFlatForRentAnnouncementPreferenceCommand, FlatForRentAnnouncementPreference>() .ForMember(x => x.CityDistricts, opt => opt.Ignore()) .ConstructUsing(x => FlatForRentAnnouncementPreference.Builder() .SetId(x.FlatForRentAnnouncementPreferenceId) .SetCityId(x.CityId) .SetPriceMin(x.PriceMin) .SetPriceMax(x.PriceMax) .SetRoomNumbersMin(x.RoomNumbersMin) .SetRoomNumbersMax(x.RoomNumbersMax) .SetCityDistricts(x.CityDistricts) .Build()); }
public void Should_Throw_FlatForRentAnnouncementPreferenceCityDistrictsNullException_When_CityDistricts_Is_Null() { Action result = () => { var unused = FlatForRentAnnouncementPreference.Builder() .SetId(Guid.NewGuid()) .SetCityId(Guid.NewGuid()) .SetPriceMin(0) .SetPriceMax(1000) .SetRoomNumbersMin(1) .SetRoomNumbersMax(1) .SetCityDistricts(null) .Build(); }; result.Should().ThrowExactly <FlatForRentAnnouncementPreferenceCityDistrictsNullException>() .WithMessage("CityDistricts argument is required."); }
public void ChangeRoomNumbersMax_Should_Change_RoomNumbersMax() { var flatForRentAnnouncementPreference = FlatForRentAnnouncementPreference.Builder() .SetId(Guid.NewGuid()) .SetCityId(Guid.NewGuid()) .SetPriceMin(0) .SetPriceMax(2000) .SetRoomNumbersMin(1) .SetRoomNumbersMax(1) .SetCityDistricts(new List <Guid> { Guid.NewGuid() }) .Build(); flatForRentAnnouncementPreference.ChangeRoomNumbersMax(null); flatForRentAnnouncementPreference.RoomNumbersMax.Should().BeNull(); }
public void VerifyFlatForRentAnnouncementPreferences_Should_Return_Success_VerificationResult() { 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(2000) .SetRoomNumbersMin(1) .SetRoomNumbersMax(2) .SetCityDistricts(cityDistricts) .Build(), FlatForRentAnnouncementPreference.Builder() .SetId(Guid.NewGuid()) .SetCityId(Guid.NewGuid()) .SetPriceMin(0) .SetPriceMax(2000) .SetRoomNumbersMin(1) .SetRoomNumbersMax(2) .SetCityDistricts(new List <Guid> { Guid.NewGuid() }) .Build() }; var expectedResult = VerificationResult.Ok(); var result = _service.VerifyFlatForRentAnnouncementPreferences(flatForRentAnnouncementPreferences); result.Should().BeEquivalentTo(expectedResult); }
public void ChangeRoomNumbersMax_Should_Throw_FlatForRentAnnouncementPreferenceRoomNumbersMaxLowerThanRoomNumbersMinException_When_RoomNumbersMax_Is_Lower_Than_RoomNumbersMin() { var flatForRentAnnouncementPreference = FlatForRentAnnouncementPreference.Builder() .SetId(Guid.NewGuid()) .SetCityId(Guid.NewGuid()) .SetPriceMin(0) .SetPriceMax(2000) .SetRoomNumbersMin(2) .SetRoomNumbersMax(2) .SetCityDistricts(new List <Guid> { Guid.NewGuid() }) .Build(); Action result = () => flatForRentAnnouncementPreference.ChangeRoomNumbersMax(1); result.Should().ThrowExactly <FlatForRentAnnouncementPreferenceRoomNumbersMaxLowerThanRoomNumbersMinException>() .WithMessage("RoomNumbersMax argument cannot be lower than RoomNumbersMin."); }
public void ChangeRoomNumbersMax_Should_Throw_FlatForRentAnnouncementPreferenceRoomNumbersMaxMinValueException_When_RoomNumbersMax_Is_Negative_Value() { var flatForRentAnnouncementPreference = FlatForRentAnnouncementPreference.Builder() .SetId(Guid.NewGuid()) .SetCityId(Guid.NewGuid()) .SetPriceMin(0) .SetPriceMax(2000) .SetRoomNumbersMin(1) .SetRoomNumbersMax(1) .SetCityDistricts(new List <Guid> { Guid.NewGuid() }) .Build(); Action result = () => flatForRentAnnouncementPreference.ChangeRoomNumbersMax(0); result.Should().ThrowExactly <FlatForRentAnnouncementPreferenceRoomNumbersMaxMinValueException>() .WithMessage("RoomNumbersMax argument min value is 1."); }
public void ChangeCityId_Should_Throw_FlatForRentAnnouncementPreferenceCityIdNullException_When_CityId_Is_New_Guid() { var flatForRentAnnouncementPreference = FlatForRentAnnouncementPreference.Builder() .SetId(Guid.NewGuid()) .SetCityId(Guid.NewGuid()) .SetPriceMin(0) .SetPriceMax(2000) .SetRoomNumbersMin(1) .SetRoomNumbersMax(1) .SetCityDistricts(new List <Guid> { Guid.NewGuid() }) .Build(); Action result = () => flatForRentAnnouncementPreference.ChangeCityId(new Guid()); result.Should().ThrowExactly <FlatForRentAnnouncementPreferenceCityIdNullException>() .WithMessage("CityId argument is required."); }
public void ChangeCityId_Should_Change_CityId() { var flatForRentAnnouncementPreference = FlatForRentAnnouncementPreference.Builder() .SetId(Guid.NewGuid()) .SetCityId(Guid.NewGuid()) .SetPriceMin(0) .SetPriceMax(2000) .SetRoomNumbersMin(1) .SetRoomNumbersMax(1) .SetCityDistricts(new List <Guid> { Guid.NewGuid() }) .Build(); var newCityId = Guid.NewGuid(); flatForRentAnnouncementPreference.ChangeCityId(newCityId); flatForRentAnnouncementPreference.CityId.Should().Be(newCityId); }
private static void ProcessFlatForRentAnnouncementPreferenceForPriceMax(FlatForRentAnnouncement flatForRentAnnouncement, FlatForRentAnnouncementPreference flatForRentAnnouncementPreference) { if (flatForRentAnnouncementPreference.PriceMax.HasValue && flatForRentAnnouncement.Price.HasValue) { if (PriceMaxMatches(flatForRentAnnouncement.Price.Value, flatForRentAnnouncementPreference.PriceMax.Value) && CityDistrictsMatch(flatForRentAnnouncement, flatForRentAnnouncementPreference)) { flatForRentAnnouncementPreference.AnnouncementUrlsToSend.Add(flatForRentAnnouncement.SourceUrl); } } else { if (CityDistrictsMatch(flatForRentAnnouncement, flatForRentAnnouncementPreference)) { flatForRentAnnouncementPreference.AnnouncementUrlsToSend.Add(flatForRentAnnouncement.SourceUrl); } } }
public void Should_Throw_FlatForRentAnnouncementPreferencePriceMaxLowerThanPriceMinException_When_PriceMax_Is_Lower_Than_PriceMin() { Action result = () => { var unused = FlatForRentAnnouncementPreference.Builder() .SetId(Guid.NewGuid()) .SetCityId(Guid.NewGuid()) .SetPriceMin(1000) .SetPriceMax(0) .SetRoomNumbersMin(1) .SetRoomNumbersMax(1) .SetCityDistricts(new List <Guid> { Guid.NewGuid() }) .Build(); }; result.Should().ThrowExactly <FlatForRentAnnouncementPreferencePriceMaxLowerThanPriceMinException>() .WithMessage("PriceMax argument cannot be lower than PriceMin."); }
public void Should_Throw_FlatForRentAnnouncementPreferenceIdNullException_When_Id_Is_Empty_Guid() { Action result = () => { var unused = FlatForRentAnnouncementPreference.Builder() .SetId(Guid.Empty) .SetCityId(Guid.NewGuid()) .SetPriceMin(0) .SetPriceMax(2000) .SetRoomNumbersMin(1) .SetRoomNumbersMax(1) .SetCityDistricts(new List <Guid> { Guid.NewGuid() }) .Build(); }; result.Should().ThrowExactly <FlatForRentAnnouncementPreferenceIdNullException>() .WithMessage("Id argument is required."); }
public void Should_Throw_FlatForRentAnnouncementPreferencePriceMaxMinValueException_When_PriceMax_Is_Negative_Value() { Action result = () => { var unused = FlatForRentAnnouncementPreference.Builder() .SetId(Guid.NewGuid()) .SetCityId(Guid.NewGuid()) .SetPriceMin(0) .SetPriceMax(-1) .SetRoomNumbersMin(1) .SetRoomNumbersMax(1) .SetCityDistricts(new List <Guid> { Guid.NewGuid() }) .Build(); }; result.Should().ThrowExactly <FlatForRentAnnouncementPreferencePriceMaxMinValueException>() .WithMessage("PriceMax argument min value is 0."); }
public async Task HandleAsync_Should_Delete_Flat_For_Rent_Announcement_Preference() { var command = new DeleteFlatForRentAnnouncementPreferenceCommand(Guid.NewGuid(), Guid.NewGuid()); var user = User.Builder() .SetId(command.UserId) .SetEmail("*****@*****.**") .SetServiceActive(DefaultUserSettings.ServiceActive) .SetAnnouncementPreferenceLimit(DefaultUserSettings.AnnouncementPreferenceLimit) .SetAnnouncementSendingFrequency(DefaultUserSettings.AnnouncementSendingFrequency) .Build(); var getUserResult = GetResult <User> .Ok(user); var flatForRentAnnouncementPreference = FlatForRentAnnouncementPreference.Builder() .SetId(command.FlatForRentAnnouncementPreferenceId) .SetCityId(Guid.NewGuid()) .SetPriceMin(1) .SetPriceMax(1000) .SetRoomNumbersMin(1) .SetRoomNumbersMax(1) .SetCityDistricts(new List <Guid> { Guid.NewGuid() }) .Build(); var getFlatForRentAnnouncementPreferenceResult = GetResult <FlatForRentAnnouncementPreference> .Ok(flatForRentAnnouncementPreference); _userGetterServiceMock.Setup(x => x.GetByIdAsync(It.IsAny <Guid>())).ReturnsAsync(getUserResult); _flatForRentAnnouncementPreferenceGetterServiceMock .Setup(x => x.GetByByUserAndId(It.IsAny <User>(), It.IsAny <Guid>())) .Returns(getFlatForRentAnnouncementPreferenceResult); _communicationBusMock .Setup(x => x.DispatchDomainEventsAsync(It.IsAny <User>(), It.IsAny <CancellationToken>())) .Returns(Task.CompletedTask); _userRepositoryMock.Setup(x => x.UpdateAsync(It.IsAny <User>())).Returns(Task.CompletedTask); _integrationEventBusMock.Setup(x => x.PublishIntegrationEventAsync(It.IsAny <IIntegrationEvent>())) .Returns(Task.CompletedTask); Func <Task> result = async() => await _commandHandler.HandleAsync(command); await result.Should().NotThrowAsync <Exception>(); }
public async Task HandleAsync_Should_Return_FlatForRentAnnouncementPreferenceOutputQuery() { var inputQuery = new GetFlatForRentAnnouncementPreferenceInputQuery(Guid.NewGuid(), Guid.NewGuid()); var user = User.Builder() .SetId(inputQuery.UserId) .SetEmail("*****@*****.**") .SetServiceActive(DefaultUserSettings.ServiceActive) .SetAnnouncementPreferenceLimit(DefaultUserSettings.AnnouncementPreferenceLimit) .SetAnnouncementSendingFrequency(DefaultUserSettings.AnnouncementSendingFrequency) .Build(); var getUserResult = GetResult <User> .Ok(user); var flatForRentAnnouncementPreference = FlatForRentAnnouncementPreference.Builder() .SetId(inputQuery.FlatForRentAnnouncementPreferenceId) .SetCityId(Guid.NewGuid()) .SetPriceMin(1) .SetPriceMax(1000) .SetRoomNumbersMin(1) .SetRoomNumbersMax(1000) .Build(); var getFlatForRentAnnouncementPreferenceResult = GetResult <FlatForRentAnnouncementPreference> .Ok(flatForRentAnnouncementPreference); var expectedResult = new FlatForRentAnnouncementPreferenceOutputQuery(flatForRentAnnouncementPreference.Id, flatForRentAnnouncementPreference.CityId, flatForRentAnnouncementPreference.PriceMin, flatForRentAnnouncementPreference.PriceMax, flatForRentAnnouncementPreference.RoomNumbersMin, flatForRentAnnouncementPreference.RoomNumbersMax, flatForRentAnnouncementPreference.CityDistricts); _userGetterServiceMock.Setup(x => x.GetByIdAsync(It.IsAny <Guid>())).ReturnsAsync(getUserResult); _flatForRentAnnouncementPreferenceGetterServiceMock .Setup(x => x.GetByByUserAndId(It.IsAny <User>(), It.IsAny <Guid>())) .Returns(getFlatForRentAnnouncementPreferenceResult); _mapperMock.Setup(x => x.Map <FlatForRentAnnouncementPreference, FlatForRentAnnouncementPreferenceOutputQuery>( It.IsAny <FlatForRentAnnouncementPreference>())) .Returns(expectedResult); var result = await _queryHandler.HandleAsync(inputQuery); result.Should().BeEquivalentTo(expectedResult); }
public void Should_Throw_FlatForRentAnnouncementPreferenceCityDistrictsDuplicateValuesException_When_CityDistricts_Contains_Duplicates() { var cityDistrict = Guid.NewGuid(); Action result = () => { var unused = FlatForRentAnnouncementPreference.Builder() .SetId(Guid.NewGuid()) .SetCityId(Guid.NewGuid()) .SetPriceMin(0) .SetPriceMax(1000) .SetRoomNumbersMin(1) .SetRoomNumbersMax(1) .SetCityDistricts(new List <Guid> { cityDistrict, cityDistrict }) .Build(); }; result.Should().ThrowExactly <FlatForRentAnnouncementPreferenceCityDistrictsDuplicateValuesException>() .WithMessage("CityDistricts argument contains duplicate values."); }
private User CreateUser(string email) { 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(2000) .SetRoomNumbersMin(1) .SetRoomNumbersMax(2) .SetCityDistricts(cityDistricts) .Build() }; var roomForRentAnnouncementPreferences = new List <RoomForRentAnnouncementPreference> { RoomForRentAnnouncementPreference.Builder() .SetId(Guid.NewGuid()) .SetCityId(cityId) .SetPriceMin(0) .SetPriceMax(2000) .SetRoomType(RoomTypeEnumeration.Single) .SetCityDistricts(cityDistricts) .Build() }; return(User.Builder() .SetId(Guid.NewGuid()) .SetEmail(email) .SetServiceActive(DefaultUserSettings.ServiceActive) .SetAnnouncementPreferenceLimit(DefaultUserSettings.AnnouncementPreferenceLimit) .SetAnnouncementSendingFrequency(DefaultUserSettings.AnnouncementSendingFrequency) .SetFlatForRentAnnouncementPreferences(flatForRentAnnouncementPreferences) .SetRoomForRentAnnouncementPreferences(roomForRentAnnouncementPreferences) .Build()); }
public void VerifyFlatForRentAnnouncementPreferences_Should_Return_Fail_VerificationResult_When_CityDistricts_Can_Be_Expanded() { var cityId = Guid.NewGuid(); var flatForRentAnnouncementPreferences = new List <FlatForRentAnnouncementPreference> { FlatForRentAnnouncementPreference.Builder() .SetId(Guid.NewGuid()) .SetCityId(cityId) .SetPriceMin(0) .SetPriceMax(1000) .SetRoomNumbersMin(1) .SetRoomNumbersMax(1) .SetCityDistricts(new List <Guid> { Guid.NewGuid() }) .Build(), FlatForRentAnnouncementPreference.Builder() .SetId(Guid.NewGuid()) .SetCityId(cityId) .SetPriceMin(0) .SetPriceMax(1000) .SetRoomNumbersMin(1) .SetRoomNumbersMax(1) .SetCityDistricts(new List <Guid> { Guid.NewGuid() }) .Build() }; var errors = new List <IError> { new Error(FlatForRentAnnouncementPreferenceErrorCode.ExpansibleCityDistricts, FlatForRentAnnouncementPreferenceErrorMessage.ExpansibleCityDistricts) }; var expectedResult = VerificationResult.Fail(errors); var result = _service.VerifyFlatForRentAnnouncementPreferences(flatForRentAnnouncementPreferences); result.Should().BeEquivalentTo(expectedResult); }