Skip to content

Commit 3d62474

Browse files
committed
chore: improved plugin priority handling
1 parent 40802dc commit 3d62474

4 files changed

Lines changed: 15 additions & 32 deletions

File tree

src/Api.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@
1717
use ProgrammatorDev\Api\Event\ResponseContentsEvent;
1818
use ProgrammatorDev\Api\Exception\ConfigException;
1919
use ProgrammatorDev\Api\Helper\StringHelperTrait;
20-
use ProgrammatorDev\YetAnotherPhpValidator\Exception\ValidationException;
21-
use ProgrammatorDev\YetAnotherPhpValidator\Validator;
2220
use Psr\Http\Message\RequestInterface;
2321
use Psr\Http\Message\StreamInterface;
2422
use Symfony\Component\EventDispatcher\EventDispatcher;

src/Builder/ClientBuilder.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,6 @@ public function __construct(
3030

3131
public function getClient(): HttpMethodsClient
3232
{
33-
// sort plugins by priority (key) in descending order
34-
\krsort($this->plugins);
35-
3633
$pluginClientFactory = new PluginClientFactory();
3734
$client = $pluginClientFactory->createClient($this->client, $this->plugins);
3835

@@ -84,6 +81,9 @@ public function addPlugin(Plugin $plugin, int $priority): self
8481

8582
$this->plugins[$priority] = $plugin;
8683

84+
// sort plugins by priority (key) in descending order
85+
\krsort($this->plugins);
86+
8787
return $this;
8888
}
8989

tests/Integration/ApiTest.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,10 @@
99
use ProgrammatorDev\Api\Builder\CacheBuilder;
1010
use ProgrammatorDev\Api\Builder\ClientBuilder;
1111
use ProgrammatorDev\Api\Builder\LoggerBuilder;
12-
use ProgrammatorDev\Api\Event\PostRequestEvent;
1312
use ProgrammatorDev\Api\Event\ResponseContentsEvent;
1413
use ProgrammatorDev\Api\Exception\ConfigException;
1514
use ProgrammatorDev\Api\Test\AbstractTestCase;
1615
use ProgrammatorDev\Api\Test\MockResponse;
17-
use ProgrammatorDev\YetAnotherPhpValidator\Exception\ValidationException;
1816
use Psr\Cache\CacheItemPoolInterface;
1917
use Psr\Http\Message\RequestInterface;
2018
use Psr\Http\Message\StreamInterface;

tests/Unit/Builder/ClientBuilderTest.php

Lines changed: 12 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,20 @@ public function testAddPlugin()
5656
$clientBuilder = new ClientBuilder();
5757

5858
$clientBuilder->addPlugin($plugin, 1);
59+
$clientBuilder->addPlugin($plugin, 3);
5960
$clientBuilder->addPlugin($plugin, 2);
6061

61-
$this->assertCount(2, $clientBuilder->getPlugins());
62+
$this->assertCount(3, $clientBuilder->getPlugins());
63+
// plugins array keys are used as priority [priority => plugin]
64+
// so check if order of keys (priority) is sorted
65+
$this->assertSame(
66+
[
67+
0 => 3,
68+
1 => 2,
69+
2 => 1
70+
],
71+
array_keys($clientBuilder->getPlugins())
72+
);
6273
}
6374

6475
public function testAddPluginWithSamePriority()
@@ -72,28 +83,4 @@ public function testAddPluginWithSamePriority()
7283
$clientBuilder->addPlugin($plugin, 1);
7384
$clientBuilder->addPlugin($plugin, 1);
7485
}
75-
76-
public function testPluginPriorityOrder()
77-
{
78-
$plugin = $this->createMock(Plugin::class);
79-
$clientBuilder = new ClientBuilder();
80-
81-
$clientBuilder->addPlugin($plugin, 1);
82-
$clientBuilder->addPlugin($plugin, 3);
83-
$clientBuilder->addPlugin($plugin, 2);
84-
85-
// calling this method triggers plugin sorting
86-
$clientBuilder->getClient();
87-
88-
// plugins array keys are used as priority [priority => plugin]
89-
// so check if order of keys (priority) is sorted
90-
$this->assertSame(
91-
[
92-
0 => 3,
93-
1 => 2,
94-
2 => 1
95-
],
96-
array_keys($clientBuilder->getPlugins())
97-
);
98-
}
9986
}

0 commit comments

Comments
 (0)