public void BuildLogPaginationQuery(LogRecordPagination p, int[] selectedIndexes)
        {
            var a = new TestLogRecordManager();
            var q = a.QueryBuilder(p);

            var res = _records.Where(q).ToArray();

            res.Count().ShouldBe(selectedIndexes.Count());

            for (int i = 0; i < selectedIndexes.Length; i++)
            {
                res.ShouldContain(x => x == _records.ElementAt(selectedIndexes[i]));
            }
        }
        public async Task GetAll_ReturnsPage()
        {
            var page = new LogRecordPagination
            {
                Data = new[]
                {
                    new LogRecord {
                        Id = "a"
                    },
                    new LogRecord {
                        Id = "b"
                    },
                    new LogRecord {
                        Id = "c"
                    },
                    new LogRecord {
                        Id = "d"
                    },
                }
            };
            var lm = new Mock <ILogRecordManager>();

            lm.Setup(c => c.GetAll(It.IsAny <LogRecordPagination>()))
            .ReturnsAsync(page);

            var l    = new Mock <ILogger <LogRecordController> >();
            var ctrl = new LogRecordController(lm.Object, l.Object);

            var res = await ctrl.GetAll(logLevels : LogRecordLevel.Information);

            var ok = res.ShouldBeOfType <OkObjectResult>();
            var v  = ok.Value as LogRecordPagination;

            v.Data.Count().ShouldBe(page.Data.Count());
            for (int i = 0; i < v.Data.Count(); i++)
            {
                page.Data.ShouldContain(x => x.Id == v.Data.ElementAt(i).Id);
            }
        }
 public Func <LogRecord, bool> QueryBuilder(LogRecordPagination pagination) => BuildLogRecordPaginationQuery(pagination);