ldc-arcadia-genesis-php-client/tests/Unit/ApiQueryBuilderTest.php
2026-04-16 09:48:49 +02:00

67 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}");
});
});