Пример #1
0
        /// <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);
        }
Пример #2
0
        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);
        }