/// <summary> /// Save block sequence in database /// </summary> /// <param name="blockSequenceDTO">blockSequenceDTO</param> /// <param name="deliveryRouteId">deliveryRouteId</param> /// <returns>bool</returns> public async Task <bool> AddBlockSequence(BlockSequenceDTO blockSequenceDTO, Guid deliveryRouteId) { bool isBlockSequencInserted = false; try { string methodName = MethodHelper.GetActualAsyncMethodName(); using (loggingHelper.RMTraceManager.StartTrace(methodName)) { loggingHelper.Log(methodName + LoggerTraceConstants.COLON + LoggerTraceConstants.MethodExecutionStarted, TraceEventType.Verbose, null, LoggerTraceConstants.Category, LoggerTraceConstants.DeliveryRouteAPIPriority, LoggerTraceConstants.DeliveryRouteDataServiceMethodEntryEventId, LoggerTraceConstants.Title); var block_Guid = await(from dr in DataContext.DeliveryRouteBlocks.AsNoTracking() join b in DataContext.Blocks.AsNoTracking() on dr.Block_GUID equals b.ID where b.BlockType == UnSequenced && dr.DeliveryRoute_GUID == deliveryRouteId select b.ID).SingleOrDefaultAsync(); BlockSequence blockSequenceEntity = GenericMapper.Map <BlockSequenceDTO, BlockSequence>(blockSequenceDTO); blockSequenceEntity.Block_GUID = block_Guid; DataContext.BlockSequences.Add(blockSequenceEntity); DataContext.SaveChanges(); isBlockSequencInserted = true; loggingHelper.Log(methodName + LoggerTraceConstants.COLON + LoggerTraceConstants.MethodExecutionCompleted, TraceEventType.Verbose, null, LoggerTraceConstants.Category, LoggerTraceConstants.DeliveryRouteAPIPriority, LoggerTraceConstants.DeliveryRouteDataServiceMethodExitEventId, LoggerTraceConstants.Title); } } catch (DbUpdateConcurrencyException) { throw new DbConcurrencyException(ErrorConstants.Err_Concurrency); } catch (DbUpdateException dbUpdateException) { throw new DataAccessException(dbUpdateException, string.Format(ErrorConstants.Err_SqlAddException, string.Concat("creating block sequence for selected delivery route"))); } return(isBlockSequencInserted); }
protected override void OnSetup() { SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory); List <BlockSequence> blockSequence = new List <BlockSequence>() { }; mockLoggingHelper = CreateMock <ILoggingHelper>(); blockSequenceDTO = new BlockSequenceDTO() { Block_GUID = new Guid("019DBBBB-03FB-489C-8C8D-F1085E0D2A11") }; var blocks = new List <Block>() { new Block() { ID = new Guid("019DBBBB-03FB-489C-8C8D-F1085E0D2A16"), BlockType = "U" } }; var deliveryRouteBlocks = new List <DeliveryRouteBlock>() { new DeliveryRouteBlock() { Block_GUID = new Guid("019DBBBB-03FB-489C-8C8D-F1085E0D2A16"), DeliveryRoute_GUID = new Guid("119DBBBB-03FB-489C-8C8D-F1085E0D2A13") } }; var mockBlockSequenceDataServiceEnumerable = new DbAsyncEnumerable <BlockSequence>(blockSequence); var mockBlockSequenceDataServiceDataService = MockDbSet(blockSequence); mockBlockSequenceDataServiceDataService.As <IQueryable>().Setup(mock => mock.Provider).Returns(mockBlockSequenceDataServiceEnumerable.AsQueryable().Provider); mockBlockSequenceDataServiceDataService.As <IQueryable>().Setup(mock => mock.Expression).Returns(mockBlockSequenceDataServiceEnumerable.AsQueryable().Expression); mockBlockSequenceDataServiceDataService.As <IQueryable>().Setup(mock => mock.ElementType).Returns(mockBlockSequenceDataServiceEnumerable.AsQueryable().ElementType); mockBlockSequenceDataServiceDataService.As <IDbAsyncEnumerable>().Setup(mock => mock.GetAsyncEnumerator()).Returns(((IDbAsyncEnumerable <BlockSequence>)mockBlockSequenceDataServiceEnumerable).GetAsyncEnumerator()); mockRMDBContext = CreateMock <RMDBContext>(); mockRMDBContext.Setup(x => x.Set <BlockSequence>()).Returns(mockBlockSequenceDataServiceDataService.Object); mockRMDBContext.Setup(x => x.BlockSequences).Returns(mockBlockSequenceDataServiceDataService.Object); mockBlockSequenceDataServiceDataService.Setup(x => x.Include(It.IsAny <string>())).Returns(mockBlockSequenceDataServiceDataService.Object); mockRMDBContext.Setup(c => c.BlockSequences.AsNoTracking()).Returns(mockBlockSequenceDataServiceDataService.Object); var mockBlockEnumerable = new DbAsyncEnumerable <Block>(blocks); var mockBlock = MockDbSet(blocks); mockBlock.As <IQueryable>().Setup(mock => mock.Provider).Returns(mockBlockEnumerable.AsQueryable().Provider); mockBlock.As <IQueryable>().Setup(mock => mock.Expression).Returns(mockBlockEnumerable.AsQueryable().Expression); mockBlock.As <IQueryable>().Setup(mock => mock.ElementType).Returns(mockBlockEnumerable.AsQueryable().ElementType); mockBlock.As <IDbAsyncEnumerable>().Setup(mock => mock.GetAsyncEnumerator()).Returns(((IDbAsyncEnumerable <Block>)mockBlockEnumerable).GetAsyncEnumerator()); mockRMDBContext.Setup(x => x.Set <Block>()).Returns(mockBlock.Object); mockRMDBContext.Setup(x => x.Blocks).Returns(mockBlock.Object); mockBlock.Setup(x => x.Include(It.IsAny <string>())).Returns(mockBlock.Object); mockRMDBContext.Setup(c => c.Blocks.AsNoTracking()).Returns(mockBlock.Object); var mockDeliveryRouteBlockEnumerable = new DbAsyncEnumerable <DeliveryRouteBlock>(deliveryRouteBlocks); var mockDeliveryRouteBlock = MockDbSet(deliveryRouteBlocks); mockDeliveryRouteBlock.As <IQueryable>().Setup(mock => mock.Provider).Returns(mockDeliveryRouteBlockEnumerable.AsQueryable().Provider); mockDeliveryRouteBlock.As <IQueryable>().Setup(mock => mock.Expression).Returns(mockDeliveryRouteBlockEnumerable.AsQueryable().Expression); mockDeliveryRouteBlock.As <IQueryable>().Setup(mock => mock.ElementType).Returns(mockDeliveryRouteBlockEnumerable.AsQueryable().ElementType); mockDeliveryRouteBlock.As <IDbAsyncEnumerable>().Setup(mock => mock.GetAsyncEnumerator()).Returns(((IDbAsyncEnumerable <DeliveryRouteBlock>)mockDeliveryRouteBlockEnumerable).GetAsyncEnumerator()); mockRMDBContext.Setup(x => x.Set <DeliveryRouteBlock>()).Returns(mockDeliveryRouteBlock.Object); mockRMDBContext.Setup(x => x.DeliveryRouteBlocks).Returns(mockDeliveryRouteBlock.Object); mockDeliveryRouteBlock.Setup(x => x.Include(It.IsAny <string>())).Returns(mockDeliveryRouteBlock.Object); mockRMDBContext.Setup(c => c.DeliveryRouteBlocks.AsNoTracking()).Returns(mockDeliveryRouteBlock.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>())); mockLoggingHelper.Setup(x => x.RMTraceManager).Returns(rmTraceManagerMock.Object); testCandidate = new BlockSequenceDataService(mockDatabaseFactory.Object, mockLoggingHelper.Object); }