Skip to content

Commit 469ac33

Browse files
Merge pull request php-vcr#342 from php-vcr/phpstan-for-tests
Phpstan for tests
2 parents 824b90e + 413efe6 commit 469ac33

31 files changed

+270
-140
lines changed

.editorconfig

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
root = true
2+
3+
[*]
4+
charset = utf-8
5+
end_of_line = lf
6+
insert_final_newline = true
7+
indent_style = space
8+
indent_size = 4
9+
trim_trailing_whitespace = true
10+
11+
[*.md]
12+
trim_trailing_whitespace = false
13+
14+
[*.{yml,yaml,neon}]
15+
indent_size = 2

phpstan.neon

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ parameters:
22
level: 7
33
paths:
44
- src
5+
- tests/VCR
56
# Can remove reportUnmatchedIgnoredErrors option after php 7.2 is no longer supported
67
reportUnmatchedIgnoredErrors: false
78
ignoreErrors:
@@ -18,6 +19,8 @@ parameters:
1819
- '/Parameter #2 \$eventName of method Symfony\\Contracts\\EventDispatcher\\EventDispatcherInterface::dispatch\(\) expects string\|null, VCR\\Event\\Event given./'
1920
# PHPStan cannot deal with manually defined constants - can be removed once php 7.2 no longer supported
2021
- '#Constant CURLPROXY_HTTPS not found.#'
22+
- '#Call to an undefined method (VCR\\Util\\|)SoapClient::GetCityWeatherByZIP\(\)\.#'
23+
- '#Call to an undefined method org\\bovigo\\vfs\\vfsStreamContent::hasChild\(\)\.#'
2124
includes:
2225
- vendor/thecodingmachine/phpstan-strict-rules/phpstan-strict-rules.neon
2326
- vendor/phpstan/phpstan-beberlei-assert/extension.neon

src/VCR/Request.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ class Request
4040
protected $curlOptions = [];
4141

4242
/**
43-
* @param array<string,string> $headers
43+
* @param array<string,string|null> $headers
4444
*/
4545
public function __construct(string $method, ?string $url, array $headers = [])
4646
{

src/VCR/Storage/Blackhole.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,10 @@ public function key(): int
3333
throw new \BadMethodCallException('Not implemented');
3434
}
3535

36-
public function next(): void
36+
/** @return array<mixed>|null */
37+
public function next(): ?array
3738
{
39+
return null;
3840
}
3941

4042
public function rewind(): void

src/VCR/Storage/Storage.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ interface Storage extends \Iterator
1515
/**
1616
* Stores an array of data.
1717
*
18-
* @param array<string,array<string,mixed>> $recording array to store in storage
18+
* @param array<string,string|null|array<string,mixed>> $recording array to store in storage
1919
*/
2020
public function storeRecording(array $recording): void;
2121

src/VCR/VCR.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
* @method static void turnOn()
1313
* @method static void turnOff()
1414
* @method static void eject()
15+
* @mixin Videorecorder
1516
*/
1617
class VCR
1718
{
@@ -37,7 +38,7 @@ class VCR
3738
*/
3839
public static function __callStatic(string $method, array $parameters)
3940
{
40-
$callable = [VCRFactory::get('VCR\Videorecorder'), $method];
41+
$callable = [VCRFactory::get(Videorecorder::class), $method];
4142

4243
Assertion::isCallable($callable);
4344

tests/VCR/CassetteTest.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ public function testGetName(): void
2929
public function testDontOverwriteRecord(): void
3030
{
3131
$request = new Request('GET', 'https://example.com');
32-
$response1 = new Response(200, [], 'sometest');
33-
$response2 = new Response(200, [], 'sometest');
32+
$response1 = new Response('200', [], 'sometest');
33+
$response2 = new Response('200', [], 'sometest');
3434
$this->cassette->record($request, $response1);
3535
$this->cassette->record($request, $response2);
3636

@@ -40,7 +40,7 @@ public function testDontOverwriteRecord(): void
4040
public function testPlaybackAlreadyRecordedRequest(): void
4141
{
4242
$request = new Request('GET', 'https://example.com');
43-
$response = new Response(200, [], 'sometest');
43+
$response = new Response('200', [], 'sometest');
4444
$this->cassette->record($request, $response);
4545

4646
$this->assertEquals($response->toArray(), $this->cassette->playback($request)->toArray());
@@ -56,7 +56,7 @@ public function testHasResponseNotFound(): void
5656
public function testHasResponseFound(): void
5757
{
5858
$request = new Request('GET', 'https://example.com');
59-
$response = new Response(200, [], 'sometest');
59+
$response = new Response('200', [], 'sometest');
6060
$this->cassette->record($request, $response);
6161

6262
$this->assertTrue($this->cassette->hasResponse($request), 'Expected true if request was found.');

tests/VCR/CodeTransform/AbstractCodeTransformTest.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,24 @@
22

33
namespace VCR\CodeTransform;
44

5+
use PHPUnit\Framework\MockObject\MockObject;
56
use PHPUnit\Framework\TestCase;
67

78
class AbstractCodeTransformTest extends TestCase
89
{
10+
/**
11+
* @param string[] $methods
12+
*
13+
* @return AbstractCodeTransform&MockObject
14+
*/
915
protected function getFilter(array $methods = [])
1016
{
1117
$defaults = array_merge(
1218
['transformCode'],
1319
$methods
1420
);
1521

16-
$filter = $this->getMockBuilder('\VCR\CodeTransform\AbstractCodeTransform')
22+
$filter = $this->getMockBuilder(AbstractCodeTransform::class)
1723
->setMethods($defaults)
1824
->getMockForAbstractClass();
1925

tests/VCR/CodeTransform/CurlCodeTransformTest.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ class CurlCodeTransformTest extends TestCase
99
/**
1010
* @dataProvider codeSnippetProvider
1111
*/
12-
public function testTransformCode($expected, $code): void
12+
public function testTransformCode(string $expected, string $code): void
1313
{
1414
$codeTransform = new class() extends CurlCodeTransform {
1515
// A proxy to access the protected transformCode method.
@@ -22,7 +22,8 @@ public function publicTransformCode(string $code): string
2222
$this->assertEquals($expected, $codeTransform->publicTransformCode($code));
2323
}
2424

25-
public function codeSnippetProvider()
25+
/** @return array<string[]> */
26+
public function codeSnippetProvider(): array
2627
{
2728
return [
2829
['\VCR\LibraryHooks\CurlHook::curl_init(', 'CURL_INIT ('],

tests/VCR/CodeTransform/SoapCodeTransformTest.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ class SoapCodeTransformTest extends TestCase
99
/**
1010
* @dataProvider codeSnippetProvider
1111
*/
12-
public function testTransformCode($expected, $code): void
12+
public function testTransformCode(string $expected, string $code): void
1313
{
1414
$codeTransform = new class() extends SoapCodeTransform {
1515
// A proxy to access the protected transformCode method.
@@ -22,7 +22,8 @@ public function publicTransformCode(string $code): string
2222
$this->assertEquals($expected, $codeTransform->publicTransformCode($code));
2323
}
2424

25-
public function codeSnippetProvider()
25+
/** @return array<string[]> */
26+
public function codeSnippetProvider(): array
2627
{
2728
return [
2829
['new \VCR\Util\SoapClient(', 'new \SoapClient('],

0 commit comments

Comments
 (0)