예제 #1
0
        public void BooleanFilterTests()
        {
            const string filter      = "true";
            var          filterCount = DataSource.Where(x => x.IsShipped == bool.Parse(filter));

            var data = filterCount.Take(PageSize).ToList();

            var request = new GridDataRequest
            {
                Take    = PageSize,
                Skip    = 0,
                Columns = Thing.GetColumnsWithBooleanFilter(filter, CompareOperators.Equals)
            };

            var response = request.CreateGridDataResponse(DataSource);

            Assert.AreEqual(data.Count, response.Payload.Count, "Same length");

            Assert.AreEqual(filterCount.Count(), response.FilteredRecordCount, "Total filtered rows matching");
        }
예제 #2
0
        public void MultipleFilterTest()
        {
            var filters     = new[] { "blue", "red" };
            var sut         = DataSource.ToList();
            var filterCount = sut.Where(x => x.Color.Equals(filters[0]) || x.Color.Equals(filters[1]));
            var data        = filterCount.Take(PageSize).ToList();

            var request = new GridDataRequest
            {
                Take    = PageSize,
                Skip    = 0,
                Columns = Thing.GetColumnsWithMultipleFilter(filters, CompareOperators.Multiple)
            };

            var response = request.CreateGridDataResponse(sut.AsQueryable());

            Assert.AreEqual(data.Count, response.Payload.Count, "Same length");

            Assert.AreEqual(filterCount.Count(), response.FilteredRecordCount, "Total filtered rows matching");
        }
        public void DateTimeEqualFilterTest()
        {
            var filter = "2020-04-15T05:00:00.000Z";

            var filterCount = DataSource.Where(x => x.Date.ToString(CultureInfo.InvariantCulture) == filter);

            var data = filterCount.Take(PageSize).ToList();

            var request = new GridDataRequest
            {
                Take    = PageSize,
                Skip    = 0,
                Columns = Thing.GetColumnsWithDateFilter(filter, CompareOperators.Equals, DataType.Date)
            };

            var response = request.CreateGridDataResponse(DataSource);

            Assert.AreEqual(data.Count, response.Payload.Count, "Same length");

            Assert.AreEqual(filterCount.Count(), response.FilteredRecordCount, "Total filtered rows matching");
        }
예제 #4
0
    public void SimpleSearch()
    {
        var dataSource = SampleEntities.GenerateData().AsQueryable();
        var data       = dataSource.Where(x => x.Name.Contains(SearchText)).Take(PageSize).ToList();

        var request = new GridDataRequest
        {
            Take       = PageSize,
            Skip       = 0,
            SearchText = SearchText,
            Columns    = Thing.GetColumns()
        };

        var response = request.CreateGridDataResponse(dataSource);

        Assert.AreEqual(data.Count, response.Payload.Count, "Same length");
        Assert.AreEqual(data.First().Id, response.Payload.First().First(), "Same first item");

        Assert.AreEqual(dataSource.Count(x => x.Name.Contains(SearchText)), response.FilteredRecordCount,
                        "Total filtered rows matching");
    }
예제 #5
0
 public async Task <IHttpActionResult> GridDataWithFormat([FromBody] GridDataRequest request)
 {
     using (var context = new SampleDbContext())
     {
         return
             (Ok(
                  await
                  Task.Run(
                      () =>
                      request.CreateGridDataResponse(
                          context.Orders.AsNoTracking().Select(x => new OrderDto
         {
             Amount = x.Amount.ToString(),
             CustomerName = x.CustomerName,
             IsShipped = x.IsShipped.ToString(),
             OrderID = x.OrderID,
             ShippedDate = x.ShippedDate.ToString(),
             ShipperCity = x.ShipperCity
         }), FormatOutput))));
     }
 }
예제 #6
0
        public void SimpleList()
        {
            var dataSource = _context.Things;
            var data       = dataSource.Take(PageSize).ToList();

            Assert.AreEqual(PageSize, data.Count, "Set has 10 items");

            var request = new GridDataRequest()
            {
                Take    = PageSize,
                Skip    = 0,
                Search  = new Filter(),
                Columns = Thing.GetColumns()
            };

            var response = request.CreateGridDataResponse(dataSource);

            Assert.AreEqual(data.Count, response.Payload.Count, "Same length");
            Assert.AreEqual(data.First().Id, response.Payload.First().First(), "Same first item");

            Assert.AreEqual(dataSource.Count(), response.TotalRecordCount, "Total rows matching");
        }
        public void BetweenFilterTest()
        {
            const int a           = 10;
            var       b           = new[] { "30" };
            var       filterCount = DataSource.Where(x => x.Id >= a && x.Id <= int.Parse(b[0]));
            var       data        = filterCount.Take(PageSize).ToList();

            var request = new GridDataRequest
            {
                Take    = PageSize,
                Skip    = 0,
                Columns = Thing.GetColumnsWithBetweenFilter(a.ToString(), b)
            };

            var response = request.CreateGridDataResponse(DataSource);

            Assert.AreEqual(data.Count, response.Payload.Count, "Same length");

            Assert.AreEqual(data[0].Id, response.Payload[0][0], "Same Id");

            Assert.AreEqual(filterCount.Count(), response.FilteredRecordCount, "Total filtered rows matching");
        }
예제 #8
0
    public void TestSimpleSearch2()
    {
        var dataSource = new List <Thing>();

        for (var i = 0; i < 422; i++)
        {
            dataSource.Add(new() { Color = "red" });
            dataSource.Add(new() { Color = "blue" });
            dataSource.Add(new() { Color = "yellow" });
        }

        var columns = new[]
        {
            new GridColumn
            {
                Name       = "Color",
                Sortable   = true,
                Searchable = true,
                DataType   = DataType.String,
                SortOrder  = 2
            },
            new GridColumn {
                Name = "Id"
            }
        };

        var request = new GridDataRequest
        {
            Columns        = columns,
            TimezoneOffset = 300,
            Take           = 100,
            Skip           = 300,
            SearchText     = "red",
        };
        var response = request.CreateGridDataResponse(dataSource.AsQueryable());

        Assert.AreEqual(4, response.CurrentPage);
    }
예제 #9
0
        public void TestSimpleAggregate()
        {
            var dataSource = _context.Things;
            var data       = dataSource.Take(PageSize).ToList();

            Assert.AreEqual(PageSize, data.Count, "Set has 10 items");

            var request = new GridDataRequest()
            {
                Take    = PageSize,
                Skip    = 0,
                Search  = new Filter(),
                Columns = Thing.GetColumnsWithAggregate()
            };

            var response = request.CreateGridDataResponse(dataSource);

            Assert.AreEqual(data.Count, response.Payload.Count, "Same length");
            Assert.AreEqual(data.First().Id, response.Payload.First().First(), "Same first item");

            Assert.AreEqual(dataSource.Sum(x => x.Number), (double)response.AggregationPayload["Number"], "Same average number");
            Assert.AreEqual(dataSource.Sum(x => x.DecimalNumber), (decimal)response.AggregationPayload["DecimalNumber"], "Same average decimal number");
        }
예제 #10
0
        public void SimpleSearch()
        {
            var dataSource = _context.Things;
            var data       = dataSource.Where(x => x.Name.Contains(SearchText)).Take(PageSize).ToList();

            var request = new GridDataRequest()
            {
                Take   = PageSize,
                Skip   = 0,
                Search = new Filter()
                {
                    Operator = CompareOperators.Auto,
                    Text     = SearchText
                },
                Columns = Thing.GetColumns()
            };

            var response = request.CreateGridDataResponse(dataSource);

            Assert.AreEqual(data.Count, response.Payload.Count, "Same length");
            Assert.AreEqual(data.First().Id, response.Payload.First().First(), "Same first item");

            Assert.AreEqual(dataSource.Count(x => x.Name.Contains(SearchText)), response.FilteredRecordCount, "Total filtered rows matching");
        }
예제 #11
0
 public async Task <GridDataResponse> PostPeople([JsonGridDataRequest] GridDataRequest gridDataRequest)
 => gridDataRequest.CreateGridDataResponse((await Person.GetDataAsync().ConfigureAwait(false)).AsQueryable());
예제 #12
0
 public object GridData([FromBody] GridDataRequest request) => request.CreateGridDataResponse(_context.Orders);
예제 #13
0
 public IActionResult GetGridData([FromBody] GridDataRequest request)
 {
     return(Ok(request.CreateGridDataResponse(_repository.GetData())));
 }
예제 #14
0
 public GridDataResponse GetGridData(GridDataRequest request)
 {
     return(request.CreateGridDataResponse(DummyDb.Products));
 }
예제 #15
0
 public IActionResult GridData([FromBody] GridDataRequest request)
 {
     return(Ok(request.CreateGridDataResponse(_context.Stops)));
 }
예제 #16
0
 public GridDataResponse GetPeople([JsonGridDataRequest] GridDataRequest model) => model.CreateGridDataResponse(People.AsQueryable());
예제 #17
0
 public IActionResult Post(GridDataRequest request)
 {
     return(Ok(request.CreateGridDataResponse(OrdersList.Orders.AsQueryable())));
 }
 public object GridData([FromBody] GridDataRequest request)
 {
     return(request.CreateGridDataResponse(List.AsQueryable()));
 }