public void GetBudgetsByCategorySummary_Tests()
        {
            #region Data
            int      channelid = 1, mrmUserId = 25; string fy = "2016", budgettype = "On Air,Off Air,Paid Media", networkLogin = "******";
            string[] total = budgettype.Split(',').ToArray();
            BudgetByCategorySumViewModel summarylist1 = new BudgetByCategorySumViewModel
            {
                Category              = "ABC",
                ActualAmount          = 5256,
                CommittedAmount       = 3000,
                AllocatedBudgetAmount = 2500,
                BudgetAmount          = 4000,
                EstimateToComplete    = 4500,
                EstimatedFinalCost    = 5000,
                OverUnder             = 50
            };
            BudgetByCategorySumViewModel summarylist2 = new BudgetByCategorySumViewModel
            {
                Category              = "Aquired Movies",
                ActualAmount          = 6456,
                CommittedAmount       = 4000,
                AllocatedBudgetAmount = 3500,
                BudgetAmount          = 5000,
                EstimateToComplete    = 5500,
                EstimatedFinalCost    = 4000,
                OverUnder             = 100
            };

            List <BudgetbyCategoryRollup> rollups = new List <BudgetbyCategoryRollup>();
            rollups.Add(new BudgetbyCategoryRollup {
                ActualAmount = 5254, CategoryName = "ABC", CategoryId = 1, BudgetTypeName = "On Air"
            });
            rollups.Add(new BudgetbyCategoryRollup {
                ActualAmount = 4250, CategoryName = "Aquired Movies", CategoryId = 2, BudgetTypeName = "Off Air"
            });
            rollups.Add(new BudgetbyCategoryRollup {
                ActualAmount = 6250, CategoryName = "Aquired Series", CategoryId = 3, BudgetTypeName = "On Air"
            });
            rollups.Add(new BudgetbyCategoryRollup {
                ActualAmount = 7285, CategoryName = "Ad Sales", CategoryId = 4, BudgetTypeName = "Paid Media"
            });
            List <TypeOfWorkBudgetModel> BudgetTypes = new List <TypeOfWorkBudgetModel>();
            BudgetTypes.Add(new TypeOfWorkBudgetModel {
                BudgetTypeId = 1, BudgetTypeName = "On Air"
            });
            BudgetTypes.Add(new TypeOfWorkBudgetModel {
                BudgetTypeId = 2, BudgetTypeName = "Off Air"
            });
            BudgetTypes.Add(new TypeOfWorkBudgetModel {
                BudgetTypeId = 3, BudgetTypeName = "Paid Media"
            });
            BudgetTypes.Add(new TypeOfWorkBudgetModel {
                BudgetTypeId = 4, BudgetTypeName = "Brain Design"
            });
            List <BudgetByCategorySumViewModel> categorysummary = new List <BudgetByCategorySumViewModel>();
            categorysummary.Add(summarylist1);
            categorysummary.Add(summarylist2);
            List <BudgetbyCategoryRollup> Categoryrollup = new List <BudgetbyCategoryRollup>();
            Categoryrollup.Add(new BudgetbyCategoryRollup {
                ActualAmount = 5241, BudgetAmount = 450, BudgetTypeId = 1, BudgetTypeName = "On Air", CategoryId = 1, CategoryName = "ABC"
            });
            Categoryrollup.Add(new BudgetbyCategoryRollup {
                ActualAmount = 3250, BudgetAmount = 350, BudgetTypeId = 1, BudgetTypeName = "On Air", CategoryId = 2, CategoryName = "XYZ"
            });
            Categoryrollup.Add(new BudgetbyCategoryRollup {
                ActualAmount = 4250, BudgetAmount = 300, BudgetTypeId = 2, BudgetTypeName = "Off Air", CategoryId = 3, CategoryName = "PQR"
            });
            Categoryrollup.Add(new BudgetbyCategoryRollup {
                ActualAmount = 3525, BudgetAmount = 200, BudgetTypeId = 3, BudgetTypeName = "Paid Media", CategoryId = 4, CategoryName = "MNO"
            });
            IQueryable <BudgetbyCategoryRollup> rollupslist = Categoryrollup.AsQueryable();
            #endregion
            #region Mock
            mockbudgetService.Setup(x => x.GetBudgetsByCategory(It.IsAny <int>(), It.IsAny <string>())).Returns(rollups);
            mockbudgetService.Setup(x => x.GetTypeOfWorkBudgets()).Returns(BudgetTypes);
            mockBudgetByCategoryRepository.Setup(x => x.GetMany(It.IsAny <Expression <Func <BudgetbyCategoryRollup, bool> > >())).Returns(rollupslist);
            mocktypeOfWorkRepository.Setup(x => x.GetTypeOfWorkBudgets()).Returns(BudgetTypes);

            //Budget Service Mock
            var budgetService    = new BudgetServiceMock(iTypeOfWork: mocktypeOfWorkRepository.Object, budgetByCategory: mockBudgetByCategoryRepository.Object);
            var BudgetController = new BudgetControllerMock(budgetservice: budgetService);

            #endregion
            //Assertions
            #region Assertions
            Assert.IsNotNull(BudgetTypes);
            Assert.IsTrue(BudgetTypes.Count == 4);
            Assert.IsTrue(BudgetTypes.ElementAt(0).BudgetTypeId == 1);
            Assert.IsTrue(BudgetTypes.ElementAt(1).BudgetTypeName == "Off Air");
            Assert.IsTrue(BudgetTypes.ElementAt(2).BudgetTypeId == 3);

            Assert.IsNotNull(categorysummary);
            var rollupsresult = budgetService.GetBudgetsByCategory(channelid, fy);
            Assert.IsNotNull(rollupsresult);

            mockbudgetService.Verify();
            mockBudgetByCategoryRepository.Verify();

            rollupsresult = rollupsresult.Where(p => total.Contains(p.BudgetTypeName)).ToList();
            Assert.IsNotNull(rollupsresult);

            categorysummary = BudgetController.GetBudgetsByCategorySummary(1, budgettype, fy, mrmUserId, networkLogin);
            Assert.IsNotNull(categorysummary);

            categorysummary = BudgetController.GetBudgetsByCategorySummary(1, budgettype, fy, mrmUserId, networkLogin);
            Assert.IsNotNull(categorysummary);


            #endregion
        }