Skip to content

Commit af19afc

Browse files
clxmstaabstaabm
authored andcommitted
refactor: separated tests for fetch-types
1 parent 03bb07f commit af19afc

File tree

3 files changed

+37
-24
lines changed

3 files changed

+37
-24
lines changed

tests/DbaInferenceTest.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@ public function dataFileAsserts(): iterable
1616
require_once __DIR__.'/data/pdo-prepare.php';
1717
yield from $this->gatherAssertTypes(__DIR__.'/data/pdo-prepare.php');
1818

19+
// make sure class constants can be resolved
20+
require_once __DIR__.'/data/pdo-fetch-types.php';
21+
yield from $this->gatherAssertTypes(__DIR__.'/data/pdo-fetch-types.php');
22+
1923
yield from $this->gatherAssertTypes(__DIR__.'/data/mysqli.php');
2024

2125
// make sure class definitions within the test files are known to reflection

tests/data/pdo-fetch-types.php

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<?php
2+
3+
namespace PdoFetchTypeTest;
4+
5+
use PDO;
6+
use function PHPStan\Testing\assertType;
7+
8+
class Foo
9+
{
10+
public function supportedFetchTypes(PDO $pdo)
11+
{
12+
$stmt = $pdo->query('SELECT email, adaid FROM ada', PDO::FETCH_NUM);
13+
assertType('PDOStatement<array{string, int<0, 4294967295>}>', $stmt);
14+
15+
$stmt = $pdo->query('SELECT email, adaid FROM ada', PDO::FETCH_ASSOC);
16+
assertType('PDOStatement<array{email: string, adaid: int<0, 4294967295>}>', $stmt);
17+
18+
$stmt = $pdo->query('SELECT email, adaid FROM ada', PDO::FETCH_BOTH);
19+
assertType('PDOStatement<array{email: string, 0: string, adaid: int<0, 4294967295>, 1: int<0, 4294967295>}>', $stmt);
20+
}
21+
22+
public function unsupportedFetchTypes(PDO $pdo)
23+
{
24+
$stmt = $pdo->query('SELECT email, adaid, gesperrt, freigabe1u1 FROM ada');
25+
assertType('PDOStatement<array>|false', $stmt);
26+
27+
$stmt = $pdo->query('SELECT email, adaid, gesperrt, freigabe1u1 FROM ada', PDO::FETCH_COLUMN);
28+
assertType('PDOStatement<array>|false', $stmt);
29+
30+
$stmt = $pdo->query('SELECT email, adaid, gesperrt, freigabe1u1 FROM ada', PDO::FETCH_OBJ);
31+
assertType('PDOStatement<array>|false', $stmt);
32+
}
33+
}

tests/data/pdo.php

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -105,30 +105,6 @@ public function updateQuery(PDO $pdo)
105105
assertType('PDOStatement<array>|false', $stmt);
106106
}
107107

108-
public function supportedFetchTypes(PDO $pdo)
109-
{
110-
$stmt = $pdo->query('SELECT email, adaid FROM ada', PDO::FETCH_NUM);
111-
assertType('PDOStatement<array{string, int<0, 4294967295>}>', $stmt);
112-
113-
$stmt = $pdo->query('SELECT email, adaid FROM ada', PDO::FETCH_ASSOC);
114-
assertType('PDOStatement<array{email: string, adaid: int<0, 4294967295>}>', $stmt);
115-
116-
$stmt = $pdo->query('SELECT email, adaid FROM ada', PDO::FETCH_BOTH);
117-
assertType('PDOStatement<array{email: string, 0: string, adaid: int<0, 4294967295>, 1: int<0, 4294967295>}>', $stmt);
118-
}
119-
120-
public function unsupportedFetchTypes(PDO $pdo)
121-
{
122-
$stmt = $pdo->query('SELECT email, adaid, gesperrt, freigabe1u1 FROM ada');
123-
assertType('PDOStatement<array>|false', $stmt);
124-
125-
$stmt = $pdo->query('SELECT email, adaid, gesperrt, freigabe1u1 FROM ada', PDO::FETCH_COLUMN);
126-
assertType('PDOStatement<array>|false', $stmt);
127-
128-
$stmt = $pdo->query('SELECT email, adaid, gesperrt, freigabe1u1 FROM ada', PDO::FETCH_OBJ);
129-
assertType('PDOStatement<array>|false', $stmt);
130-
}
131-
132108
/**
133109
* @param numeric $n
134110
* @param non-empty-string $nonE

0 commit comments

Comments
 (0)