use Phalcon\Mvc\Model\Query\Builder; use DataTables\Adapters\QueryBuilder; use DataTables\ParamsParser; describe("QueryBuilder", function () { beforeEach(function () { $builder = new Builder(); $builder->columns('id, name, email, balance')->from("Spec\\Models\\User"); $this->builder = $builder; }); it("should work withot any filter", function () { $dataTables = new QueryBuilder(20); $dataTables->setBuilder($this->builder); $dataTables->setParser(new ParamsParser(10)); $response = $dataTables->getResponse(); expect($dataTables->getParser())->toBeA('object'); expect(array_keys($response))->toBe(['draw', 'recordsTotal', 'recordsFiltered', 'data']); expect($response['recordsTotal'])->toBe(100); expect($response['recordsFiltered'])->toBe(100); expect(count($response['data']))->toBe(10); foreach ($response['data'] as $data) { expect(array_keys($data))->toBe(['id', 'name', 'email', 'balance', 'DT_RowId']); expect($data['DT_RowId'])->toBe($data['id']); } }); describe("Limit&Offset", function () { beforeEach(function () { $_GET = ['start' => 2, 'length' => 1]; }); it("should work with start&length", function () { $dataTables = new QueryBuilder(20);