Skip to content

Commit a235768

Browse files
Stephan Wentzpl-github
authored andcommitted
fix: Upgrade to phpunit 10, remove prophecy
1 parent b35d975 commit a235768

File tree

10 files changed

+71
-74
lines changed

10 files changed

+71
-74
lines changed

.github/workflows/build.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ jobs:
1818
matrix:
1919
dependencies: ["lowest", "highest"]
2020
php-version:
21-
- "8.0"
2221
- "8.1"
2322
- "8.2"
2423

.github/workflows/code_coverage.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ jobs:
1414
- uses: actions/checkout@v2
1515
- uses: shivammathur/setup-php@master
1616
with:
17-
php-version: 8.1
17+
php-version: 8.2
1818
coverage: xdebug
1919
- name: Load dependencies from cache
2020
id: composer-cache
@@ -23,9 +23,9 @@ jobs:
2323
- uses: actions/cache@v1
2424
with:
2525
path: ${{ steps.composer-cache.outputs.dir }}
26-
key: ${{ runner.os }}-php8.1-composer-${{ hashFiles('**/composer.json') }}
26+
key: ${{ runner.os }}-php8.2-composer-${{ hashFiles('**/composer.json') }}
2727
restore-keys: |
28-
${{ runner.os }}-php8.1-composer-
28+
${{ runner.os }}-php8.2-composer-
2929
3030
- run: composer install --prefer-dist --no-progress --no-suggest
3131
- run: php vendor/bin/phpunit --coverage-clover build/logs/clover.xml

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/.phpcs-cache
2-
/.phpunit.result.cache
2+
/.phpunit.cache
33
/build/
44
/composer.lock
55
/phpcs.xml

composer.json

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"description": "brainbits controlling functional test helpers",
55
"license": "MIT",
66
"require": {
7-
"php": "^8.0",
7+
"php": "^8.1",
88
"thecodingmachine/safe": "^1.3|^2.0"
99
},
1010
"require-dev": {
@@ -13,7 +13,7 @@
1313
"ext-mbstring": "*",
1414
"ext-simplexml": "*",
1515
"ext-tidy": "*",
16-
"brainbits/phpcs-standard": "^5.0",
16+
"brainbits/phpcs-standard": "^6.0",
1717
"brainbits/phpstan-rules": "^3.0",
1818
"doctrine/dbal": "^2.11|^3.0",
1919
"doctrine/event-manager": "^1.1",
@@ -22,11 +22,10 @@
2222
"mikey179/vfsstream": "^1.6.11",
2323
"monolog/monolog": "^2.3|^3.0",
2424
"php-coveralls/php-coveralls": "^2.4",
25-
"phpspec/prophecy-phpunit": "^2.0",
2625
"phpstan/phpstan": "^1.0",
2726
"phpstan/phpstan-phpunit": "^1.0",
2827
"phpstan/phpstan-symfony": "^1.0",
29-
"phpunit/phpunit": "^9.5.10",
28+
"phpunit/phpunit": "^10.0",
3029
"riverline/multipart-parser": "^2.0",
3130
"slam/phpstan-extensions": "^6.0",
3231
"squizlabs/php_codesniffer": "^3.6.2,!=3.7.0",

phpunit.xml.dist

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<!-- https://phpunit.readthedocs.io/en/latest/configuration.html -->
3-
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd" backupGlobals="false" colors="true" bootstrap="vendor/autoload.php" extensionsDirectory="/usr/lib/tools/phpunit.d">
4-
<coverage processUncoveredFiles="true">
3+
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/10.0/phpunit.xsd" backupGlobals="false" colors="true" bootstrap="vendor/autoload.php" extensionsDirectory="/usr/lib/tools/phpunit.d" cacheDirectory=".phpunit.cache">
4+
<coverage>
55
<include>
66
<directory suffix=".php">src</directory>
77
</include>

src/Request/RequestTrait.php

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
namespace Brainbits\FunctionalTestHelpers\Request;
66

7+
use PHPUnit\Framework\Attributes\After;
8+
use PHPUnit\Framework\Attributes\Before;
79
use PHPUnit\Framework\TestCase;
810
use Symfony\Component\BrowserKit\AbstractBrowser;
911
use Symfony\Component\HttpFoundation\Response;
@@ -26,17 +28,13 @@ protected function createToken(): callable
2628
return static fn () => null;
2729
}
2830

29-
/**
30-
* @before
31-
*/
31+
#[Before]
3232
protected function setUpRequest(): void
3333
{
3434
self::$requestClient = static::createClient();
3535
}
3636

37-
/**
38-
* @after
39-
*/
37+
#[After]
4038
protected function tearDownRequest(): void
4139
{
4240
self::$requestClient = null;

tests/HttpClientMock/MockRequestBuilderCollectionTest.php

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
use Brainbits\FunctionalTestHelpers\HttpClientMock\MockRequestBuilderCollection;
99
use Brainbits\FunctionalTestHelpers\HttpClientMock\MockResponseBuilder;
1010
use Brainbits\FunctionalTestHelpers\HttpClientMock\SymfonyMockResponseFactory;
11+
use PHPUnit\Framework\Attributes\DataProvider;
1112
use PHPUnit\Framework\TestCase;
12-
use Prophecy\PhpUnit\ProphecyTrait;
1313

1414
/**
1515
* @covers \Brainbits\FunctionalTestHelpers\HttpClientMock\MockRequestBuilder
@@ -19,8 +19,6 @@
1919
*/
2020
final class MockRequestBuilderCollectionTest extends TestCase
2121
{
22-
use ProphecyTrait;
23-
2422
private MockRequestBuilderCollection $collection;
2523
/** @var MockRequestBuilder[] */
2624
private array $builders = [];
@@ -92,11 +90,8 @@ public function setUp(): void
9290
}
9391
}
9492

95-
/**
96-
* @param mixed[] $options
97-
*
98-
* @dataProvider requests
99-
*/
93+
/** @param mixed[] $options */
94+
#[DataProvider('requests')]
10095
public function testRequestMatching(string $method, string $uri, array $options, string $index): void
10196
{
10297
($this->collection)($method, $uri, $options);
@@ -107,7 +102,7 @@ public function testRequestMatching(string $method, string $uri, array $options,
107102
}
108103

109104
/** @return mixed[] */
110-
public function requests(): array
105+
public static function requests(): array
111106
{
112107
return [
113108
['DELETE', '/baz', [], 'fallback'],

tests/Request/RequestBuilderTest.php

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

77
use Brainbits\FunctionalTestHelpers\Request\InvalidRequest;
88
use Brainbits\FunctionalTestHelpers\Request\RequestBuilder;
9+
use PHPUnit\Framework\Attributes\DataProvider;
910
use PHPUnit\Framework\TestCase;
10-
use Prophecy\Argument;
11-
use Prophecy\PhpUnit\ProphecyTrait;
1211
use Symfony\Bundle\FrameworkBundle\KernelBrowser;
1312
use Symfony\Component\HttpFoundation\File\UploadedFile;
1413
use Symfony\Component\Security\Core\User\InMemoryUser;
@@ -20,8 +19,6 @@
2019
/** @covers \Brainbits\FunctionalTestHelpers\Request\RequestBuilder */
2120
final class RequestBuilderTest extends TestCase
2221
{
23-
use ProphecyTrait;
24-
2522
public function testItCanBeCreated(): void
2623
{
2724
$builder = RequestBuilder::create(
@@ -139,7 +136,7 @@ public function testJsonContentTypeIsSet(): void
139136
$this->assertSame(['CONTENT_TYPE' => 'application/json'], $builder->getServer());
140137
}
141138

142-
/** @dataProvider provideJsonData */
139+
#[DataProvider('provideJsonData')]
143140
public function testJsonDataIsSet(mixed $data, string|null $encoded): void
144141
{
145142
$builder = $this->createRequestBuilder('GET', '/users')
@@ -149,7 +146,7 @@ public function testJsonDataIsSet(mixed $data, string|null $encoded): void
149146
}
150147

151148
/** @return array<string, array{mixed, string|null}> */
152-
public function provideJsonData(): array
149+
public static function provideJsonData(): array
153150
{
154151
return [
155152
'null' => [null, null], // data is skipped

tests/Schema/SchemaTraitTest.php

Lines changed: 46 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -11,77 +11,83 @@
1111
use Doctrine\DBAL\Platforms\SqlitePlatform;
1212
use Doctrine\DBAL\Schema\Schema;
1313
use PHPUnit\Framework\TestCase;
14-
use Prophecy\PhpUnit\ProphecyTrait;
1514

1615
/** @covers \Brainbits\FunctionalTestHelpers\Schema\SchemaTrait */
1716
final class SchemaTraitTest extends TestCase
1817
{
19-
use ProphecyTrait;
2018
use SchemaTrait;
2119

2220
public function testApplySchema(): void
2321
{
2422
$schemaBuilder = $this->createSchemaBuilder();
2523
$schemaBuilder->foo();
2624

27-
$connection = $this->prophesize(Connection::class);
28-
$connection->getDatabasePlatform()
25+
$connection = $this->createMock(Connection::class);
26+
$connection->expects($this->once())
27+
->method('getDatabasePlatform')
2928
->willReturn(new SqlitePlatform());
30-
$connection->executeStatement('CREATE TABLE foo (bar VARCHAR(255) NOT NULL)')
31-
->shouldBeCalled();
29+
$connection->expects($this->once())
30+
->method('executeStatement')
31+
->with('CREATE TABLE foo (bar VARCHAR(255) NOT NULL)');
3232

33-
$this->applySchema($schemaBuilder, $connection->reveal());
33+
$this->applySchema($schemaBuilder, $connection);
3434
}
3535

3636
public function testApplyDataWithQuoteTableName(): void
3737
{
3838
$dataBuilder = $this->createDataBuilder();
3939
$dataBuilder->foo('baz');
4040

41-
$connection = $this->prophesize(Connection::class);
42-
$connection->getDatabasePlatform()
43-
->willReturn(new SqlitePlatform());
44-
$connection->quoteIdentifier('foo')
41+
$connection = $this->createMock(Connection::class);
42+
$connection->expects($this->once())
43+
->method('quoteIdentifier')
44+
->with('foo')
4545
->willReturn('#foo#');
46-
$connection->insert('#foo#', ['bar' => 'baz'])
47-
->shouldBeCalled();
46+
$connection->expects($this->once())
47+
->method('insert')
48+
->with('#foo#', ['bar' => 'baz']);
4849

49-
$this->applyData($dataBuilder, $connection->reveal());
50+
$this->applyData($dataBuilder, $connection);
5051
}
5152

5253
public function testApplyDataWithoutQuoteTableName(): void
5354
{
5455
$dataBuilder = $this->createDataBuilder();
5556
$dataBuilder->foo('baz');
5657

57-
$connection = $this->prophesize(Connection::class);
58-
$connection->getDatabasePlatform()
59-
->willReturn(new SqlitePlatform());
60-
$connection->quoteIdentifier('foo')
61-
->shouldNotBeCalled();
62-
$connection->insert('foo', ['bar' => 'baz'])
63-
->shouldBeCalled();
58+
$connection = $this->createMock(Connection::class);
59+
$connection->expects($this->never())
60+
->method('quoteIdentifier')
61+
->with('foo');
62+
$connection->expects($this->once())
63+
->method('insert')
64+
->with('foo', ['bar' => 'baz']);
6465

65-
$this->applyData($dataBuilder, $connection->reveal(), false);
66+
$this->applyData($dataBuilder, $connection, false);
6667
}
6768

6869
public function testFixtureFromConnectionWithTableNameQuote(): void
6970
{
7071
$schemaBuilder = $this->createSchemaBuilder();
7172
$dataBuilder = $this->createDataBuilder($schemaBuilder);
7273

73-
$connection = $this->prophesize(Connection::class);
74-
$connection->getDatabasePlatform()
74+
$connection = $this->createMock(Connection::class);
75+
$connection->expects($this->once())
76+
->method('getDatabasePlatform')
7577
->willReturn(new SqlitePlatform());
76-
$connection->executeStatement('CREATE TABLE foo (bar VARCHAR(255) NOT NULL)')
77-
->shouldBeCalled();
78-
$connection->quoteIdentifier('foo')
78+
$connection->expects($this->once())
79+
->method('executeStatement')
80+
->with('CREATE TABLE foo (bar VARCHAR(255) NOT NULL)');
81+
$connection->expects($this->once())
82+
->method('quoteIdentifier')
83+
->with('foo')
7984
->willReturn('#foo#');
80-
$connection->insert('#foo#', ['bar' => 'baz'])
81-
->shouldBeCalled();
85+
$connection->expects($this->once())
86+
->method('insert')
87+
->with('#foo#', ['bar' => 'baz']);
8288

8389
$this->fixtureFromConnection(
84-
$connection->reveal(),
90+
$connection,
8591
$schemaBuilder,
8692
$dataBuilder,
8793
static function ($dataBuilder): void {
@@ -95,18 +101,19 @@ public function testFixtureFromConnectionWithoutTableNameQuote(): void
95101
$schemaBuilder = $this->createSchemaBuilder();
96102
$dataBuilder = $this->createDataBuilder($schemaBuilder);
97103

98-
$connection = $this->prophesize(Connection::class);
99-
$connection->getDatabasePlatform()
104+
$connection = $this->createMock(Connection::class);
105+
$connection->expects($this->once())
106+
->method('getDatabasePlatform')
100107
->willReturn(new SqlitePlatform());
101-
$connection->executeStatement('CREATE TABLE foo (bar VARCHAR(255) NOT NULL)')
102-
->shouldBeCalled();
103-
$connection->quoteIdentifier('foo')
104-
->willReturn('foo');
105-
$connection->insert('foo', ['bar' => 'baz'])
106-
->shouldBeCalled();
108+
$connection->expects($this->once())
109+
->method('executeStatement')
110+
->with('CREATE TABLE foo (bar VARCHAR(255) NOT NULL)');
111+
$connection->expects($this->once())
112+
->method('insert')
113+
->with('foo', ['bar' => 'baz']);
107114

108115
$this->fixtureFromConnection(
109-
$connection->reveal(),
116+
$connection,
110117
$schemaBuilder,
111118
$dataBuilder,
112119
static function ($dataBuilder): void {

tests/Snapshot/XmlSnapshotTest.php

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,15 @@ public function testInvalidXml(): void
3030
{
3131
$data = 'test';
3232

33+
$exception = null;
34+
3335
try {
3436
$this->assertMatchesXmlSnapshot($data);
35-
} catch (ExpectationFailedException) {
36-
return;
37+
} catch (ExpectationFailedException $e) {
38+
$exception = $e;
3739
}
3840

39-
$this->fail('Assertion did not fail');
41+
$this->assertNotNull($exception, 'Assertion did not fail');
4042
}
4143

4244
public function testXml(): void

0 commit comments

Comments
 (0)