Skip to content

Commit 1958ac7

Browse files
OskarStarknicolas-grekas
authored andcommitted
[Notifier] Use abstract test cases in 5.2
1 parent 1573aa9 commit 1958ac7

File tree

3 files changed

+43
-59
lines changed

3 files changed

+43
-59
lines changed

Tests/LinkedInTransportFactoryTest.php

Lines changed: 20 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -2,55 +2,41 @@
22

33
namespace Symfony\Component\Notifier\Bridge\LinkedIn\Tests;
44

5-
use PHPUnit\Framework\TestCase;
65
use Symfony\Component\Notifier\Bridge\LinkedIn\LinkedInTransportFactory;
7-
use Symfony\Component\Notifier\Exception\IncompleteDsnException;
8-
use Symfony\Component\Notifier\Exception\UnsupportedSchemeException;
9-
use Symfony\Component\Notifier\Transport\Dsn;
6+
use Symfony\Component\Notifier\Tests\TransportFactoryTestCase;
7+
use Symfony\Component\Notifier\Transport\TransportFactoryInterface;
108

11-
final class LinkedInTransportFactoryTest extends TestCase
9+
final class LinkedInTransportFactoryTest extends TransportFactoryTestCase
1210
{
13-
public function testCreateWithDsn()
11+
/**
12+
* @return LinkedInTransportFactory
13+
*/
14+
public function createFactory(): TransportFactoryInterface
1415
{
15-
$factory = $this->createFactory();
16-
17-
$transport = $factory->create(Dsn::fromString('linkedin://accessToken:UserId@host.test'));
18-
19-
$this->assertSame('linkedin://host.test', (string) $transport);
20-
}
21-
22-
public function testCreateWithOnlyAccessTokenOrUserIdThrowsIncompleteDsnException()
23-
{
24-
$factory = $this->createFactory();
25-
26-
$this->expectException(IncompleteDsnException::class);
27-
$factory->create(Dsn::fromString('linkedin://AccessTokenOrUserId@default'));
16+
return new LinkedInTransportFactory();
2817
}
2918

30-
public function testSupportsReturnsTrueWithSupportedScheme()
19+
public function createProvider(): iterable
3120
{
32-
$factory = $this->createFactory();
33-
34-
$this->assertTrue($factory->supports(Dsn::fromString('linkedin://host/path')));
21+
yield [
22+
'linkedin://host.test',
23+
'linkedin://accessToken:UserId@host.test',
24+
];
3525
}
3626

37-
public function testSupportsReturnsFalseWithUnsupportedScheme()
27+
public function supportsProvider(): iterable
3828
{
39-
$factory = $this->createFactory();
40-
41-
$this->assertFalse($factory->supports(Dsn::fromString('somethingElse://host/path')));
29+
yield [true, 'linkedin://host'];
30+
yield [false, 'somethingElse://host'];
4231
}
4332

44-
public function testUnsupportedSchemeThrowsUnsupportedSchemeException()
33+
public function incompleteDsnProvider(): iterable
4534
{
46-
$factory = $this->createFactory();
47-
48-
$this->expectException(UnsupportedSchemeException::class);
49-
$factory->create(Dsn::fromString('somethingElse://accessToken:UserId@default'));
35+
yield 'missing account or user_id' => ['linkedin://AccessTokenOrUserId@default'];
5036
}
5137

52-
private function createFactory(): LinkedInTransportFactory
38+
public function unsupportedSchemeProvider(): iterable
5339
{
54-
return new LinkedInTransportFactory();
40+
yield ['somethingElse://accessToken:UserId@default'];
5541
}
5642
}

Tests/LinkedInTransportTest.php

Lines changed: 22 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,47 +2,48 @@
22

33
namespace Symfony\Component\Notifier\Bridge\LinkedIn\Tests;
44

5-
use PHPUnit\Framework\TestCase;
65
use Symfony\Component\HttpClient\MockHttpClient;
76
use Symfony\Component\Notifier\Bridge\LinkedIn\LinkedInTransport;
87
use Symfony\Component\Notifier\Exception\LogicException;
98
use Symfony\Component\Notifier\Exception\TransportException;
109
use Symfony\Component\Notifier\Message\ChatMessage;
1110
use Symfony\Component\Notifier\Message\MessageInterface;
1211
use Symfony\Component\Notifier\Message\MessageOptionsInterface;
12+
use Symfony\Component\Notifier\Message\SmsMessage;
1313
use Symfony\Component\Notifier\Notification\Notification;
14+
use Symfony\Component\Notifier\Tests\TransportTestCase;
15+
use Symfony\Component\Notifier\Transport\TransportInterface;
1416
use Symfony\Contracts\HttpClient\HttpClientInterface;
1517
use Symfony\Contracts\HttpClient\ResponseInterface;
1618

17-
final class LinkedInTransportTest extends TestCase
19+
final class LinkedInTransportTest extends TransportTestCase
1820
{
19-
public function testToStringContainsProperties()
21+
/**
22+
* @return LinkedInTransport
23+
*/
24+
public function createTransport(?HttpClientInterface $client = null): TransportInterface
2025
{
21-
$transport = $this->createTransport();
22-
23-
$this->assertSame('linkedin://host.test', (string) $transport);
26+
return (new LinkedInTransport('AuthToken', 'AccountId', $client ?: $this->createMock(HttpClientInterface::class)))->setHost('host.test');
2427
}
2528

26-
public function testSupportsChatMessage()
29+
public function toStringProvider(): iterable
2730
{
28-
$transport = $this->createTransport();
29-
30-
$this->assertTrue($transport->supports(new ChatMessage('testChatMessage')));
31-
$this->assertFalse($transport->supports($this->createMock(MessageInterface::class)));
31+
yield ['linkedin://host.test', $this->createTransport()];
3232
}
3333

34-
public function testSendNonChatMessageThrows()
34+
public function supportedMessagesProvider(): iterable
3535
{
36-
$transport = $this->createTransport();
37-
38-
$this->expectException(LogicException::class);
39-
$transport->send($this->createMock(MessageInterface::class));
36+
yield [new ChatMessage('Hello!')];
4037
}
4138

42-
public function testSendWithEmptyArrayResponseThrows()
39+
public function unsupportedMessagesProvider(): iterable
4340
{
44-
$this->expectException(TransportException::class);
41+
yield [new SmsMessage('0611223344', 'Hello!')];
42+
yield [$this->createMock(MessageInterface::class)];
43+
}
4544

45+
public function testSendWithEmptyArrayResponseThrowsTransportException()
46+
{
4647
$response = $this->createMock(ResponseInterface::class);
4748
$response->expects($this->exactly(2))
4849
->method('getStatusCode')
@@ -57,10 +58,12 @@ public function testSendWithEmptyArrayResponseThrows()
5758

5859
$transport = $this->createTransport($client);
5960

61+
$this->expectException(TransportException::class);
62+
6063
$transport->send(new ChatMessage('testMessage'));
6164
}
6265

63-
public function testSendWithErrorResponseThrows()
66+
public function testSendWithErrorResponseThrowsTransportException()
6467
{
6568
$this->expectException(TransportException::class);
6669
$this->expectExceptionMessage('testErrorCode');
@@ -187,9 +190,4 @@ public function testSendWithInvalidOptions()
187190

188191
$transport->send(new ChatMessage('testMessage', $this->createMock(MessageOptionsInterface::class)));
189192
}
190-
191-
private function createTransport(?HttpClientInterface $client = null): LinkedInTransport
192-
{
193-
return (new LinkedInTransport('AuthToken', 'AccountId', $client ?? $this->createMock(HttpClientInterface::class)))->setHost('host.test');
194-
}
195193
}

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
"require": {
1919
"php": ">=7.2.5",
2020
"symfony/http-client": "^4.3|^5.0",
21-
"symfony/notifier": "~5.2.0"
21+
"symfony/notifier": "~5.2.2"
2222
},
2323
"autoload": {
2424
"psr-4": { "Symfony\\Component\\Notifier\\Bridge\\LinkedIn\\": "" },

0 commit comments

Comments
 (0)