Пример #1
0
 /// <summary>
 /// Initializes a new instance of the <see cref="UnitLocationBusinessService"/> class.
 /// </summary>
 /// <param name="unitLocationDataService"> The unit location respository</param>
 /// <param name="postcodeSectorDataService">post code sector data service</param>
 /// <param name="postCodeDataService">post code data service</param>
 /// <param name="scenarioDataService">scenario data service</param>
 public UnitLocationBusinessService(IUnitLocationDataService unitLocationDataService, IPostcodeSectorDataService postcodeSectorDataService, IPostcodeDataService postCodeDataService, IScenarioDataService scenarioDataService, IPostalAddressDataService postalAddressDataService, ILoggingHelper loggingHelper, IUnitManagerIntegrationService unitManagerIntegrationService)
 {
     // Store injected dependencies
     this.unitLocationDataService       = unitLocationDataService;
     this.postcodeSectorDataService     = postcodeSectorDataService;
     this.postCodeDataService           = postCodeDataService;
     this.scenarioDataService           = scenarioDataService;
     this.loggingHelper                 = loggingHelper;
     this.unitManagerIntegrationService = unitManagerIntegrationService;
     this.postalAddressDataService      = postalAddressDataService;
 }
        protected override void OnSetup()
        {
            SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory);
            loggingHelperMock = CreateMock <ILoggingHelper>();

            unit1Guid     = Guid.NewGuid();
            unit2Guid     = Guid.NewGuid();
            unit3Guid     = Guid.NewGuid();
            user1Id       = Guid.NewGuid();
            user2Id       = Guid.NewGuid();
            sectorGuid    = Guid.NewGuid();
            districtGuid  = Guid.NewGuid();
            areaGuid      = Guid.NewGuid();
            postcodeGuid2 = Guid.NewGuid();
            postcodeGuid1 = Guid.NewGuid();

            var unitBoundary = DbGeometry.PolygonFromText("POLYGON ((505058.162109375 100281.69677734375, 518986.84887695312 100281.69677734375, 518986.84887695312 114158.546875, 505058.162109375 114158.546875, 505058.162109375 100281.69677734375))", 27700);

            var userRoleUnits = new List <UserRoleUnit>()
            {
                new UserRoleUnit {
                    Unit_GUID = unit1Guid, User_GUID = user1Id
                },
                new UserRoleUnit {
                    Unit_GUID = unit2Guid, User_GUID = user1Id
                },
                new UserRoleUnit {
                    Unit_GUID = unit3Guid, User_GUID = user2Id
                }
            };

            var unitLocation = new List <UnitLocation>()
            {
                new UnitLocation()
                {
                    UnitName = "unit1", UnitAddressUDPRN = 1, ExternalId = "extunit1", ID = unit1Guid, UnitBoundryPolygon = unitBoundary
                },
                new UnitLocation()
                {
                    UnitName = "unit2", UnitAddressUDPRN = 2, ExternalId = "extunit2", ID = unit2Guid, UnitBoundryPolygon = unitBoundary
                },
                new UnitLocation()
                {
                    UnitName = "unit3", UnitAddressUDPRN = 3, ExternalId = "extunit3", ID = unit3Guid, UnitBoundryPolygon = unitBoundary
                }
            };

            var mockDeliveryUnitLocationDbSet = MockDbSet(unitLocation);

            mockRMDBContext = CreateMock <RMDBContext>();
            mockRMDBContext.Setup(x => x.Set <UnitLocation>()).Returns(mockDeliveryUnitLocationDbSet.Object);
            mockRMDBContext.Setup(x => x.UnitLocations).Returns(mockDeliveryUnitLocationDbSet.Object);
            mockRMDBContext.Setup(x => x.UnitLocations.AsNoTracking()).Returns(mockDeliveryUnitLocationDbSet.Object);

            mockDeliveryUnitLocationDbSet.Setup(x => x.Include(It.IsAny <string>())).Returns(mockDeliveryUnitLocationDbSet.Object);

            var postalAddresses = new List <PostalAddress>()
            {
                new PostalAddress()
                {
                    UDPRN = 1, PostCodeGUID = postcodeGuid1
                },
                new PostalAddress()
                {
                    UDPRN = 2, PostCodeGUID = postcodeGuid2
                },
                new PostalAddress()
                {
                    UDPRN = 3, PostCodeGUID = postcodeGuid2
                }
            };
            var mockPostalAddressesDbSet = MockDbSet(postalAddresses);

            mockRMDBContext.Setup(x => x.Set <PostalAddress>()).Returns(mockPostalAddressesDbSet.Object);
            mockRMDBContext.Setup(x => x.PostalAddresses).Returns(mockPostalAddressesDbSet.Object);
            mockRMDBContext.Setup(x => x.PostalAddresses.AsNoTracking()).Returns(mockPostalAddressesDbSet.Object);

            var postcodes = new List <Postcode>()
            {
                new Postcode()
                {
                    ID = postcodeGuid1, SectorGUID = sectorGuid
                },
                new Postcode()
                {
                    ID = postcodeGuid2, SectorGUID = sectorGuid
                }
            };
            var mockPostCodesDbSet = MockDbSet(postcodes);

            mockRMDBContext.Setup(x => x.Set <Postcode>()).Returns(mockPostCodesDbSet.Object);
            mockRMDBContext.Setup(x => x.Postcodes).Returns(mockPostCodesDbSet.Object);
            mockRMDBContext.Setup(x => x.Postcodes.AsNoTracking()).Returns(mockPostCodesDbSet.Object);

            var postcodeSectors = new List <PostcodeSector>()
            {
                new PostcodeSector()
                {
                    ID = sectorGuid, DistrictGUID = districtGuid
                }
            };
            var mockPostcodeSectorDbSet = MockDbSet(postcodeSectors);

            mockRMDBContext.Setup(x => x.Set <PostcodeSector>()).Returns(mockPostcodeSectorDbSet.Object);
            mockRMDBContext.Setup(x => x.PostcodeSectors).Returns(mockPostcodeSectorDbSet.Object);
            mockRMDBContext.Setup(x => x.PostcodeSectors.AsNoTracking()).Returns(mockPostcodeSectorDbSet.Object);

            var postcodeDistricts = new List <PostcodeDistrict>()
            {
                new PostcodeDistrict()
                {
                    ID = districtGuid, AreaGUID = areaGuid
                }
            };
            var mockPostcodeDistrictDbSet = MockDbSet(postcodeDistricts);

            mockRMDBContext.Setup(x => x.Set <PostcodeDistrict>()).Returns(mockPostcodeDistrictDbSet.Object);
            mockRMDBContext.Setup(x => x.PostcodeDistricts).Returns(mockPostcodeDistrictDbSet.Object);
            mockRMDBContext.Setup(x => x.PostcodeDistricts.AsNoTracking()).Returns(mockPostcodeDistrictDbSet.Object);

            var postcodeAreas = new List <PostcodeArea>()
            {
                new PostcodeArea()
                {
                    ID = areaGuid, Area = "Test Area"
                }
            };
            var mockPostcodeAreasDbSet = MockDbSet(postcodeAreas);

            mockRMDBContext.Setup(x => x.Set <PostcodeArea>()).Returns(mockPostcodeAreasDbSet.Object);
            mockRMDBContext.Setup(x => x.PostcodeAreas).Returns(mockPostcodeAreasDbSet.Object);
            mockRMDBContext.Setup(x => x.PostcodeAreas.AsNoTracking()).Returns(mockPostcodeAreasDbSet.Object);

            var mockUserRoleUnitDbSet = MockDbSet(userRoleUnits);

            mockRMDBContext.Setup(x => x.Set <UserRoleUnit>()).Returns(mockUserRoleUnitDbSet.Object);
            mockRMDBContext.Setup(x => x.UserRoleUnits).Returns(mockUserRoleUnitDbSet.Object);
            mockRMDBContext.Setup(x => x.UserRoleUnits.AsNoTracking()).Returns(mockUserRoleUnitDbSet.Object);

            mockDatabaseFactory = CreateMock <IDatabaseFactory <RMDBContext> >();
            mockDatabaseFactory.Setup(x => x.Get()).Returns(mockRMDBContext.Object);

            var rmTraceManagerMock = new Mock <IRMTraceManager>();

            rmTraceManagerMock.Setup(x => x.StartTrace(It.IsAny <string>(), It.IsAny <Guid>()));
            loggingHelperMock.Setup(x => x.RMTraceManager).Returns(rmTraceManagerMock.Object);

            testCandidate = new UnitLocationDataService(mockDatabaseFactory.Object, loggingHelperMock.Object);
        }
        /// <summary>
        /// setup for nunit tests
        /// </summary>
        protected override void OnSetup()
        {
            // Data Setup
            List <PostalAddressIdentifier> postalAddressIdentifierList = new List <PostalAddressIdentifier>()
            {
                new PostalAddressIdentifier()
                {
                    ID = new Guid("1534AA41-391F-4579-A18D-D7EDF5B5F918")
                }
            };

            locationList = new List <Location>()
            {
                new Location()
                {
                    ID = new Guid("1534AA41-391F-4579-A18D-D7EDF5B5F918")
                }
            };

            List <UserRoleLocation> userRoleLocationList = new List <UserRoleLocation>()
            {
                new UserRoleLocation()
                {
                    LocationID = new Guid("1534AA41-391F-4579-A18D-D7EDF5B5F918"),
                    UserID     = userId
                }
            };

            postcodeHierarchyList = new List <PostcodeHierarchy>()
            {
                new PostcodeHierarchy()
                {
                    ID = new Guid("1534AA41-391F-4579-A18D-D7EDF5B5F918"),
                    PostcodeTypeGUID = postcodeTypeGUID,
                    ParentPostcode   = "111",
                    Postcode         = "123",
                }
            };

            List <Postcode> postcodeList = new List <Postcode>()
            {
                new Postcode()
                {
                    ID           = new Guid("1534AA41-391F-4579-A18D-D7EDF5B5F918"),
                    InwardCode   = "a",
                    OutwardCode  = "b",
                    PostcodeUnit = "unit1",
                }
            };

            List <LocationReferenceData> locationReferenceDataList = new List <LocationReferenceData>()
            {
                new LocationReferenceData()
                {
                    LocationID = new Guid("1534AA41-391F-4579-A18D-D7EDF5B5F918")
                }
            };

            List <LocationPostcodeHierarchy> locationPostcodeHierarchyList = new List <LocationPostcodeHierarchy>()
            {
                new LocationPostcodeHierarchy()
                {
                    PostcodeHierarchyID = new Guid("1534AA41-391F-4579-A18D-D7EDF5B5F918"),
                    LocationID          = new Guid("1534AA41-391F-4579-A18D-D7EDF5B5F918")
                }
            };

            mockUnitManagerDbContext = CreateMock <UnitManagerDbContext>();
            mockILoggingHelper       = CreateMock <ILoggingHelper>();

            // 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 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 UserRoleLocation
            var mockAsynEnumerable3  = new DbAsyncEnumerable <UserRoleLocation>(userRoleLocationList);
            var mockUserRoleLocation = MockDbSet(userRoleLocationList);

            mockUserRoleLocation.As <IQueryable>().Setup(mock => mock.Provider).Returns(mockAsynEnumerable3.AsQueryable().Provider);
            mockUserRoleLocation.As <IQueryable>().Setup(mock => mock.Expression).Returns(mockAsynEnumerable3.AsQueryable().Expression);
            mockUserRoleLocation.As <IQueryable>().Setup(mock => mock.ElementType).Returns(mockAsynEnumerable3.AsQueryable().ElementType);
            mockUserRoleLocation.As <IDbAsyncEnumerable>().Setup(mock => mock.GetAsyncEnumerator()).Returns(((IDbAsyncEnumerable <UserRoleLocation>)mockAsynEnumerable3).GetAsyncEnumerator());
            mockUnitManagerDbContext.Setup(x => x.Set <UserRoleLocation>()).Returns(mockUserRoleLocation.Object);
            mockUnitManagerDbContext.Setup(x => x.UserRoleLocations).Returns(mockUserRoleLocation.Object);
            mockUnitManagerDbContext.Setup(c => c.UserRoleLocations.AsNoTracking()).Returns(mockUserRoleLocation.Object);

            // 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);

            // Setup for Postcode
            var mockAsynEnumerable5 = new DbAsyncEnumerable <Postcode>(postcodeList);
            var mockPostcode        = MockDbSet(postcodeList);

            mockPostcode.As <IQueryable>().Setup(mock => mock.Provider).Returns(mockAsynEnumerable5.AsQueryable().Provider);
            mockPostcode.As <IQueryable>().Setup(mock => mock.Expression).Returns(mockAsynEnumerable5.AsQueryable().Expression);
            mockPostcode.As <IQueryable>().Setup(mock => mock.ElementType).Returns(mockAsynEnumerable5.AsQueryable().ElementType);
            mockPostcode.As <IDbAsyncEnumerable>().Setup(mock => mock.GetAsyncEnumerator()).Returns(((IDbAsyncEnumerable <Postcode>)mockAsynEnumerable5).GetAsyncEnumerator());
            mockUnitManagerDbContext.Setup(x => x.Set <Postcode>()).Returns(mockPostcode.Object);
            mockUnitManagerDbContext.Setup(x => x.Postcodes).Returns(mockPostcode.Object);
            mockUnitManagerDbContext.Setup(c => c.Postcodes.AsNoTracking()).Returns(mockPostcode.Object);

            // Setup for Postcode
            var mockAsynEnumerable6       = new DbAsyncEnumerable <LocationReferenceData>(locationReferenceDataList);
            var mockLocationReferenceData = MockDbSet(locationReferenceDataList);

            mockLocationReferenceData.As <IQueryable>().Setup(mock => mock.Provider).Returns(mockAsynEnumerable6.AsQueryable().Provider);
            mockLocationReferenceData.As <IQueryable>().Setup(mock => mock.Expression).Returns(mockAsynEnumerable6.AsQueryable().Expression);
            mockLocationReferenceData.As <IQueryable>().Setup(mock => mock.ElementType).Returns(mockAsynEnumerable6.AsQueryable().ElementType);
            mockLocationReferenceData.As <IDbAsyncEnumerable>().Setup(mock => mock.GetAsyncEnumerator()).Returns(((IDbAsyncEnumerable <LocationReferenceData>)mockAsynEnumerable6).GetAsyncEnumerator());
            mockUnitManagerDbContext.Setup(x => x.Set <LocationReferenceData>()).Returns(mockLocationReferenceData.Object);
            mockUnitManagerDbContext.Setup(x => x.LocationReferenceDatas).Returns(mockLocationReferenceData.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);

            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 UnitLocationDataService(mockDatabaseFactory.Object, mockILoggingHelper.Object);
        }