/// <summary> /// Creates automatic access link. /// </summary> /// <param name="accessLinkDto">Access link data object.</param> /// <returns>Success.</returns> public bool CreateAccessLink(AccessLinkDTO accessLinkDto) { try { using (loggingHelper.RMTraceManager.StartTrace("DataService.CreateAccessLink")) { string methodName = MethodBase.GetCurrentMethod().Name; loggingHelper.Log(methodName + LoggerTraceConstants.COLON + LoggerTraceConstants.MethodExecutionStarted, TraceEventType.Information, null, LoggerTraceConstants.Category, LoggerTraceConstants.AccessLinkAPIPriority, LoggerTraceConstants.AccessLinkDataServiceMethodEntryEventId, LoggerTraceConstants.Title); bool accessLinkCreationSuccess = false; AccessLink accessLink = new AccessLink { ID = Guid.NewGuid(), OperationalObjectPoint = accessLinkDto.OperationalObjectPoint, NetworkIntersectionPoint = accessLinkDto.NetworkIntersectionPoint, AccessLinkLine = accessLinkDto.AccessLinkLine, ActualLengthMeter = accessLinkDto.ActualLengthMeter, WorkloadLengthMeter = accessLinkDto.WorkloadLengthMeter, Approved = accessLinkDto.Approved, OperationalObject_GUID = accessLinkDto.OperationalObject_GUID, NetworkLink_GUID = accessLinkDto.NetworkLink_GUID, AccessLinkType_GUID = accessLinkDto.AccessLinkType_GUID, LinkStatus_GUID = accessLinkDto.LinkStatus_GUID, LinkDirection_GUID = accessLinkDto.LinkDirection_GUID, OperationalObjectType_GUID = accessLinkDto.OperationalObjectType_GUID }; DataContext.AccessLinks.Add(accessLink); accessLinkCreationSuccess = DataContext.SaveChanges() > 0; loggingHelper.Log(methodName + LoggerTraceConstants.COLON + LoggerTraceConstants.MethodExecutionCompleted, TraceEventType.Information, null, LoggerTraceConstants.Category, LoggerTraceConstants.AccessLinkAPIPriority, LoggerTraceConstants.AccessLinkDataServiceMethodExitEventId, LoggerTraceConstants.Title); return(accessLinkCreationSuccess); } } catch (DbUpdateException dbUpdateException) { throw new DataAccessException(dbUpdateException, string.Format(ErrorConstants.Err_SqlAddException, string.Concat("automatic access link"))); } }
protected override void OnSetup() { SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory); mockLoggingHelper = CreateMock <ILoggingHelper>(); unit1Guid = Guid.NewGuid(); unit2Guid = Guid.NewGuid(); unit3Guid = Guid.NewGuid(); user1Id = System.Guid.NewGuid(); user2Id = System.Guid.NewGuid(); var unitBoundary = DbGeometry.PolygonFromText("POLYGON((511570.8590967182 106965.35195621933, 511570.8590967182 107474.95297542136, 512474.1409032818 107474.95297542136, 512474.1409032818 106965.35195621933, 511570.8590967182 106965.35195621933))", 27700); 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 accessLink = new List <AccessLink>() { new AccessLink() { AccessLinkLine = unitBoundary, ID = Guid.NewGuid() } }; accessLinkDto = new AccessLinkDTO() { OperationalObjectPoint = DbGeometry.PointFromText("POINT (488938 197021)", 27700), NetworkIntersectionPoint = null, AccessLinkLine = null, ActualLengthMeter = 3, WorkloadLengthMeter = 5, Approved = true, OperationalObject_GUID = Guid.NewGuid() }; var mockAsynEnumerable = new DbAsyncEnumerable <AccessLink>(accessLink); var mockAccessLinkDataService = MockDbSet(accessLink); mockFmoDbContext = CreateMock <RMDBContext>(); mockFmoDbContext.Setup(x => x.Set <AccessLink>()).Returns(mockAccessLinkDataService.Object); mockFmoDbContext.Setup(x => x.AccessLinks).Returns(mockAccessLinkDataService.Object); mockFmoDbContext.Setup(c => c.AccessLinks.AsNoTracking()).Returns(mockAccessLinkDataService.Object); mockAccessLinkDataService.Setup(x => x.Include(It.IsAny <string>())).Returns(mockAccessLinkDataService.Object); var mockAsynEnumerable2 = new DbAsyncEnumerable <UnitLocation>(unitLocation); var mockAccessLinkDataService2 = MockDbSet(unitLocation); mockFmoDbContext.Setup(x => x.Set <UnitLocation>()).Returns(mockAccessLinkDataService2.Object); mockFmoDbContext.Setup(x => x.UnitLocations).Returns(mockAccessLinkDataService2.Object); mockFmoDbContext.Setup(c => c.UnitLocations.AsNoTracking()).Returns(mockAccessLinkDataService2.Object); mockAccessLinkDataService2.Setup(x => x.Include(It.IsAny <string>())).Returns(mockAccessLinkDataService2.Object); mockDatabaseFactory = CreateMock <IDatabaseFactory <RMDBContext> >(); mockDatabaseFactory.Setup(x => x.Get()).Returns(mockFmoDbContext.Object); var rmTraceManagerMock = new Mock <IRMTraceManager>(); rmTraceManagerMock.Setup(x => x.StartTrace(It.IsAny <string>(), It.IsAny <Guid>())); mockLoggingHelper.Setup(x => x.RMTraceManager).Returns(rmTraceManagerMock.Object); testCandidate = new AccessLinkDataService(mockDatabaseFactory.Object, mockLoggingHelper.Object); }