Exemple #1
0
        /// <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);
            }
        }
Exemple #2
0
        /// <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);
        }
Exemple #4
0
        /// <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);
        }