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);