Skip to content

Commit 39d3be9

Browse files
committed
Support Symfony 7.0
1 parent 229e7bc commit 39d3be9

File tree

7 files changed

+73
-95
lines changed

7 files changed

+73
-95
lines changed

.github/workflows/ci.yml

+15-6
Original file line numberDiff line numberDiff line change
@@ -8,25 +8,34 @@ on:
88

99
jobs:
1010
php-tests:
11-
name: Tests - PHP ${{ matrix.php }} ${{ matrix.dependency-version }}
11+
name: Tests - PHP ${{ matrix.php }} with Symfony ${{ matrix.sf_version }}
1212
runs-on: ubuntu-latest
1313
timeout-minutes: 15
1414
strategy:
15+
max-parallel: 10
16+
fail-fast: false
1517
matrix:
16-
php: ['8.2', '8.1', '8.0', '7.4']
17-
dependency-version: ['']
18+
php: ['8.2', '8.3']
19+
sf_version: ['7.0.*']
20+
include:
21+
- php: '8.0'
22+
sf_version: '5.4.*'
23+
- php: '8.1'
24+
sf_version: '6.4.*'
1825

1926
steps:
2027
- name: Checkout
21-
uses: actions/checkout@v2
28+
uses: actions/checkout@v4
2229
- name: Setup PHP
2330
uses: shivammathur/setup-php@v2
2431
with:
2532
php-version: ${{ matrix.php }}
26-
tools: composer:v2
33+
tools: composer:v2, flex
2734
coverage: none
2835
ini-values: expose_php=1
2936
- name: Install dependencies
30-
run: 'composer update ${{ matrix.dependency-version }} --no-interaction --prefer-dist --no-progress'
37+
run: 'composer update --no-interaction --prefer-dist --no-progress'
38+
env:
39+
SYMFONY_REQUIRE: ${{ matrix.sf_version }}
3140
- name: Execute Unit Tests
3241
run: 'vendor/bin/phpunit'

.github/workflows/phpstan.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ jobs:
88
runs-on: ubuntu-latest
99

1010
steps:
11-
- uses: actions/checkout@v1
11+
- uses: actions/checkout@v4
1212

1313
- name: Composer
1414
run: composer install --prefer-dist --no-progress --no-suggest

composer.json

+11-12
Original file line numberDiff line numberDiff line change
@@ -15,27 +15,26 @@
1515
}
1616
},
1717
"require": {
18-
"php": ">=7.4",
18+
"php": ">=8.0",
1919
"ext-json": "*",
20-
"symfony/messenger": "^4.3 || ^5.0 || ^6.0",
21-
"symfony/config": "^4.3 || ^5.0 || ^6.0",
22-
"symfony/dependency-injection": "^4.3 || ^5.0 || ^6.0",
23-
"symfony/http-kernel": "^4.3 || ^5.0 || ^6.0",
24-
"symfony/yaml": "^4.3 || ^5.0 || ^6.0",
25-
"bref/bref": "^1.5 || ^2.0",
2620
"async-aws/sns": "^1.0",
2721
"async-aws/sqs": "^1.2",
2822
"async-aws/event-bridge": "^1.0",
29-
"symfony/amazon-sqs-messenger": "^5.2 || ^6.0",
30-
"symfony/polyfill-php80": "^1.26"
23+
"bref/bref": "^1.5 || ^2.0",
24+
"symfony/amazon-sqs-messenger": "^5.4 || ^6.0 || ^7.0",
25+
"symfony/config": "^5.4 || ^6.0 || ^7.0",
26+
"symfony/dependency-injection": "^5.4 || ^6.0 || ^7.0",
27+
"symfony/http-kernel": "^5.4 || ^6.0 || ^7.0",
28+
"symfony/messenger": "^5.4 || ^6.0 || ^7.0",
29+
"symfony/yaml": "^5.4 || ^6.0 || ^7.0"
3130
},
3231
"require-dev": {
3332
"phpunit/phpunit": "^9.4",
3433
"mnapoli/hard-mode": "^0.3.0",
3534
"phpstan/phpstan": "^1.7.10",
36-
"symfony/framework-bundle": "^4.3 || ^5.0 || ^6.0",
37-
"nyholm/symfony-bundle-test": "1.x-dev",
38-
"matthiasnoback/symfony-dependency-injection-test": "^4.1",
35+
"symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0",
36+
"nyholm/symfony-bundle-test": "^3.0",
37+
"matthiasnoback/symfony-dependency-injection-test": "^4.3 || ^5.0",
3938
"phpspec/prophecy": "^1.15",
4039
"phpspec/prophecy-phpunit": "^2.0"
4140
},

tests/Functional/BaseFunctionalTest.php

+15-25
Original file line numberDiff line numberDiff line change
@@ -3,36 +3,26 @@
33
namespace Bref\Symfony\Messenger\Test\Functional;
44

55
use Bref\Symfony\Messenger\BrefMessengerBundle;
6-
use Nyholm\BundleTest\BaseBundleTestCase;
7-
use Symfony\Component\DependencyInjection\Container;
6+
use Nyholm\BundleTest\TestKernel;
7+
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
8+
use Symfony\Component\HttpKernel\KernelInterface;
89

9-
abstract class BaseFunctionalTest extends BaseBundleTestCase
10+
abstract class BaseFunctionalTest extends KernelTestCase
1011
{
11-
/** @var Container */
12-
protected $container;
13-
14-
protected function getBundleClass()
15-
{
16-
return BrefMessengerBundle::class;
17-
}
18-
19-
protected function setUp(): void
12+
protected static function getKernelClass(): string
2013
{
21-
parent::setUp();
22-
$kernel = $this->createKernel();
23-
24-
// Add some configuration
25-
$configDir = dirname(__DIR__) . '/Resources/config/';
26-
foreach ($this->getDefaultConfig() as $file) {
27-
$kernel->addConfigFile($configDir . $file);
28-
}
29-
30-
$this->bootKernel();
31-
$this->container = $this->getContainer()->get('test.service_container');
14+
return TestKernel::class;
3215
}
3316

34-
protected function getDefaultConfig(): array
17+
protected static function createKernel(array $options = []): KernelInterface
3518
{
36-
return [];
19+
/**
20+
* @var TestKernel $kernel
21+
*/
22+
$kernel = parent::createKernel($options);
23+
$kernel->addTestBundle(BrefMessengerBundle::class);
24+
$kernel->handleOptions($options);
25+
26+
return $kernel;
3727
}
3828
}

tests/Functional/Service/EventBridge/EventBridgeTransportTest.php

+14-7
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,27 @@
1010
use Bref\Symfony\Messenger\Test\Functional\BaseFunctionalTest;
1111
use Bref\Symfony\Messenger\Test\Resources\TestMessage\TestMessage;
1212
use Bref\Symfony\Messenger\Test\Resources\TestMessage\TestMessage2;
13+
use Nyholm\BundleTest\TestKernel;
1314
use Symfony\Component\Messenger\MessageBusInterface;
1415
use Symfony\Component\Messenger\Transport\Serialization\PhpSerializer;
1516

1617
class EventBridgeTransportTest extends BaseFunctionalTest
1718
{
18-
protected function getDefaultConfig(): array
19+
protected function setUp(): void
1920
{
20-
return ['eventbridge.yaml'];
21+
parent::setUp();
22+
23+
self::bootKernel([
24+
'config' => static function (TestKernel $kernel) {
25+
$kernel->addTestConfig(dirname(__DIR__, 3).'/Resources/config/eventbridge.yaml');
26+
},
27+
]);
2128
}
2229

2330
public function test factory(): void
2431
{
2532
/** @var EventBridgeTransportFactory $factory */
26-
$factory = $this->container->get(EventBridgeTransportFactory::class);
33+
$factory = self::getContainer()->get(EventBridgeTransportFactory::class);
2734
$this->assertInstanceOf(EventBridgeTransportFactory::class, $factory);
2835

2936
$this->assertTrue($factory->supports('eventbridge://', []));
@@ -55,10 +62,10 @@ public function test send message(): void
5562
return true;
5663
}))
5764
->willReturn(ResultMockFactory::create(PutEventsResponse::class, ['FailedEntryCount' => 0]));
58-
$this->container->set('bref.messenger.eventbridge_client', $eventBridgeClient);
65+
self::getContainer()->set('bref.messenger.eventbridge_client', $eventBridgeClient);
5966

6067
/** @var MessageBusInterface $bus */
61-
$bus = $this->container->get(MessageBusInterface::class);
68+
$bus = self::getContainer()->get(MessageBusInterface::class);
6269
$bus->dispatch(new TestMessage('hello'));
6370
}
6471

@@ -79,10 +86,10 @@ public function test send message with event bus name(): void
7986
return true;
8087
}))
8188
->willReturn(ResultMockFactory::create(PutEventsResponse::class, ['FailedEntryCount' => 0]));
82-
$this->container->set('bref.messenger.eventbridge_client', $eventBridgeClient);
89+
self::getContainer()->set('bref.messenger.eventbridge_client', $eventBridgeClient);
8390

8491
/** @var MessageBusInterface $bus */
85-
$bus = $this->container->get(MessageBusInterface::class);
92+
$bus = self::getContainer()->get(MessageBusInterface::class);
8693
$bus->dispatch(new TestMessage2('hello'));
8794
}
8895
}

tests/Functional/Service/Sns/SnsTransportTest.php

+17-10
Original file line numberDiff line numberDiff line change
@@ -10,22 +10,29 @@
1010
use Bref\Symfony\Messenger\Service\Sns\SnsTransportFactory;
1111
use Bref\Symfony\Messenger\Test\Functional\BaseFunctionalTest;
1212
use Bref\Symfony\Messenger\Test\Resources\TestMessage\TestMessage;
13+
use Nyholm\BundleTest\TestKernel;
1314
use Symfony\Component\Messenger\Envelope;
1415
use Symfony\Component\Messenger\MessageBusInterface;
1516
use Symfony\Component\Messenger\Transport\Serialization\PhpSerializer;
1617
use Symfony\Component\Messenger\Transport\Serialization\SerializerInterface;
1718

1819
class SnsTransportTest extends BaseFunctionalTest
1920
{
20-
protected function getDefaultConfig(): array
21+
protected function setUp(): void
2122
{
22-
return ['sns.yaml'];
23+
parent::setUp();
24+
25+
self::bootKernel([
26+
'config' => static function (TestKernel $kernel) {
27+
$kernel->addTestConfig(dirname(__DIR__, 3).'/Resources/config/sns.yaml');
28+
},
29+
]);
2330
}
2431

2532
public function test factory(): void
2633
{
2734
/** @var SnsTransportFactory $factory */
28-
$factory = $this->container->get(SnsTransportFactory::class);
35+
$factory = self::getContainer()->get(SnsTransportFactory::class);
2936
$this->assertInstanceOf(SnsTransportFactory::class, $factory);
3037

3138
$this->assertTrue($factory->supports('sns://arn:aws:sns:us-east-1:1234567890:test', []));
@@ -50,17 +57,17 @@ public function test send message(): void
5057
return true;
5158
}))
5259
->willReturn(ResultMockFactory::create(PublishResponse::class, ['MessageId' => 4711]));
53-
$this->container->set('bref.messenger.sns_client', $sns);
60+
self::getContainer()->set('bref.messenger.sns_client', $sns);
5461

5562
/** @var MessageBusInterface $bus */
56-
$bus = $this->container->get(MessageBusInterface::class);
63+
$bus = self::getContainer()->get(MessageBusInterface::class);
5764
$bus->dispatch(new TestMessage('hello'));
5865
}
5966

6067
public function testRejectsMessageWhenQueueIsFifoWithoutStamp()
6168
{
6269
$snsClient = $this->getMockBuilder(SnsClient::class)->disableOriginalConstructor()->getMock();
63-
$serializer = $this->container->get(SerializerInterface::class);
70+
$serializer = self::getContainer()->get(SerializerInterface::class);
6471
$snsTransport = new SnsTransport($snsClient, $serializer, "arn:aws:sns:us-east-1:1234567890:test.fifo'"); // fifo suffix designates fifo queue
6572
$msg = new TestMessage("hello");
6673
$envelope = new Envelope($msg);
@@ -70,7 +77,7 @@ public function testRejectsMessageWhenQueueIsFifoWithoutStamp()
7077
public function testAcceptsMessageWhenQueueIsFifoWithStamp(){
7178
$snsClient = $this->getMockBuilder(SnsClient::class)->disableOriginalConstructor()->getMock();
7279
$snsClient->expects($this->once())->method("publish")->willReturn(ResultMockFactory::create(PublishResponse::class, ['MessageId' => 4711]));
73-
$serializer = $this->container->get(SerializerInterface::class);
80+
$serializer = self::getContainer()->get(SerializerInterface::class);
7481
$snsTransport = new SnsTransport($snsClient, $serializer, "arn:aws:sns:us-east-1:1234567890:test.fifo'"); // fifo suffix designates fifo queue
7582
$msg = new TestMessage("hello");
7683
$envelope = new Envelope($msg, [new SnsFifoStamp("123","456")]);
@@ -85,7 +92,7 @@ public function testAttachingSnsFifoStampToMessageAppliesMessageGroupId(){
8592
return true;
8693
}))
8794
->willReturn(ResultMockFactory::create(PublishResponse::class, ['MessageId' => 4711]));
88-
$serializer = $this->container->get(SerializerInterface::class);
95+
$serializer = self::getContainer()->get(SerializerInterface::class);
8996
$snsTransport = new SnsTransport($snsClient, $serializer, "arn:aws:sns:us-east-1:1234567890:test.fifo'"); // fifo suffix designates fifo queue
9097
$msg = new TestMessage("hello");
9198
$envelope = new Envelope($msg, [new SnsFifoStamp("123","456")]);
@@ -100,7 +107,7 @@ public function testAttachingSnsFifoStampToMessageAppliesMessageDeDeuplicatId(){
100107
return true;
101108
}))
102109
->willReturn(ResultMockFactory::create(PublishResponse::class, ['MessageId' => 4711]));
103-
$serializer = $this->container->get(SerializerInterface::class);
110+
$serializer = self::getContainer()->get(SerializerInterface::class);
104111
$snsTransport = new SnsTransport($snsClient, $serializer, "arn:aws:sns:us-east-1:1234567890:test.fifo'"); // fifo suffix designates fifo queue
105112
$msg = new TestMessage("hello");
106113
$envelope = new Envelope($msg, [new SnsFifoStamp("123","456")]);
@@ -112,7 +119,7 @@ public function testAttachingSnsFifoStampToMessageAllowsNullMessageGroupId(){
112119
$snsClient = $this->getMockBuilder(SnsClient::class)->disableOriginalConstructor()->getMock();
113120
$snsClient->expects($this->once())->method("publish")
114121
->willReturn(ResultMockFactory::create(PublishResponse::class, ['MessageId' => 4711]));
115-
$serializer = $this->container->get(SerializerInterface::class);
122+
$serializer = self::getContainer()->get(SerializerInterface::class);
116123
$snsTransport = new SnsTransport($snsClient, $serializer, "arn:aws:sns:us-east-1:1234567890:test.fifo'"); // fifo suffix designates fifo queue
117124
$msg = new TestMessage("hello");
118125
$envelope = new Envelope($msg, [new SnsFifoStamp(null,"456")]);

tests/Functional/TestKernel.php

-34
This file was deleted.

0 commit comments

Comments
 (0)