Skip to content

Commit 98a011b

Browse files
authored
Refactor tests (#463)
1 parent 17ddc70 commit 98a011b

39 files changed

Lines changed: 507 additions & 668 deletions

‎composer.json‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,8 @@
4646
"vimeo/psalm": "^5.26.1 || ^6.8.8",
4747
"vlucas/phpdotenv": "^5.6.1",
4848
"yiisoft/aliases": "^2.0",
49-
"yiisoft/cache-file": "^3.2",
49+
"yiisoft/psr-dummy-provider": "^1.0",
50+
"yiisoft/test-support": "^3.0",
5051
"yiisoft/var-dumper": "^1.7"
5152
},
5253
"provide": {

‎tests/ArrayValueBuilderTest.php‎

Lines changed: 39 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
use ArrayIterator;
88
use PHPUnit\Framework\Attributes\DataProvider;
9-
use PHPUnit\Framework\TestCase;
109
use Yiisoft\Db\Constant\ColumnType;
1110
use Yiisoft\Db\Constant\DataType;
1211
use Yiisoft\Db\Expression\Value\ArrayValue;
@@ -18,19 +17,20 @@
1817
use Yiisoft\Db\Pgsql\Column\ColumnBuilder;
1918
use Yiisoft\Db\Pgsql\Data\LazyArray;
2019
use Yiisoft\Db\Pgsql\Data\StructuredLazyArray;
21-
use Yiisoft\Db\Pgsql\Tests\Support\TestTrait;
20+
use Yiisoft\Db\Pgsql\Tests\Support\IntegrationTestTrait;
2221
use Yiisoft\Db\Query\Query;
2322
use Yiisoft\Db\Schema\Column\ColumnInterface;
2423
use Yiisoft\Db\Schema\Data\JsonLazyArray;
2524
use Yiisoft\Db\Schema\Data\LazyArrayInterface;
2625
use Yiisoft\Db\Tests\Support\Assert;
26+
use Yiisoft\Db\Tests\Support\IntegrationTestCase;
2727

2828
/**
2929
* @group pgsql
3030
*/
31-
final class ArrayValueBuilderTest extends TestCase
31+
final class ArrayValueBuilderTest extends IntegrationTestCase
3232
{
33-
use TestTrait;
33+
use IntegrationTestTrait;
3434

3535
public static function buildProvider(): array
3636
{
@@ -127,16 +127,6 @@ public static function buildProvider(): array
127127
'ARRAY[NULL,ROW(11.11,:qp0),ROW(NULL,NULL)]',
128128
[':qp0' => new Param('USD', DataType::STRING)],
129129
],
130-
'Query w/o type' => [
131-
(new Query(self::getDb()))->select('id')->from('users')->where(['active' => 1]),
132-
null,
133-
'ARRAY(SELECT "id" FROM "users" WHERE "active" = 1)',
134-
],
135-
'Query' => [
136-
[(new Query(self::getDb()))->select('id')->from('users')->where(['active' => 1])],
137-
'integer[][]',
138-
'ARRAY[ARRAY(SELECT "id" FROM "users" WHERE "active" = 1)::integer[]]::integer[][]',
139-
],
140130
'bool' => [
141131
[[[true], [false, null]], [['t', 'f'], null], null],
142132
'bool[][][]',
@@ -169,7 +159,7 @@ public function testBuild(
169159
string $expected,
170160
array $expectedParams = [],
171161
): void {
172-
$db = $this->getConnection();
162+
$db = $this->getSharedConnection();
173163
$qb = $db->getQueryBuilder();
174164

175165
$params = [];
@@ -178,7 +168,40 @@ public function testBuild(
178168

179169
$this->assertSame($expected, $builder->build($expression, $params));
180170
Assert::arraysEquals($expectedParams, $params);
171+
}
172+
173+
public function testBuildWithQuery(): void
174+
{
175+
$db = $this->getSharedConnection();
176+
$queryBuilder = $db->getQueryBuilder();
177+
178+
$params = [];
179+
$builder = new ArrayValueBuilder($queryBuilder);
180+
$expression = new ArrayValue(
181+
$db->select('id')->from('users')->where(['active' => 1]),
182+
);
183+
184+
$result = $builder->build($expression, $params);
185+
186+
$this->assertSame('ARRAY(SELECT "id" FROM "users" WHERE "active" = 1)', $result);
187+
$this->assertSame([], $params);
188+
}
189+
190+
public function testBuildWithArrayOfQuery(): void
191+
{
192+
$db = $this->getSharedConnection();
193+
$queryBuilder = $db->getQueryBuilder();
194+
195+
$params = [];
196+
$builder = new ArrayValueBuilder($queryBuilder);
197+
$expression = new ArrayValue(
198+
[$db->select('id')->from('users')->where(['active' => 1])],
199+
'integer[][]',
200+
);
201+
202+
$result = $builder->build($expression, $params);
181203

182-
$db->close();
204+
$this->assertSame('ARRAY[ARRAY(SELECT "id" FROM "users" WHERE "active" = 1)::integer[]]::integer[][]', $result);
205+
$this->assertSame([], $params);
183206
}
184207
}

‎tests/BatchQueryResultTest.php‎

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,13 @@
44

55
namespace Yiisoft\Db\Pgsql\Tests;
66

7-
use Yiisoft\Db\Pgsql\Tests\Support\TestTrait;
7+
use Yiisoft\Db\Pgsql\Tests\Support\IntegrationTestTrait;
88
use Yiisoft\Db\Tests\Common\CommonBatchQueryResultTest;
99

1010
/**
1111
* @group pgsql
12-
*
13-
* @psalm-suppress PropertyNotSetInConstructor
1412
*/
1513
final class BatchQueryResultTest extends CommonBatchQueryResultTest
1614
{
17-
use TestTrait;
15+
use IntegrationTestTrait;
1816
}

‎tests/Column/DateMultiRangeColumnTest.php‎

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,15 @@
66

77
use DateTimeImmutable;
88
use PHPUnit\Framework\Attributes\DataProvider;
9-
use PHPUnit\Framework\TestCase;
109
use Yiisoft\Db\Pgsql\Connection;
1110
use Yiisoft\Db\Pgsql\Expression\DateRangeValue;
1211
use Yiisoft\Db\Pgsql\Expression\MultiRangeValue;
13-
use Yiisoft\Db\Pgsql\Tests\Support\TestTrait;
14-
use Yiisoft\Db\Pgsql\Tests\TestConnection;
12+
use Yiisoft\Db\Pgsql\Tests\Support\IntegrationTestTrait;
13+
use Yiisoft\Db\Tests\Support\IntegrationTestCase;
1514

16-
final class DateMultiRangeColumnTest extends TestCase
15+
final class DateMultiRangeColumnTest extends IntegrationTestCase
1716
{
18-
use TestTrait;
17+
use IntegrationTestTrait;
1918

2019
public static function dataBase(): iterable
2120
{
@@ -105,7 +104,7 @@ public static function dataBase(): iterable
105104
#[DataProvider('dataBase')]
106105
public function testBase(mixed $expectedColumnValue, mixed $value): void
107106
{
108-
$db = $this->createConnection(['{[2024-01-01,2024-01-10),[2024-01-20,2024-01-30]}', '{[2024-02-01,2024-02-10)}']);
107+
$db = $this->prepareConnection(['{[2024-01-01,2024-01-10),[2024-01-20,2024-01-30]}', '{[2024-02-01,2024-02-10)}']);
109108

110109
$db->createCommand()->insert('tbl_test', ['col' => $value])->execute();
111110

@@ -137,7 +136,7 @@ public static function dataPhpTypecast(): iterable
137136
#[DataProvider('dataPhpTypecast')]
138137
public function testPhpTypecast(array $expected, string $value): void
139138
{
140-
$db = $this->createConnection([$value]);
139+
$db = $this->prepareConnection([$value]);
141140

142141
$result = $db->select('col')->from('tbl_test')->where(['id' => 1])->withTypecasting()->one();
143142

@@ -147,9 +146,9 @@ public function testPhpTypecast(array $expected, string $value): void
147146
/**
148147
* @psalm-param list<string> $values
149148
*/
150-
private function createConnection(array $values = []): Connection
149+
private function prepareConnection(array $values = []): Connection
151150
{
152-
$db = TestConnection::get();
151+
$db = $this->getSharedConnection();
153152
$this->ensureMinPostgreSqlVersion('14.0');
154153

155154
$db->createCommand('DROP TABLE IF EXISTS tbl_test')->execute();

‎tests/Column/DateRangeColumnTest.php‎

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,14 @@
66

77
use DateTimeImmutable;
88
use PHPUnit\Framework\Attributes\DataProvider;
9-
use PHPUnit\Framework\TestCase;
109
use Yiisoft\Db\Pgsql\Connection;
1110
use Yiisoft\Db\Pgsql\Expression\DateRangeValue;
12-
use Yiisoft\Db\Pgsql\Tests\Support\TestTrait;
13-
use Yiisoft\Db\Pgsql\Tests\TestConnection;
11+
use Yiisoft\Db\Pgsql\Tests\Support\IntegrationTestTrait;
12+
use Yiisoft\Db\Tests\Support\IntegrationTestCase;
1413

15-
final class DateRangeColumnTest extends TestCase
14+
final class DateRangeColumnTest extends IntegrationTestCase
1615
{
17-
use TestTrait;
16+
use IntegrationTestTrait;
1817

1918
public static function dataBase(): iterable
2019
{
@@ -77,7 +76,7 @@ public static function dataBase(): iterable
7776
#[DataProvider('dataBase')]
7877
public function testBase(mixed $expectedColumnValue, mixed $value): void
7978
{
80-
$db = $this->createConnection(['[2024-01-01,2024-01-10)', '(2024-01-20,2024-01-30]']);
79+
$db = $this->prepareConnection(['[2024-01-01,2024-01-10)', '(2024-01-20,2024-01-30]']);
8180

8281
$db->createCommand()->insert('tbl_test', ['col' => $value])->execute();
8382

@@ -107,7 +106,7 @@ public static function dataPhpTypecast(): iterable
107106
#[DataProvider('dataPhpTypecast')]
108107
public function testPhpTypecast(mixed $expected, string $value): void
109108
{
110-
$db = $this->createConnection([$value]);
109+
$db = $this->prepareConnection([$value]);
111110

112111
$result = $db->select('col')->from('tbl_test')->where(['id' => 1])->withTypecasting()->one();
113112

@@ -117,9 +116,9 @@ public function testPhpTypecast(mixed $expected, string $value): void
117116
/**
118117
* @psalm-param list<string> $values
119118
*/
120-
private function createConnection(array $values = []): Connection
119+
private function prepareConnection(array $values = []): Connection
121120
{
122-
$db = TestConnection::get();
121+
$db = $this->getSharedConnection();
123122

124123
$db->createCommand('DROP TABLE IF EXISTS tbl_test')->execute();
125124
$db->createCommand(

‎tests/Column/Int4MultiRangeColumnTest.php‎

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,15 @@
55
namespace Yiisoft\Db\Pgsql\Tests\Column;
66

77
use PHPUnit\Framework\Attributes\DataProvider;
8-
use PHPUnit\Framework\TestCase;
98
use Yiisoft\Db\Pgsql\Connection;
109
use Yiisoft\Db\Pgsql\Expression\Int4RangeValue;
1110
use Yiisoft\Db\Pgsql\Expression\MultiRangeValue;
12-
use Yiisoft\Db\Pgsql\Tests\Support\TestTrait;
13-
use Yiisoft\Db\Pgsql\Tests\TestConnection;
11+
use Yiisoft\Db\Pgsql\Tests\Support\IntegrationTestTrait;
12+
use Yiisoft\Db\Tests\Support\IntegrationTestCase;
1413

15-
final class Int4MultiRangeColumnTest extends TestCase
14+
final class Int4MultiRangeColumnTest extends IntegrationTestCase
1615
{
17-
use TestTrait;
16+
use IntegrationTestTrait;
1817

1918
public static function dataBase(): iterable
2019
{
@@ -53,7 +52,7 @@ public static function dataBase(): iterable
5352
#[DataProvider('dataBase')]
5453
public function testBase(mixed $expectedColumnValue, mixed $value): void
5554
{
56-
$db = $this->createConnection(['{[1,10),[20,30]}', '{[40,50)}']);
55+
$db = $this->prepareConnection(['{[1,10),[20,30]}', '{[40,50)}']);
5756

5857
$db->createCommand()->insert('tbl_test', ['col' => $value])->execute();
5958

@@ -85,7 +84,7 @@ public static function dataPhpTypecast(): iterable
8584
#[DataProvider('dataPhpTypecast')]
8685
public function testPhpTypecast(array $expected, string $value): void
8786
{
88-
$db = $this->createConnection([$value]);
87+
$db = $this->prepareConnection([$value]);
8988

9089
$result = $db->select('col')->from('tbl_test')->where(['id' => 1])->withTypecasting()->one();
9190

@@ -95,9 +94,9 @@ public function testPhpTypecast(array $expected, string $value): void
9594
/**
9695
* @psalm-param list<string> $values
9796
*/
98-
private function createConnection(array $values = []): Connection
97+
private function prepareConnection(array $values = []): Connection
9998
{
100-
$db = TestConnection::get();
99+
$db = $this->getSharedConnection();
101100
$this->ensureMinPostgreSqlVersion('14.0');
102101

103102
$db->createCommand('DROP TABLE IF EXISTS tbl_test')->execute();

‎tests/Column/Int4RangeColumnTest.php‎

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,14 @@
55
namespace Yiisoft\Db\Pgsql\Tests\Column;
66

77
use PHPUnit\Framework\Attributes\DataProvider;
8-
use PHPUnit\Framework\TestCase;
98
use Yiisoft\Db\Pgsql\Connection;
109
use Yiisoft\Db\Pgsql\Expression\Int4RangeValue;
11-
use Yiisoft\Db\Pgsql\Tests\Support\TestTrait;
12-
use Yiisoft\Db\Pgsql\Tests\TestConnection;
10+
use Yiisoft\Db\Pgsql\Tests\Support\IntegrationTestTrait;
11+
use Yiisoft\Db\Tests\Support\IntegrationTestCase;
1312

14-
final class Int4RangeColumnTest extends TestCase
13+
final class Int4RangeColumnTest extends IntegrationTestCase
1514
{
16-
use TestTrait;
15+
use IntegrationTestTrait;
1716

1817
public static function dataBase(): iterable
1918
{
@@ -43,7 +42,7 @@ public static function dataBase(): iterable
4342
#[DataProvider('dataBase')]
4443
public function testBase(mixed $expectedColumnValue, mixed $value): void
4544
{
46-
$db = $this->createConnection(['[1,10)', '(20,30]']);
45+
$db = $this->prepareConnection(['[1,10)', '(20,30]']);
4746

4847
$db->createCommand()->insert('tbl_test', ['col' => $value])->execute();
4948

@@ -73,7 +72,7 @@ public static function dataPhpTypecast(): iterable
7372
#[DataProvider('dataPhpTypecast')]
7473
public function testPhpTypecast(mixed $expected, string $value): void
7574
{
76-
$db = $this->createConnection([$value]);
75+
$db = $this->prepareConnection([$value]);
7776

7877
$result = $db->select('col')->from('tbl_test')->where(['id' => 1])->withTypecasting()->one();
7978

@@ -83,9 +82,9 @@ public function testPhpTypecast(mixed $expected, string $value): void
8382
/**
8483
* @psalm-param list<string> $values
8584
*/
86-
private function createConnection(array $values = []): Connection
85+
private function prepareConnection(array $values = []): Connection
8786
{
88-
$db = TestConnection::get();
87+
$db = $this->getSharedConnection();
8988

9089
$db->createCommand('DROP TABLE IF EXISTS tbl_test')->execute();
9190
$db->createCommand(

‎tests/Column/Int8MultiRangeColumnTest.php‎

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,15 @@
55
namespace Yiisoft\Db\Pgsql\Tests\Column;
66

77
use PHPUnit\Framework\Attributes\DataProvider;
8-
use PHPUnit\Framework\TestCase;
98
use Yiisoft\Db\Pgsql\Connection;
109
use Yiisoft\Db\Pgsql\Expression\Int8RangeValue;
1110
use Yiisoft\Db\Pgsql\Expression\MultiRangeValue;
12-
use Yiisoft\Db\Pgsql\Tests\Support\TestTrait;
13-
use Yiisoft\Db\Pgsql\Tests\TestConnection;
11+
use Yiisoft\Db\Pgsql\Tests\Support\IntegrationTestTrait;
12+
use Yiisoft\Db\Tests\Support\IntegrationTestCase;
1413

15-
final class Int8MultiRangeColumnTest extends TestCase
14+
final class Int8MultiRangeColumnTest extends IntegrationTestCase
1615
{
17-
use TestTrait;
16+
use IntegrationTestTrait;
1817

1918
public static function dataBase(): iterable
2019
{
@@ -53,7 +52,7 @@ public static function dataBase(): iterable
5352
#[DataProvider('dataBase')]
5453
public function testBase(mixed $expectedColumnValue, mixed $value): void
5554
{
56-
$db = $this->createConnection(['{[1,10),[20,30]}', '{[40,50)}']);
55+
$db = $this->prepareConnection(['{[1,10),[20,30]}', '{[40,50)}']);
5756

5857
$db->createCommand()->insert('tbl_test', ['col' => $value])->execute();
5958

@@ -85,7 +84,7 @@ public static function dataPhpTypecast(): iterable
8584
#[DataProvider('dataPhpTypecast')]
8685
public function testPhpTypecast(array $expected, string $value): void
8786
{
88-
$db = $this->createConnection([$value]);
87+
$db = $this->prepareConnection([$value]);
8988

9089
$result = $db->select('col')->from('tbl_test')->where(['id' => 1])->withTypecasting()->one();
9190

@@ -95,9 +94,9 @@ public function testPhpTypecast(array $expected, string $value): void
9594
/**
9695
* @psalm-param list<string> $values
9796
*/
98-
private function createConnection(array $values = []): Connection
97+
private function prepareConnection(array $values = []): Connection
9998
{
100-
$db = TestConnection::get();
99+
$db = $this->getSharedConnection();
101100
$this->ensureMinPostgreSqlVersion('14.0');
102101

103102
$db->createCommand('DROP TABLE IF EXISTS tbl_test')->execute();

0 commit comments

Comments
 (0)