Skip to content

Commit a5b5837

Browse files
authored
Merge pull request #10 from hrodic/1.x-dev
allow optionality of drivers and defaults
2 parents c650ccf + fc3ad34 commit a5b5837

File tree

3 files changed

+50
-20
lines changed

3 files changed

+50
-20
lines changed

src/PHPUnit/Runner/Extension/Configuration.php

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -46,24 +46,32 @@ public function __construct(array $params)
4646
if (empty($params)) {
4747
throw new TestingException('Configuration parameters are empty');
4848
}
49-
if (!isset($params[self::PDO_KEY])) {
50-
$params[self::PDO_KEY] = [];
49+
if (isset($params[self::PDO_KEY])) {
50+
if ($invalidConfigParams = array_diff_key($params[self::PDO_KEY], self::$defaultPDOParams)) {
51+
throw new TestingException(
52+
'The following elements are not valid PDO configuration params: ' . json_encode($invalidConfigParams)
53+
);
54+
}
55+
$this->PDOParams = array_merge(self::$defaultPDOParams, $params[self::PDO_KEY]);
5156
}
52-
if ($invalidConfigParams = array_diff_key($params[self::PDO_KEY], self::$defaultPDOParams)) {
53-
throw new TestingException(
54-
'The following elements are not valid PDO configuration params: ' . json_encode($invalidConfigParams)
55-
);
57+
if (isset($params[self::AMQP_KEY])) {
58+
if ($invalidConfigParams = array_diff_key($params[self::AMQP_KEY], self::$defaultAMQPParams)) {
59+
throw new TestingException(
60+
'The following elements are not valid AMQP configuration params: ' . json_encode($invalidConfigParams)
61+
);
62+
}
63+
$this->AMQPParams = array_merge(self::$defaultAMQPParams, $params[self::AMQP_KEY]);
5664
}
57-
if (!isset($params[self::AMQP_KEY])) {
58-
$params[self::AMQP_KEY] = [];
59-
}
60-
if ($invalidConfigParams = array_diff_key($params[self::AMQP_KEY], self::$defaultAMQPParams)) {
61-
throw new TestingException(
62-
'The following elements are not valid AMQP configuration params: ' . json_encode($invalidConfigParams)
63-
);
64-
}
65-
$this->PDOParams = array_merge(self::$defaultPDOParams, $params[self::PDO_KEY]);
66-
$this->AMQPParams = array_merge(self::$defaultAMQPParams, $params[self::AMQP_KEY]);
65+
}
66+
67+
public function hasPDOFixtures(): bool
68+
{
69+
return !empty($this->PDOParams);
70+
}
71+
72+
public function hasAMQPFixtures(): bool
73+
{
74+
return !empty($this->AMQPParams);
6775
}
6876

6977
public function getPDODSN(): string
@@ -83,7 +91,7 @@ public function getPDOPassword(): string
8391

8492
public function getPDOFixtures(): array
8593
{
86-
return $this->PDOParams['fixtures'];
94+
return isset($this->PDOParams['fixtures']) ? $this->PDOParams['fixtures'] : [];
8795
}
8896

8997
public function getAMQPHost(): string
@@ -113,6 +121,6 @@ public function getAMQPVhost(): string
113121

114122
public function getAMQPFixtures(): array
115123
{
116-
return $this->AMQPParams['fixtures'];
124+
return isset($this->AMQPParams['fixtures']) ? $this->AMQPParams['fixtures'] : [];
117125
}
118126
}

src/PHPUnit/Runner/Extension/Handler.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ private function getConfigurationFromFileName(string $fileName): Configuration
8888
*/
8989
public function initPDOFixtureLoader(Configuration $configuration): void
9090
{
91-
if ($configuration->getPDODSN()) {
91+
if ($configuration->hasPDOFixtures() && $configuration->getPDODSN()) {
9292
$pdoFixtureConfig = new PDOFixtureConfig($configuration->getPDOFixtures());
9393
$pdoConnection = new PDOConnection(
9494
$configuration->getPDODSN(),
@@ -101,7 +101,7 @@ public function initPDOFixtureLoader(Configuration $configuration): void
101101

102102
public function initAMQPFixtureLoader(Configuration $configuration): void
103103
{
104-
if ($configuration->getAMQPFixtures()) {
104+
if ($configuration->hasAMQPFixtures() && $configuration->getAMQPFixtures()) {
105105
$amqpFixtureConfig = new AMQPFixtureConfig($configuration->getAMQPFixtures());
106106
$amqpConnection = AMQPConnection::create(
107107
$configuration->getAMQPHost(),

tests/unit/PHPUnit/Runner/Extension/ConfigurationTest.php

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,16 @@ public function testConfigurationWithOnlyPDOParams(): void
4343
$this->assertSame('mysql:host=mariadb:3306;dbname=test;charset=utf8', $sut->getPDODSN());
4444
$this->assertSame('mariadb_user', $sut->getPDOUser());
4545
$this->assertSame('mariadb_password', $sut->getPDOPassword());
46+
$this->assertSame([], $sut->getAMQPFixtures());
47+
}
48+
49+
public function testConfigurationWithPDOParamsAndDefaultAMQP(): void
50+
{
51+
$arrayConfig = array_merge($this->getPDOOnlyJSONConfiguration(), ['amqp' => []]);
52+
$sut = new Configuration($arrayConfig);
53+
$this->assertSame('mysql:host=mariadb:3306;dbname=test;charset=utf8', $sut->getPDODSN());
54+
$this->assertSame('mariadb_user', $sut->getPDOUser());
55+
$this->assertSame('mariadb_password', $sut->getPDOPassword());
4656
$this->assertSame([
4757
'beforeFirstTest' => [],
4858
'beforeTest' => [],
@@ -59,6 +69,18 @@ public function testConfigurationWithOnlyAMQPParams(): void
5969
$this->assertSame('rabbitmq_user', $sut->getAMQPUser());
6070
$this->assertSame('rabbitmq_password', $sut->getAMQPPassword());
6171
$this->assertSame('/', $sut->getAMQPVhost());
72+
$this->assertSame([], $sut->getPDOFixtures());
73+
}
74+
75+
public function testConfigurationWithAMQPParamsAndDefaultPDO(): void
76+
{
77+
$arrayConfig = array_merge($this->getAMQPOnlyJSONConfiguration(), ['pdo' => []]);
78+
$sut = new Configuration($arrayConfig);
79+
$this->assertSame('rabbitmq', $sut->getAMQPHost());
80+
$this->assertSame(5672, $sut->getAMQPPort());
81+
$this->assertSame('rabbitmq_user', $sut->getAMQPUser());
82+
$this->assertSame('rabbitmq_password', $sut->getAMQPPassword());
83+
$this->assertSame('/', $sut->getAMQPVhost());
6284
$this->assertSame([
6385
'beforeFirstTest' => [],
6486
'beforeTest' => [],

0 commit comments

Comments
 (0)