68 lines
1.8 KiB
PHP
68 lines
1.8 KiB
PHP
|
|
<?php
|
||
|
|
|
||
|
|
declare(strict_types=1);
|
||
|
|
|
||
|
|
use Uwil\ArcadiaGenesisPhpClient\Lib\ApiQueryBuilder\TableQueryBuilder;
|
||
|
|
use Uwil\ArcadiaGenesisPhpClient\Lib\Pagination;
|
||
|
|
|
||
|
|
describe('Api Query Builder', function (): void {
|
||
|
|
|
||
|
|
it('cannot be directly instanciated', function (): void {
|
||
|
|
new TableQueryBuilder();
|
||
|
|
})->throws(\Error::class);
|
||
|
|
|
||
|
|
it('can select * from table', function (): void {
|
||
|
|
// GIVEN
|
||
|
|
$table = 'someTable';
|
||
|
|
$qBuilder = TableQueryBuilder::query();
|
||
|
|
|
||
|
|
// WHEN
|
||
|
|
$queryString = $qBuilder
|
||
|
|
->from($table)
|
||
|
|
->selectAll()
|
||
|
|
->toQueryString();
|
||
|
|
$queryString2 = $qBuilder
|
||
|
|
->from($table)
|
||
|
|
->toQueryString();
|
||
|
|
|
||
|
|
// THEN
|
||
|
|
expect($queryString)->toBe("table={$table}");
|
||
|
|
expect($queryString2)->toBe("table={$table}");
|
||
|
|
});
|
||
|
|
|
||
|
|
it('can select columns', function (): void {
|
||
|
|
// GIVEN
|
||
|
|
$table = 'someTable';
|
||
|
|
$columns = ['col1', 'col2'];
|
||
|
|
$qBuilder = TableQueryBuilder::query();
|
||
|
|
|
||
|
|
// WHEN
|
||
|
|
$queryString = $qBuilder
|
||
|
|
->from($table)
|
||
|
|
->select(...$columns)
|
||
|
|
->toQueryString();
|
||
|
|
|
||
|
|
// THEN
|
||
|
|
expect($queryString)->toBe("table={$table}&s_cols={$columns[0]}|{$columns[1]}");
|
||
|
|
});
|
||
|
|
|
||
|
|
it('can paginate', function (): void {
|
||
|
|
// GIVEN
|
||
|
|
$table = 'someTable';
|
||
|
|
$qBuilder = TableQueryBuilder::query();
|
||
|
|
$pageNumber = 2;
|
||
|
|
$pageSize = 3;
|
||
|
|
$pagination = Pagination::ofPage($pageNumber, $pageSize);
|
||
|
|
|
||
|
|
// WHEN
|
||
|
|
$queryString = $qBuilder
|
||
|
|
->from($table)
|
||
|
|
->selectAll()
|
||
|
|
->paginate($pagination)
|
||
|
|
->toQueryString();
|
||
|
|
|
||
|
|
// THEN
|
||
|
|
expect($queryString)->toBe("table={$table}&page={$pageNumber}&page_size={$pageSize}");
|
||
|
|
});
|
||
|
|
});
|