/// <summary>
 /// Initializes a new instance of the Network Manager Business Service class.
 /// </summary>
 /// <param name="streetNetworkDataService">The street network data service</param>
 /// <param name="networkManagerIntegrationService">The street network data service</param>
 /// <param name="osRoadLinkDataService">The Ordnance Survey road link data service</param>
 /// <param name="roadNameDataService">The road name data service</param>
 /// <param name="loggingHelper">The helper class object for logging</param>
 public NetworkManagerBusinessService(IStreetNetworkDataService streetNetworkDataService, INetworkManagerIntegrationService networkManagerIntegrationService, IOSRoadLinkDataService osRoadLinkDataService, IRoadNameDataService roadNameDataService, ILoggingHelper loggingHelper)
 {
     this.streetNetworkDataService         = streetNetworkDataService;
     this.networkManagerIntegrationService = networkManagerIntegrationService;
     this.osRoadLinkDataService            = osRoadLinkDataService;
     this.roadNameDataService = roadNameDataService;
     this.loggingHelper       = loggingHelper;
 }
Пример #2
0
        protected override void OnSetup()
        {
            SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory);
            loggingHelperMock = CreateMock <ILoggingHelper>();

            unit1Guid = Guid.NewGuid();
            unit2Guid = Guid.NewGuid();
            unit3Guid = Guid.NewGuid();
            user1Id   = System.Guid.NewGuid();
            user2Id   = System.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);

            accessLinkLine = DbGeometry.LineFromText("LINESTRING (488938 197021, 488929.9088937093 197036.37310195228)", 27700);

            var streetNames = new List <StreetName>()
            {
                new StreetName()
                {
                    ID = Guid.NewGuid(), StreetType = "t1", Descriptor = "d1", NationalRoadCode = "Testroad1", DesignatedName = "XYZ1", Geometry = unitBoundary
                },
                new StreetName()
                {
                    ID = Guid.NewGuid(), StreetType = "t1", Descriptor = "d1", NationalRoadCode = "Testroad2", DesignatedName = "XYZ2", Geometry = unitBoundary
                },
                new StreetName()
                {
                    ID = Guid.NewGuid(), StreetType = "t1", Descriptor = "d1", NationalRoadCode = "Testroad3", DesignatedName = "XYZ3", Geometry = unitBoundary
                },
                new StreetName()
                {
                    ID = Guid.NewGuid(), StreetType = "t1", Descriptor = "d1", NationalRoadCode = "Testroad4", DesignatedName = "XYZ4", Geometry = unitBoundary
                },
                new StreetName()
                {
                    ID = Guid.NewGuid(), StreetType = "t1", Descriptor = "d1", NationalRoadCode = "Testroad5", DesignatedName = "XYZ5", Geometry = unitBoundary
                },
                new StreetName()
                {
                    ID = Guid.NewGuid(), StreetType = "t1", Descriptor = "d1", NationalRoadCode = "Testroad6", DesignatedName = "XYZ6", Geometry = unitBoundary
                },
                new StreetName()
                {
                    ID = Guid.NewGuid(), StreetType = "t1", Descriptor = "d1", NationalRoadCode = "Testroad7", DesignatedName = "XYZ7", Geometry = unitBoundary
                }
            };

            var unitLocation = new List <UnitLocation>()
            {
                new UnitLocation()
                {
                    UnitName = "unit1", ExternalId = "extunit1", ID = unit1Guid, UnitBoundryPolygon = unitBoundary, UserRoleUnits = new List <UserRoleUnit> {
                        new UserRoleUnit {
                            Unit_GUID = unit1Guid, User_GUID = user1Id
                        }
                    }
                },
                new UnitLocation()
                {
                    UnitName = "unit2", ExternalId = "extunit2", ID = unit2Guid, UnitBoundryPolygon = unitBoundary, UserRoleUnits = new List <UserRoleUnit> {
                        new UserRoleUnit {
                            Unit_GUID = unit2Guid, User_GUID = user1Id
                        }
                    }
                },
                new UnitLocation()
                {
                    UnitName = "unit3", ExternalId = "extunit2", ID = unit3Guid, UnitBoundryPolygon = unitBoundary, UserRoleUnits = new List <UserRoleUnit> {
                        new UserRoleUnit {
                            Unit_GUID = unit3Guid, User_GUID = user2Id
                        }
                    }
                }
            };

            var networkLink = new List <NetworkLink>()
            {
                new NetworkLink()
                {
                    LinkGeometry = accessLinkLine
                }
            };

            var mockAsynEnumerable           = new DbAsyncEnumerable <StreetName>(streetNames);
            var mockStreetNetworkDataService = MockDbSet(streetNames);

            mockStreetNetworkDataService.As <IQueryable>().Setup(mock => mock.Provider).Returns(mockAsynEnumerable.AsQueryable().Provider);
            mockStreetNetworkDataService.As <IQueryable>().Setup(mock => mock.Expression).Returns(mockAsynEnumerable.AsQueryable().Expression);
            mockStreetNetworkDataService.As <IQueryable>().Setup(mock => mock.ElementType).Returns(mockAsynEnumerable.AsQueryable().ElementType);
            mockStreetNetworkDataService.As <IDbAsyncEnumerable>().Setup(mock => mock.GetAsyncEnumerator()).Returns(((IDbAsyncEnumerable <StreetName>)mockAsynEnumerable).GetAsyncEnumerator());
            mockRMDBContext = CreateMock <RMDBContext>();
            mockRMDBContext.Setup(x => x.Set <StreetName>()).Returns(mockStreetNetworkDataService.Object);
            mockRMDBContext.Setup(x => x.StreetNames).Returns(mockStreetNetworkDataService.Object);

            var mockAsynEnumerable2           = new DbAsyncEnumerable <UnitLocation>(unitLocation);
            var mockStreetNetworkDataService2 = MockDbSet(unitLocation);

            mockStreetNetworkDataService2.As <IQueryable>().Setup(mock => mock.Provider).Returns(mockAsynEnumerable2.AsQueryable().Provider);
            mockStreetNetworkDataService2.As <IQueryable>().Setup(mock => mock.Expression).Returns(mockAsynEnumerable2.AsQueryable().Expression);
            mockStreetNetworkDataService2.As <IQueryable>().Setup(mock => mock.ElementType).Returns(mockAsynEnumerable2.AsQueryable().ElementType);
            mockStreetNetworkDataService2.As <IDbAsyncEnumerable>().Setup(mock => mock.GetAsyncEnumerator()).Returns(((IDbAsyncEnumerable <UnitLocation>)mockAsynEnumerable2).GetAsyncEnumerator());
            mockRMDBContext.Setup(x => x.Set <UnitLocation>()).Returns(mockStreetNetworkDataService2.Object);
            mockRMDBContext.Setup(x => x.UnitLocations).Returns(mockStreetNetworkDataService2.Object);

            var mockAsynEnumerable3 = new DbAsyncEnumerable <NetworkLink>(networkLink);
            var mockNetworkLink     = MockDbSet(networkLink);

            mockNetworkLink.As <IQueryable>().Setup(mock => mock.Provider).Returns(mockAsynEnumerable3.AsQueryable().Provider);
            mockNetworkLink.As <IQueryable>().Setup(mock => mock.Expression).Returns(mockAsynEnumerable3.AsQueryable().Expression);
            mockNetworkLink.As <IQueryable>().Setup(mock => mock.ElementType).Returns(mockAsynEnumerable3.AsQueryable().ElementType);
            mockNetworkLink.As <IDbAsyncEnumerable>().Setup(mock => mock.GetAsyncEnumerator()).Returns(((IDbAsyncEnumerable <NetworkLink>)mockAsynEnumerable3).GetAsyncEnumerator());
            mockRMDBContext.Setup(x => x.Set <NetworkLink>()).Returns(mockNetworkLink.Object);
            mockRMDBContext.Setup(x => x.NetworkLinks).Returns(mockNetworkLink.Object);
            mockRMDBContext.Setup(x => x.NetworkLinks.AsNoTracking()).Returns(mockNetworkLink.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 StreetNetworkDataService(mockDatabaseFactory.Object, loggingHelperMock.Object);
        }
        /// <summary>
        /// Data and Methods setup required to run test methods
        /// </summary>
        protected override void OnSetup()
        {
            // Data setup
            unit1Guid                = new Guid("8534AA41-391F-4579-A18D-D7EDF5B5F918");
            currentUserUnitType      = "Delivery Office";
            mockIConfigurationHelper = CreateMock <IConfigurationHelper>();

            SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory);

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

            accessLinkLine = DbGeometry.LineFromText("LINESTRING (488938 197021, 488929.9088937093 197036.37310195228)", 27700);
            point          = DbGeometry.PointFromText("POINT (488938 197021)", 27700);

            var streetNamesList = new List <StreetName>()
            {
                new StreetName()
                {
                    ID = new Guid("8134AA41-391F-4579-A18D-D7EDF5B5F918"), StreetType = "t1", Descriptor = "d1", NationalRoadCode = "Testroad1", DesignatedName = "XYZ1", Geometry = unitBoundary
                },
                new StreetName()
                {
                    ID = new Guid("8234AA41-391F-4579-A18D-D7EDF5B5F918"), StreetType = "t1", Descriptor = "d1", NationalRoadCode = "Testroad2", DesignatedName = "XYZ2", Geometry = unitBoundary
                },
                new StreetName()
                {
                    ID = new Guid("8334AA41-391F-4579-A18D-D7EDF5B5F918"), StreetType = "t1", Descriptor = "d1", NationalRoadCode = "Testroad3", DesignatedName = "XYZ3", Geometry = unitBoundary
                },
                new StreetName()
                {
                    ID = new Guid("8434AA41-391F-4579-A18D-D7EDF5B5F918"), StreetType = "t1", Descriptor = "d1", NationalRoadCode = "Testroad4", DesignatedName = "XYZ4", Geometry = unitBoundary
                },
                new StreetName()
                {
                    ID = new Guid("8534AA41-391F-4579-A18D-D7EDF5B5F918"), StreetType = "t1", Descriptor = "d1", NationalRoadCode = "Testroad5", DesignatedName = "XYZ5", Geometry = unitBoundary
                },
                new StreetName()
                {
                    ID = new Guid("8634AA41-391F-4579-A18D-D7EDF5B5F918"), StreetType = "t1", Descriptor = "d1", NationalRoadCode = "Testroad6", DesignatedName = "XYZ6", Geometry = unitBoundary
                },
                new StreetName()
                {
                    ID = new Guid("8734AA41-391F-4579-A18D-D7EDF5B5F918"), StreetType = "t1", Descriptor = "d1", NationalRoadCode = "Testroad7", DesignatedName = "XYZ7", Geometry = unitBoundary
                }
            };

            var networkLinkList = new List <NetworkLink>()
            {
                new NetworkLink()
                {
                    LinkGeometry        = accessLinkLine,
                    StreetNameGUID      = new Guid("8134AA41-391F-4579-A18D-D7EDF5B5F918"),
                    NetworkLinkTypeGUID = Guid.Empty,
                    ID = new Guid("8134AA41-391F-4579-A18D-D7EDF5B5F911")
                }
            };

            List <Location> locationList = new List <Location>()
            {
                new Location()
                {
                    ID    = unit1Guid,
                    Shape = unitBoundary
                }
            };

            referenceDataCategoryList = new List <ReferenceDataCategoryDTO>()
            {
                new ReferenceDataCategoryDTO()
                {
                    CategoryName   = ReferenceDataCategoryNames.NetworkLinkType,
                    ReferenceDatas = new List <ReferenceDataDTO>()
                    {
                        new ReferenceDataDTO()
                        {
                            ReferenceDataValue = ReferenceDataValues.NetworkLinkPathLink
                        }
                    },
                    Id = new Guid("1534AA41-391F-4579-A18D-D7EDF5B5F918")
                },

                new ReferenceDataCategoryDTO()
                {
                    CategoryName   = ReferenceDataCategoryNames.NetworkLinkType,
                    ReferenceDatas = new List <ReferenceDataDTO>()
                    {
                        new ReferenceDataDTO()
                        {
                            ReferenceDataValue = ReferenceDataValues.NetworkLinkRoadLink
                        }
                    },
                    Id = new Guid("2534AA41-391F-4579-A18D-D7EDF5B5F918")
                },

                new ReferenceDataCategoryDTO()
                {
                    CategoryName   = ReferenceDataCategoryNames.AccessLinkParameters,
                    ReferenceDatas = new List <ReferenceDataDTO>()
                    {
                        new ReferenceDataDTO()
                        {
                            ReferenceDataName  = ReferenceDataValues.AccessLinkDiffRoadMaxDistance,
                            ReferenceDataValue = "5"
                        }
                    },
                    Id = new Guid("3534AA41-391F-4579-A18D-D7EDF5B5F918")
                }
            };

            mockNetworkDBContext = CreateMock <NetworkDBContext>();
            mockILoggingHelper   = CreateMock <ILoggingHelper>();

            // Setup for StreetName
            var mockAsynEnumerable = new DbAsyncEnumerable <StreetName>(streetNamesList);
            var mockStreetName     = MockDbSet(streetNamesList);

            mockStreetName.As <IQueryable>().Setup(mock => mock.Provider).Returns(mockAsynEnumerable.AsQueryable().Provider);
            mockStreetName.As <IQueryable>().Setup(mock => mock.Expression).Returns(mockAsynEnumerable.AsQueryable().Expression);
            mockStreetName.As <IQueryable>().Setup(mock => mock.ElementType).Returns(mockAsynEnumerable.AsQueryable().ElementType);
            mockStreetName.As <IDbAsyncEnumerable>().Setup(mock => mock.GetAsyncEnumerator()).Returns(((IDbAsyncEnumerable <StreetName>)mockAsynEnumerable).GetAsyncEnumerator());
            mockNetworkDBContext.Setup(x => x.Set <StreetName>()).Returns(mockStreetName.Object);
            mockNetworkDBContext.Setup(x => x.StreetNames).Returns(mockStreetName.Object);
            mockStreetName.Setup(x => x.AsNoTracking()).Returns(mockStreetName.Object);

            // Setup for Location
            var mockAsynEnumerable1 = new DbAsyncEnumerable <Location>(locationList);
            var mockLocation        = MockDbSet(locationList);

            mockLocation.As <IQueryable>().Setup(mock => mock.Provider).Returns(mockAsynEnumerable1.AsQueryable().Provider);
            mockLocation.As <IQueryable>().Setup(mock => mock.Expression).Returns(mockAsynEnumerable1.AsQueryable().Expression);
            mockLocation.As <IQueryable>().Setup(mock => mock.ElementType).Returns(mockAsynEnumerable1.AsQueryable().ElementType);
            mockLocation.As <IDbAsyncEnumerable>().Setup(mock => mock.GetAsyncEnumerator()).Returns(((IDbAsyncEnumerable <Location>)mockAsynEnumerable1).GetAsyncEnumerator());
            mockNetworkDBContext.Setup(x => x.Set <Location>()).Returns(mockLocation.Object);
            mockNetworkDBContext.Setup(x => x.Locations).Returns(mockLocation.Object);
            mockLocation.Setup(x => x.AsNoTracking()).Returns(mockLocation.Object);

            // Setup for NetworkLink
            var mockAsynEnumerable3 = new DbAsyncEnumerable <NetworkLink>(networkLinkList);
            var mockNetworkLink     = MockDbSet(networkLinkList);

            mockNetworkLink.As <IQueryable>().Setup(mock => mock.Provider).Returns(mockAsynEnumerable3.AsQueryable().Provider);
            mockNetworkLink.As <IQueryable>().Setup(mock => mock.Expression).Returns(mockAsynEnumerable3.AsQueryable().Expression);
            mockNetworkLink.As <IQueryable>().Setup(mock => mock.ElementType).Returns(mockAsynEnumerable3.AsQueryable().ElementType);
            mockNetworkLink.As <IDbAsyncEnumerable>().Setup(mock => mock.GetAsyncEnumerator()).Returns(((IDbAsyncEnumerable <NetworkLink>)mockAsynEnumerable3).GetAsyncEnumerator());
            mockNetworkDBContext.Setup(x => x.Set <NetworkLink>()).Returns(mockNetworkLink.Object);
            mockNetworkDBContext.Setup(x => x.NetworkLinks).Returns(mockNetworkLink.Object);
            mockNetworkDBContext.Setup(x => x.NetworkLinks.AsNoTracking()).Returns(mockNetworkLink.Object);

            // Mock trace manager
            var rmTraceManagerMock = new Mock <IRMTraceManager>();

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

            mockIConfigurationHelper.Setup(x => x.ReadAppSettingsConfigurationValues(It.IsAny <string>())).Returns("5");
            mockDatabaseFactory = CreateMock <IDatabaseFactory <NetworkDBContext> >();
            mockDatabaseFactory.Setup(x => x.Get()).Returns(mockNetworkDBContext.Object);
            testCandidate = new StreetNetworkDataService(mockDatabaseFactory.Object, mockILoggingHelper.Object, mockIConfigurationHelper.Object);
        }