/// <summary> /// Fetch the post code for advanced Search. /// </summary> /// <param name="searchText">Text to search</param> /// <param name="userUnit">userUnit Guid Id</param> /// <returns>list of PostcodeDTO</returns> public async Task <IEnumerable <PostcodeDTO> > GetPostcodeUnitForAdvanceSearch(string searchText, Guid userUnit) { string methodName = typeof(UnitLocationBusinessService) + "." + nameof(GetPostcodeUnitForAdvanceSearch); using (loggingHelper.RMTraceManager.StartTrace("Business.GetPostcodeUnitForAdvanceSearch")) { loggingHelper.LogMethodEntry(methodName, LoggerTraceConstants.UnitManagerAPIPriority, LoggerTraceConstants.UnitManagerBusinessServiceMethodEntryEventId); // reference data value for Postcode with Category - Postcode Type Guid postcodeTypeGUID = unitManagerIntegrationService.GetReferenceDataGuId(PostCodeType, PostCodeTypeCategory.Postcode.GetDescription()).Result; SearchInputDataDto searchInputs = new SearchInputDataDto { SearchText = searchText, UserUnitLocationId = userUnit, PostcodeTypeGUID = postcodeTypeGUID, SearchResultCount = SearchResultCount }; var postcodeUnits = await postCodeDataService.GetPostcodeUnitForAdvanceSearch(searchInputs).ConfigureAwait(false); List <PostcodeDTO> postCodeList = postcodeUnits.Select(x => new PostcodeDTO { PostcodeUnit = x.PostcodeUnit }).ToList(); loggingHelper.LogMethodExit(methodName, LoggerTraceConstants.UnitManagerAPIPriority, LoggerTraceConstants.UnitManagerBusinessServiceMethodExitEventId); return(postCodeList); } }
/// <summary> /// Gets count of postcodeunits for an unit for a given search text /// </summary> /// <param name="searchInputs">SearchInputDataDto</param> /// <returns>count of PostcodeUnit</returns> public async Task <int> GetPostcodeUnitCount(SearchInputDataDto searchInputs) { string methodName = typeof(UnitLocationDataService) + "." + nameof(GetPostcodeUnitCount); using (loggingHelper.RMTraceManager.StartTrace("DataService.GetPostcodeUnitCount")) { loggingHelper.LogMethodEntry(methodName, LoggerTraceConstants.UnitManagerAPIPriority, LoggerTraceConstants.PostCodeDataServiceMethodEntryEventId); var postcodeDataDTO = await(from p in DataContext.PostcodeHierarchies.AsNoTracking() join s in DataContext.LocationPostcodeHierarchies.AsNoTracking() on p.ID equals s.PostcodeHierarchyID join l in DataContext.Locations.AsNoTracking() on s.LocationID equals l.ID where p.Postcode.StartsWith(searchInputs.SearchText ?? string.Empty) && p.PostcodeTypeGUID == searchInputs.PostcodeTypeGUID && l.ID == searchInputs.UserUnitLocationId select new PostcodeDataDTO { PostcodeUnit = p.Postcode, ID = p.ID }).CountAsync(); loggingHelper.LogMethodEntry(methodName, LoggerTraceConstants.UnitManagerAPIPriority, LoggerTraceConstants.PostCodeDataServiceMethodExitEventId); return(postcodeDataDTO); } }
/// <summary> /// Setup for Nunit Tests /// </summary> protected override void OnSetup() { // Data Setup List <Postcode> postcodeList = new List <Postcode>() { new Postcode() { PostcodeUnit = "123", InwardCode = "1", OutwardCode = "2", ID = new Guid("3534AA41-391F-4579-A18D-D7EDF5B5F918") } }; List <PostcodeHierarchy> postcodeHierarchyList = new List <PostcodeHierarchy>() { new PostcodeHierarchy() { ID = new Guid("1534AA41-391F-4579-A18D-D7EDF5B5F918"), PostcodeTypeGUID = postcodeTypeGUID, ParentPostcode = "111", Postcode = "123" } }; List <LocationPostcodeHierarchy> locationPostcodeHierarchyList = new List <LocationPostcodeHierarchy>() { new LocationPostcodeHierarchy() { PostcodeHierarchyID = new Guid("1534AA41-391F-4579-A18D-D7EDF5B5F918"), LocationID = new Guid("1534AA41-391F-4579-A18D-D7EDF5B5F918") } }; List <Location> locationList = new List <Location>() { new Location() { ID = new Guid("1534AA41-391F-4579-A18D-D7EDF5B5F918") } }; List <DeliveryPoint> deliveryPointList = new List <DeliveryPoint>() { new DeliveryPoint() { PostalAddress = new PostalAddress() { Postcode = "123" }, NetworkNode = new NetworkNode() { Location = new Location() { Shape = unitBoundary } } }, new DeliveryPoint() { PostalAddress = new PostalAddress() { Postcode = "12" }, NetworkNode = new NetworkNode() { Location = new Location() { } } } }; searchInputDataDto = new SearchInputDataDto() { SearchText = "12", PostcodeTypeGUID = postcodeTypeGUID, SearchResultCount = 2, UserUnitLocationId = new Guid("1534AA41-391F-4579-A18D-D7EDF5B5F918") }; List <PostalAddressIdentifier> postalAddressIdentifierList = new List <PostalAddressIdentifier>() { new PostalAddressIdentifier() { ID = new Guid("1534AA41-391F-4579-A18D-D7EDF5B5F918") } }; mockUnitManagerDbContext = CreateMock <UnitManagerDbContext>(); mockILoggingHelper = CreateMock <ILoggingHelper>(); // Setup for PostcodeHierarchy var mockAsynEnumerable = new DbAsyncEnumerable <PostcodeHierarchy>(postcodeHierarchyList); var mockPostcodeHierarchy = MockDbSet(postcodeHierarchyList); mockPostcodeHierarchy.As <IQueryable>().Setup(mock => mock.Provider).Returns(mockAsynEnumerable.AsQueryable().Provider); mockPostcodeHierarchy.As <IQueryable>().Setup(mock => mock.Expression).Returns(mockAsynEnumerable.AsQueryable().Expression); mockPostcodeHierarchy.As <IQueryable>().Setup(mock => mock.ElementType).Returns(mockAsynEnumerable.AsQueryable().ElementType); mockPostcodeHierarchy.As <IDbAsyncEnumerable>().Setup(mock => mock.GetAsyncEnumerator()).Returns(((IDbAsyncEnumerable <PostcodeHierarchy>)mockAsynEnumerable).GetAsyncEnumerator()); mockUnitManagerDbContext.Setup(x => x.Set <PostcodeHierarchy>()).Returns(mockPostcodeHierarchy.Object); mockUnitManagerDbContext.Setup(x => x.PostcodeHierarchies).Returns(mockPostcodeHierarchy.Object); mockUnitManagerDbContext.Setup(c => c.PostcodeHierarchies.AsNoTracking()).Returns(mockPostcodeHierarchy.Object); // Setup for PostalAddressIdentifier var mockAsynEnumerable1 = new DbAsyncEnumerable <PostalAddressIdentifier>(postalAddressIdentifierList); var mockPostalAddressIdentifier = MockDbSet(postalAddressIdentifierList); mockPostalAddressIdentifier.As <IQueryable>().Setup(mock => mock.Provider).Returns(mockAsynEnumerable1.AsQueryable().Provider); mockPostalAddressIdentifier.As <IQueryable>().Setup(mock => mock.Expression).Returns(mockAsynEnumerable1.AsQueryable().Expression); mockPostalAddressIdentifier.As <IQueryable>().Setup(mock => mock.ElementType).Returns(mockAsynEnumerable1.AsQueryable().ElementType); mockPostalAddressIdentifier.As <IDbAsyncEnumerable>().Setup(mock => mock.GetAsyncEnumerator()).Returns(((IDbAsyncEnumerable <PostalAddressIdentifier>)mockAsynEnumerable1).GetAsyncEnumerator()); mockUnitManagerDbContext.Setup(x => x.Set <PostalAddressIdentifier>()).Returns(mockPostalAddressIdentifier.Object); mockUnitManagerDbContext.Setup(x => x.PostalAddressIdentifiers).Returns(mockPostalAddressIdentifier.Object); mockUnitManagerDbContext.Setup(c => c.PostalAddressIdentifiers.AsNoTracking()).Returns(mockPostalAddressIdentifier.Object); // Setup for LocationPostcodeHierarchy var mockAsynEnumerable2 = new DbAsyncEnumerable <LocationPostcodeHierarchy>(locationPostcodeHierarchyList); var mockLocationPostcodeHierarchy = MockDbSet(locationPostcodeHierarchyList); mockLocationPostcodeHierarchy.As <IQueryable>().Setup(mock => mock.Provider).Returns(mockAsynEnumerable2.AsQueryable().Provider); mockLocationPostcodeHierarchy.As <IQueryable>().Setup(mock => mock.Expression).Returns(mockAsynEnumerable2.AsQueryable().Expression); mockLocationPostcodeHierarchy.As <IQueryable>().Setup(mock => mock.ElementType).Returns(mockAsynEnumerable2.AsQueryable().ElementType); mockLocationPostcodeHierarchy.As <IDbAsyncEnumerable>().Setup(mock => mock.GetAsyncEnumerator()).Returns(((IDbAsyncEnumerable <LocationPostcodeHierarchy>)mockAsynEnumerable2).GetAsyncEnumerator()); mockUnitManagerDbContext.Setup(x => x.Set <LocationPostcodeHierarchy>()).Returns(mockLocationPostcodeHierarchy.Object); mockUnitManagerDbContext.Setup(x => x.LocationPostcodeHierarchies).Returns(mockLocationPostcodeHierarchy.Object); mockUnitManagerDbContext.Setup(c => c.LocationPostcodeHierarchies.AsNoTracking()).Returns(mockLocationPostcodeHierarchy.Object); // Setup for Location var mockAsynEnumerable3 = new DbAsyncEnumerable <Location>(locationList); var mockLocation = MockDbSet(locationList); mockLocation.As <IQueryable>().Setup(mock => mock.Provider).Returns(mockAsynEnumerable3.AsQueryable().Provider); mockLocation.As <IQueryable>().Setup(mock => mock.Expression).Returns(mockAsynEnumerable3.AsQueryable().Expression); mockLocation.As <IQueryable>().Setup(mock => mock.ElementType).Returns(mockAsynEnumerable3.AsQueryable().ElementType); mockLocation.As <IDbAsyncEnumerable>().Setup(mock => mock.GetAsyncEnumerator()).Returns(((IDbAsyncEnumerable <Location>)mockAsynEnumerable3).GetAsyncEnumerator()); mockUnitManagerDbContext.Setup(x => x.Set <Location>()).Returns(mockLocation.Object); mockUnitManagerDbContext.Setup(x => x.Locations).Returns(mockLocation.Object); mockUnitManagerDbContext.Setup(c => c.Locations.AsNoTracking()).Returns(mockLocation.Object); // Setup for Postcode var mockAsynEnumerable4 = new DbAsyncEnumerable <Postcode>(postcodeList); var mockPostcode = MockDbSet(postcodeList); mockPostcode.As <IQueryable>().Setup(mock => mock.Provider).Returns(mockAsynEnumerable4.AsQueryable().Provider); mockPostcode.As <IQueryable>().Setup(mock => mock.Expression).Returns(mockAsynEnumerable4.AsQueryable().Expression); mockPostcode.As <IQueryable>().Setup(mock => mock.ElementType).Returns(mockAsynEnumerable4.AsQueryable().ElementType); mockPostcode.As <IDbAsyncEnumerable>().Setup(mock => mock.GetAsyncEnumerator()).Returns(((IDbAsyncEnumerable <Postcode>)mockAsynEnumerable4).GetAsyncEnumerator()); mockUnitManagerDbContext.Setup(x => x.Set <Postcode>()).Returns(mockPostcode.Object); mockUnitManagerDbContext.Setup(x => x.Postcodes).Returns(mockPostcode.Object); // Setup for DeliveryPoint var mockAsynEnumerable5 = new DbAsyncEnumerable <DeliveryPoint>(deliveryPointList); var mockDeliveryPoint = MockDbSet(deliveryPointList); mockDeliveryPoint.As <IQueryable>().Setup(mock => mock.Provider).Returns(mockAsynEnumerable5.AsQueryable().Provider); mockDeliveryPoint.As <IQueryable>().Setup(mock => mock.Expression).Returns(mockAsynEnumerable5.AsQueryable().Expression); mockDeliveryPoint.As <IQueryable>().Setup(mock => mock.ElementType).Returns(mockAsynEnumerable5.AsQueryable().ElementType); mockDeliveryPoint.As <IDbAsyncEnumerable>().Setup(mock => mock.GetAsyncEnumerator()).Returns(((IDbAsyncEnumerable <DeliveryPoint>)mockAsynEnumerable5).GetAsyncEnumerator()); mockUnitManagerDbContext.Setup(x => x.Set <DeliveryPoint>()).Returns(mockDeliveryPoint.Object); mockUnitManagerDbContext.Setup(x => x.DeliveryPoints).Returns(mockDeliveryPoint.Object); var rmTraceManagerMock = new Mock <IRMTraceManager>(); rmTraceManagerMock.Setup(x => x.StartTrace(It.IsAny <string>(), It.IsAny <Guid>())); mockILoggingHelper.Setup(x => x.RMTraceManager).Returns(rmTraceManagerMock.Object); mockDatabaseFactory = CreateMock <IDatabaseFactory <UnitManagerDbContext> >(); mockDatabaseFactory.Setup(x => x.Get()).Returns(mockUnitManagerDbContext.Object); testCandidate = new PostcodeDataService(mockDatabaseFactory.Object, mockILoggingHelper.Object); }
/// <summary> /// Setup for Nunit Tests /// </summary> protected override void OnSetup() { // Data Setup List <PostcodeHierarchy> postcodeHierarchyList = new List <PostcodeHierarchy>() { new PostcodeHierarchy() { ID = new Guid("1534AA41-391F-4579-A18D-D7EDF5B5F918"), PostcodeTypeGUID = postcodeTypeGUID, ParentPostcode = "111", Postcode = "123", } }; List <LocationPostcodeHierarchy> locationPostcodeHierarchyList = new List <LocationPostcodeHierarchy>() { new LocationPostcodeHierarchy() { PostcodeHierarchyID = new Guid("1534AA41-391F-4579-A18D-D7EDF5B5F918"), LocationID = new Guid("1534AA41-391F-4579-A18D-D7EDF5B5F918") } }; List <Location> locationList = new List <Location>() { new Location() { ID = new Guid("1534AA41-391F-4579-A18D-D7EDF5B5F918") } }; List <PostalAddress> postalAddressList = new List <PostalAddress>() { new PostalAddress() { UDPRN = 123, Postcode = "123", AddressType_GUID = postcodeTypeGUID, Thoroughfare = "12" } }; searchInputDataDto = new SearchInputDataDto() { SearchText = "12", PostcodeTypeGUID = postcodeTypeGUID, SearchResultCount = 2, UserUnitLocationId = new Guid("1534AA41-391F-4579-A18D-D7EDF5B5F918") }; mockUnitManagerDbContext = CreateMock <UnitManagerDbContext>(); mockILoggingHelper = CreateMock <ILoggingHelper>(); // Setup for PostcodeHierarchy var mockAsynEnumerable4 = new DbAsyncEnumerable <PostcodeHierarchy>(postcodeHierarchyList); var mockPostcodeHierarchy = MockDbSet(postcodeHierarchyList); mockPostcodeHierarchy.As <IQueryable>().Setup(mock => mock.Provider).Returns(mockAsynEnumerable4.AsQueryable().Provider); mockPostcodeHierarchy.As <IQueryable>().Setup(mock => mock.Expression).Returns(mockAsynEnumerable4.AsQueryable().Expression); mockPostcodeHierarchy.As <IQueryable>().Setup(mock => mock.ElementType).Returns(mockAsynEnumerable4.AsQueryable().ElementType); mockPostcodeHierarchy.As <IDbAsyncEnumerable>().Setup(mock => mock.GetAsyncEnumerator()).Returns(((IDbAsyncEnumerable <PostcodeHierarchy>)mockAsynEnumerable4).GetAsyncEnumerator()); mockUnitManagerDbContext.Setup(x => x.Set <PostcodeHierarchy>()).Returns(mockPostcodeHierarchy.Object); mockUnitManagerDbContext.Setup(x => x.PostcodeHierarchies).Returns(mockPostcodeHierarchy.Object); mockUnitManagerDbContext.Setup(c => c.PostcodeHierarchies.AsNoTracking()).Returns(mockPostcodeHierarchy.Object); // Setup for LocationPostcodeHierarchy var mockAsynEnumerable7 = new DbAsyncEnumerable <LocationPostcodeHierarchy>(locationPostcodeHierarchyList); var mockLocationPostcodeHierarchy = MockDbSet(locationPostcodeHierarchyList); mockLocationPostcodeHierarchy.As <IQueryable>().Setup(mock => mock.Provider).Returns(mockAsynEnumerable7.AsQueryable().Provider); mockLocationPostcodeHierarchy.As <IQueryable>().Setup(mock => mock.Expression).Returns(mockAsynEnumerable7.AsQueryable().Expression); mockLocationPostcodeHierarchy.As <IQueryable>().Setup(mock => mock.ElementType).Returns(mockAsynEnumerable7.AsQueryable().ElementType); mockLocationPostcodeHierarchy.As <IDbAsyncEnumerable>().Setup(mock => mock.GetAsyncEnumerator()).Returns(((IDbAsyncEnumerable <LocationPostcodeHierarchy>)mockAsynEnumerable7).GetAsyncEnumerator()); mockUnitManagerDbContext.Setup(x => x.Set <LocationPostcodeHierarchy>()).Returns(mockLocationPostcodeHierarchy.Object); mockUnitManagerDbContext.Setup(x => x.LocationPostcodeHierarchies).Returns(mockLocationPostcodeHierarchy.Object); mockUnitManagerDbContext.Setup(c => c.LocationPostcodeHierarchies.AsNoTracking()).Returns(mockLocationPostcodeHierarchy.Object); // Setup for Location var mockAsynEnumerable2 = new DbAsyncEnumerable <Location>(locationList); var mockLocation = MockDbSet(locationList); mockLocation.As <IQueryable>().Setup(mock => mock.Provider).Returns(mockAsynEnumerable2.AsQueryable().Provider); mockLocation.As <IQueryable>().Setup(mock => mock.Expression).Returns(mockAsynEnumerable2.AsQueryable().Expression); mockLocation.As <IQueryable>().Setup(mock => mock.ElementType).Returns(mockAsynEnumerable2.AsQueryable().ElementType); mockLocation.As <IDbAsyncEnumerable>().Setup(mock => mock.GetAsyncEnumerator()).Returns(((IDbAsyncEnumerable <Location>)mockAsynEnumerable2).GetAsyncEnumerator()); mockUnitManagerDbContext.Setup(x => x.Set <Location>()).Returns(mockLocation.Object); mockUnitManagerDbContext.Setup(x => x.Locations).Returns(mockLocation.Object); mockUnitManagerDbContext.Setup(c => c.Locations.AsNoTracking()).Returns(mockLocation.Object); // Setup for PostalAddress var mockAsynEnumerable5 = new DbAsyncEnumerable <PostalAddress>(postalAddressList); var mockPostalAddress = MockDbSet(postalAddressList); mockPostalAddress.As <IQueryable>().Setup(mock => mock.Provider).Returns(mockAsynEnumerable5.AsQueryable().Provider); mockPostalAddress.As <IQueryable>().Setup(mock => mock.Expression).Returns(mockAsynEnumerable5.AsQueryable().Expression); mockPostalAddress.As <IQueryable>().Setup(mock => mock.ElementType).Returns(mockAsynEnumerable5.AsQueryable().ElementType); mockPostalAddress.As <IDbAsyncEnumerable>().Setup(mock => mock.GetAsyncEnumerator()).Returns(((IDbAsyncEnumerable <PostalAddress>)mockAsynEnumerable5).GetAsyncEnumerator()); mockUnitManagerDbContext.Setup(x => x.Set <PostalAddress>()).Returns(mockPostalAddress.Object); mockUnitManagerDbContext.Setup(x => x.PostalAddresses).Returns(mockPostalAddress.Object); mockUnitManagerDbContext.Setup(c => c.PostalAddresses.AsNoTracking()).Returns(mockPostalAddress.Object); var rmTraceManagerMock = new Mock <IRMTraceManager>(); rmTraceManagerMock.Setup(x => x.StartTrace(It.IsAny <string>(), It.IsAny <Guid>())); mockILoggingHelper.Setup(x => x.RMTraceManager).Returns(rmTraceManagerMock.Object); mockDatabaseFactory = CreateMock <IDatabaseFactory <UnitManagerDbContext> >(); mockDatabaseFactory.Setup(x => x.Get()).Returns(mockUnitManagerDbContext.Object); testCandidate = new PostalAddressDataService(mockDatabaseFactory.Object, mockILoggingHelper.Object); }