public AccountReportPagingModel GetAccountReport(int skip, int take) { var pagingModel = new AccountReportPagingModel(); var accounts = new List <AccountReportModel>(); int accountsCount; using (IDbConnection db = new SqlConnection(connectionString)) { var lookup = new Dictionary <string, AccountReportModel>(); accountsCount = db.Query <int>(sqlCount).FirstOrDefault(); db.Query <AccountReportModel, TotalByMonth, AccountReportModel>(sql, (r, t) => { AccountReportModel mem; if (!lookup.TryGetValue(r.AccountNumber, out mem)) { lookup.Add(r.AccountNumber, mem = r); } if (mem.Totals == null) { mem.Totals = new List <TotalByMonth>(); } mem.Totals.Add(t); return(mem); }, new { @skip = skip, @take = take + skip + 1 }, splitOn: "splitId"); accounts = lookup.Values.ToList(); } pagingModel.AccountReportList = accounts; pagingModel.TotalCount = accountsCount; return(pagingModel); }
public void GetReport() { var skip = 0; var take = 5; var pagingModel = new AccountReportPagingModel(); var accounts = new List <AccountReportModel>(); for (var i = skip; i < take; i++) { var totals = new List <TotalByMonth>(); for (var j = skip; j < take; j++) { totals.Add(new TotalByMonth { Summ = Double.MaxValue / i, TransactionDate = DateTime.Now }); } accounts.Add(new AccountReportModel { AccountNumber = "1456325897452144", Totals = totals }); } pagingModel.AccountReportList = accounts; pagingModel.TotalCount = take; var uploadRepositoryMock = new Mock <IReportRepository>(MockBehavior.Strict); uploadRepositoryMock.Setup(repository => repository.GetAccountReport(skip, take)) .Returns(pagingModel); reportService = new ReportService(uploadRepositoryMock.Object); var result = reportService.GetAccountReport(skip, take); Assert.AreEqual(take, result.TotalCount); Assert.AreSame(accounts, result.AccountReportList); }