Skip to content

Commit 7b5bdf7

Browse files
authored
Merge pull request #152 from fbourigault/fix-profile-client-factory
Fix ProfileClient creation with callable factory
2 parents f63b15e + e191594 commit 7b5bdf7

File tree

2 files changed

+57
-1
lines changed

2 files changed

+57
-1
lines changed

Collector/ProfileClientFactory.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public function __construct($factory, Collector $collector, Formatter $formatter
5151
*/
5252
public function createClient(array $config = [])
5353
{
54-
$client = is_callable($this->factory) ? $this->factory($config) : $this->factory->createClient($config);
54+
$client = is_callable($this->factory) ? call_user_func($this->factory, $config) : $this->factory->createClient($config);
5555

5656
if (!($client instanceof HttpClient && $client instanceof HttpAsyncClient)) {
5757
$client = new FlexibleHttpClient($client);
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
<?php
2+
3+
namespace Http\HttplugBundle\Tests\Unit\Collector;
4+
5+
use Http\Client\HttpClient;
6+
use Http\HttplugBundle\ClientFactory\ClientFactory;
7+
use Http\HttplugBundle\Collector\Collector;
8+
use Http\HttplugBundle\Collector\Formatter;
9+
use Http\HttplugBundle\Collector\ProfileClient;
10+
use Http\HttplugBundle\Collector\ProfileClientFactory;
11+
12+
class ProfileClientFactoryTest extends \PHPUnit_Framework_TestCase
13+
{
14+
/**
15+
* @var Collector
16+
*/
17+
private $collector;
18+
19+
/**
20+
* @var Formatter
21+
*/
22+
private $formatter;
23+
24+
/**
25+
* @var HttpClient
26+
*/
27+
private $client;
28+
29+
public function setUp()
30+
{
31+
$this->collector = $this->getMockBuilder(Collector::class)->disableOriginalConstructor()->getMock();
32+
$this->formatter = $this->getMockBuilder(Formatter::class)->disableOriginalConstructor()->getMock();
33+
$this->client = $this->getMockBuilder(HttpClient::class)->getMock();
34+
}
35+
36+
public function testCreateClientFromClientFactory()
37+
{
38+
$factory = $this->getMockBuilder(ClientFactory::class)->getMock();
39+
$factory->method('createClient')->willReturn($this->client);
40+
41+
$subject = new ProfileClientFactory($factory, $this->collector, $this->formatter);
42+
43+
$this->assertInstanceOf(ProfileClient::class, $subject->createClient());
44+
}
45+
46+
public function testCreateClientFromCallable()
47+
{
48+
$factory = function ($config) {
49+
return $this->client;
50+
};
51+
52+
$subject = new ProfileClientFactory($factory, $this->collector, $this->formatter);
53+
54+
$this->assertInstanceOf(ProfileClient::class, $subject->createClient());
55+
}
56+
}

0 commit comments

Comments
 (0)