2015-10-26 15:25:52 +01:00
|
|
|
<?php
|
2017-06-09 22:20:47 +02:00
|
|
|
declare(strict_types=1);
|
|
|
|
|
2015-10-26 15:25:52 +01:00
|
|
|
use Tester\Assert;
|
|
|
|
|
|
|
|
require __DIR__ . '/bootstrap.php';
|
|
|
|
|
|
|
|
|
|
|
|
class MockDriver extends Dibi\Drivers\SqlsrvDriver
|
|
|
|
{
|
2017-07-11 12:29:13 +02:00
|
|
|
public function __construct()
|
2017-07-11 12:27:26 +02:00
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2015-10-26 15:25:52 +01:00
|
|
|
|
2017-07-11 12:29:13 +02:00
|
|
|
public function connect(array &$config): void
|
2017-07-11 12:27:26 +02:00
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2015-10-26 15:25:52 +01:00
|
|
|
|
2017-07-11 12:29:13 +02:00
|
|
|
public function query(string $sql): ?Dibi\ResultDriver
|
2015-10-26 15:25:52 +01:00
|
|
|
{
|
2018-05-02 11:11:06 +02:00
|
|
|
return new MockResult;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
class MockResult extends Dibi\Drivers\SqlsrvResult
|
|
|
|
{
|
|
|
|
public function __construct()
|
|
|
|
{
|
2015-10-26 15:25:52 +01:00
|
|
|
}
|
|
|
|
|
2017-07-11 12:27:26 +02:00
|
|
|
|
2017-07-11 12:29:13 +02:00
|
|
|
public function getResultColumns(): array
|
2015-10-26 15:25:52 +01:00
|
|
|
{
|
|
|
|
return [];
|
|
|
|
}
|
|
|
|
|
2017-07-11 12:27:26 +02:00
|
|
|
|
2017-07-11 12:29:13 +02:00
|
|
|
public function fetch(bool $type): ?array
|
2015-10-26 15:25:52 +01:00
|
|
|
{
|
2017-07-11 12:28:13 +02:00
|
|
|
return null;
|
2015-10-26 15:25:52 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-05-02 11:11:06 +02:00
|
|
|
|
2015-10-26 15:25:52 +01:00
|
|
|
$config['driver'] = new MockDriver;
|
|
|
|
$conn = new Dibi\Connection($config);
|
|
|
|
|
|
|
|
|
|
|
|
// fetch & limit
|
|
|
|
$fluent = $conn->select('*')
|
|
|
|
->from('customers')
|
|
|
|
->limit(1)
|
|
|
|
->orderBy('customer_id');
|
|
|
|
|
|
|
|
Assert::same(
|
2019-10-22 19:26:24 +02:00
|
|
|
reformat('SELECT TOP (1) * FROM (SELECT * FROM [customers] ORDER BY [customer_id]) t'),
|
2015-10-26 15:25:52 +01:00
|
|
|
(string) $fluent
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
$fluent->fetch();
|
|
|
|
Assert::same(
|
2019-10-22 19:26:24 +02:00
|
|
|
'SELECT TOP (1) * FROM (SELECT * FROM [customers] ORDER BY [customer_id]) t',
|
2015-10-26 15:25:52 +01:00
|
|
|
dibi::$sql
|
|
|
|
);
|
|
|
|
$fluent->fetchSingle();
|
|
|
|
Assert::same(
|
2019-10-22 19:26:24 +02:00
|
|
|
reformat('SELECT TOP (1) * FROM (SELECT * FROM [customers] ORDER BY [customer_id]) t'),
|
2015-10-26 15:25:52 +01:00
|
|
|
dibi::$sql
|
|
|
|
);
|
|
|
|
$fluent->fetchAll(0, 3);
|
|
|
|
Assert::same(
|
2019-10-22 19:26:24 +02:00
|
|
|
reformat('SELECT TOP (3) * FROM (SELECT * FROM [customers] ORDER BY [customer_id]) t'),
|
2015-10-26 15:25:52 +01:00
|
|
|
dibi::$sql
|
|
|
|
);
|
|
|
|
Assert::same(
|
2019-10-22 19:26:24 +02:00
|
|
|
reformat('SELECT TOP (1) * FROM (SELECT * FROM [customers] ORDER BY [customer_id]) t'),
|
2015-10-26 15:25:52 +01:00
|
|
|
(string) $fluent
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
$fluent->limit(0);
|
|
|
|
$fluent->fetch();
|
|
|
|
Assert::same(
|
2019-10-22 19:26:24 +02:00
|
|
|
reformat('SELECT TOP (0) * FROM (SELECT * FROM [customers] ORDER BY [customer_id]) t'),
|
2015-10-26 15:25:52 +01:00
|
|
|
dibi::$sql
|
|
|
|
);
|
|
|
|
$fluent->fetchSingle();
|
|
|
|
Assert::same(
|
2019-10-22 19:26:24 +02:00
|
|
|
reformat('SELECT TOP (0) * FROM (SELECT * FROM [customers] ORDER BY [customer_id]) t'),
|
2015-10-26 15:25:52 +01:00
|
|
|
dibi::$sql
|
|
|
|
);
|
|
|
|
Assert::same(
|
2019-10-22 19:26:24 +02:00
|
|
|
reformat('SELECT TOP (0) * FROM (SELECT * FROM [customers] ORDER BY [customer_id]) t'),
|
2015-10-26 15:25:52 +01:00
|
|
|
(string) $fluent
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
$fluent->removeClause('limit');
|
|
|
|
$fluent->removeClause('offset');
|
|
|
|
$fluent->fetch();
|
|
|
|
Assert::same(
|
2019-10-22 19:26:24 +02:00
|
|
|
reformat('SELECT TOP (1) * FROM (SELECT * FROM [customers] ORDER BY [customer_id]) t'),
|
2015-10-26 15:25:52 +01:00
|
|
|
dibi::$sql
|
|
|
|
);
|
|
|
|
$fluent->fetchSingle();
|
|
|
|
Assert::same(
|
2019-10-22 19:26:24 +02:00
|
|
|
reformat('SELECT TOP (1) * FROM (SELECT * FROM [customers] ORDER BY [customer_id]) t'),
|
2015-10-26 15:25:52 +01:00
|
|
|
dibi::$sql
|
|
|
|
);
|
|
|
|
Assert::same(
|
|
|
|
reformat('SELECT * FROM [customers] ORDER BY [customer_id]'),
|
|
|
|
(string) $fluent
|
|
|
|
);
|