Skip to content

Commit bd0cfa7

Browse files
committed
Add another test
1 parent 97d2574 commit bd0cfa7

4 files changed

Lines changed: 139 additions & 27 deletions

File tree

src/Storage/RabbitMqStorage.php

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,34 @@
22

33
namespace Honeybee\RabbitMq3\Storage;
44

5+
use Assert\Assertion;
56
use Honeybee\Common\Error\RuntimeError;
67
use Honeybee\Infrastructure\DataAccess\Storage\Storage;
78

89
abstract class RabbitMqStorage extends Storage
910
{
1011
protected function getExchangeBindings()
1112
{
12-
$config = $this->getConfig();
13-
$vhost = $config->get('vhost', '%2f');
14-
$exchange = $config->get('exchange');
15-
16-
if (!$exchange || !is_string($exchange)) {
17-
throw new RuntimeError('Invalid exchange specified to read RabbitMq bindings from.');
18-
}
13+
$vhost = $this->getVHost();
14+
$exchange = $this->getExchange();
1915

2016
$endpoint = "/api/exchanges/$vhost/$exchange/bindings/source";
2117
return (array)$this->connector->getFromAdminApi($endpoint);
2218
}
19+
20+
protected function getExchange()
21+
{
22+
$exchange = $this->config->get('exchange');
23+
Assertion::string($exchange);
24+
Assertion::notBlank($exchange);
25+
return $exchange;
26+
}
27+
28+
protected function getVHost()
29+
{
30+
$vhost = $this->config->get('vhost', '%2f');
31+
Assertion::string($vhost);
32+
Assertion::notBlank($vhost);
33+
return $vhost;
34+
}
2335
}

src/Storage/StructureVersionList/StructureVersionListWriter.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public function write($structureVersionList, SettingsInterface $settings = null)
1616
{
1717
Assertion::isInstanceOf($structureVersionList, StructureVersionList::CLASS);
1818

19-
$exchange = $this->getConfig()->get('exchange');
19+
$exchange = $this->getExchange();
2020
$channel = $this->connector->getConnection()->channel();
2121

2222
// delete existing bindings by identifier & arguments

tests/Storage/StructureVersionList/StructureVersionListReaderTest.php

Lines changed: 31 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44

55
use Honeybee\Infrastructure\Config\ArrayConfig;
66
use Honeybee\Infrastructure\DataAccess\Storage\StorageReaderIterator;
7+
use Honeybee\Infrastructure\Migration\StructureVersion;
8+
use Honeybee\Infrastructure\Migration\StructureVersionList;
79
use Honeybee\RabbitMq3\Connector\RabbitMqConnector;
810
use Honeybee\RabbitMq3\Storage\StructureVersionList\StructureVersionListReader;
911
use Honeybee\Tests\RabbitMq3\TestCase;
1012
use Mockery;
1113
use Psr\Log\NullLogger;
12-
use Honeybee\Infrastructure\Migration\StructureVersionList;
13-
use Honeybee\Infrastructure\Migration\StructureVersion;
1414

1515
class StructureVersionListReaderTest extends TestCase
1616
{
@@ -24,12 +24,12 @@ public function setUp()
2424

2525
public function testGetIterator()
2626
{
27-
$versionReader = Mockery::mock(
27+
$versionListReader = Mockery::mock(
2828
StructureVersionListReader::CLASS.'[readAll]',
2929
[$this->mockConnector, new ArrayConfig([]), new NullLogger()]
3030
);
31-
$versionReader->shouldReceive('readAll')->once()->andReturn(['something']);
32-
$iterator = $versionReader->getIterator();
31+
$versionListReader->shouldReceive('readAll')->once()->andReturn(['something']);
32+
$iterator = $versionListReader->getIterator();
3333
$this->assertInstanceOf(StorageReaderIterator::CLASS, $iterator);
3434
$this->assertTrue($iterator->valid());
3535
}
@@ -39,28 +39,40 @@ public function testGetIterator()
3939
*/
4040
public function testReadEmptyIdentifier()
4141
{
42-
$versionReader = new StructureVersionListReader($this->mockConnector, new ArrayConfig([]), new NullLogger);
43-
$versionReader->read('');
42+
$versionListReader = new StructureVersionListReader($this->mockConnector, new ArrayConfig([]), new NullLogger);
43+
$versionListReader->read('');
4444
} //@codeCoverageIgnore
4545

4646
/**
4747
* @expectedException Assert\InvalidArgumentException
4848
*/
4949
public function testReadNonStringIdentifier()
5050
{
51-
$versionReader = new StructureVersionListReader($this->mockConnector, new ArrayConfig([]), new NullLogger);
52-
$versionReader->read(['test_id']);
51+
$versionListReader = new StructureVersionListReader($this->mockConnector, new ArrayConfig([]), new NullLogger);
52+
$versionListReader->read(['test_id']);
5353
} //@codeCoverageIgnore
5454

5555
/**
56-
* @expectedException Honeybee\Common\Error\RuntimeError
56+
* @expectedException Assert\InvalidArgumentException
5757
*/
5858
public function testReadMissingExchange()
5959
{
60-
$versionReader = new StructureVersionListReader($this->mockConnector, new ArrayConfig([]), new NullLogger);
60+
$versionListReader = new StructureVersionListReader($this->mockConnector, new ArrayConfig([]), new NullLogger);
61+
$versionListReader->read('test_id');
62+
} //@codeCoverageIgnore
63+
64+
/**
65+
* @expectedException Assert\InvalidArgumentException
66+
*/
67+
public function testReadInvalidExchange()
68+
{
69+
$versionListReader = new StructureVersionListReader(
70+
$this->mockConnector,
71+
new ArrayConfig(['exchange' => '']),
72+
new NullLogger
73+
);
6174

62-
$expectedList = new StructureVersionList('test_id');
63-
$this->assertEquals($expectedList, $versionReader->read('test_id'));
75+
$versionListReader->read('test_id');
6476
} //@codeCoverageIgnore
6577

6678
public function testReadEmpty()
@@ -69,13 +81,13 @@ public function testReadEmpty()
6981
->with('/api/exchanges/%2f/test_exchange/bindings/source')->andReturn([
7082
['routing_key' => 'not_match', 'arguments' => []]
7183
]);
72-
$versionReader = new StructureVersionListReader(
84+
$versionListReader = new StructureVersionListReader(
7385
$this->mockConnector,
7486
new ArrayConfig(['exchange' => 'test_exchange']),
7587
new NullLogger
7688
);
7789

78-
$this->assertNull($versionReader->read('test_id'));
90+
$this->assertNull($versionListReader->read('test_id'));
7991
}
8092

8193
public function testRead()
@@ -85,7 +97,7 @@ public function testRead()
8597
['routing_key' => 'test_id', 'arguments' => ['version' => 2]],
8698
['routing_key' => 'test_id', 'arguments' => ['version' => 1]]
8799
]);
88-
$versionReader = new StructureVersionListReader(
100+
$versionListReader = new StructureVersionListReader(
89101
$this->mockConnector,
90102
new ArrayConfig(['exchange' => 'test_exchange']),
91103
new NullLogger
@@ -95,7 +107,7 @@ public function testRead()
95107
new StructureVersion(['version' => 1]),
96108
new StructureVersion(['version' => 2])
97109
]);
98-
$this->assertEquals($expectedList, $versionReader->read('test_id'));
110+
$this->assertEquals($expectedList, $versionListReader->read('test_id'));
99111
}
100112

101113
public function testReadAll()
@@ -105,7 +117,7 @@ public function testReadAll()
105117
['routing_key' => 'test_id', 'arguments' => ['version' => 2]],
106118
['routing_key' => 'test_id', 'arguments' => ['version' => 1]]
107119
]);
108-
$versionReader = new StructureVersionListReader(
120+
$versionListReader= new StructureVersionListReader(
109121
$this->mockConnector,
110122
new ArrayConfig(['exchange' => 'test_exchange']),
111123
new NullLogger
@@ -115,6 +127,6 @@ public function testReadAll()
115127
new StructureVersion(['version' => 1]),
116128
new StructureVersion(['version' => 2])
117129
]);
118-
$this->assertEquals([$expectedList], $versionReader->readAll());
130+
$this->assertEquals([$expectedList], $versionListReader->readAll());
119131
}
120132
}
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
<?php
2+
3+
namespace Honeybee\Tests\RabbitMq3\Storage\StructureVersionList;
4+
5+
use Honeybee\Infrastructure\Config\ArrayConfig;
6+
use Honeybee\Infrastructure\Migration\StructureVersion;
7+
use Honeybee\Infrastructure\Migration\StructureVersionList;
8+
use Honeybee\RabbitMq3\Connector\RabbitMqConnector;
9+
use Honeybee\RabbitMq3\Storage\StructureVersionList\StructureVersionListWriter;
10+
use Honeybee\Tests\RabbitMq3\TestCase;
11+
use Mockery;
12+
use Psr\Log\NullLogger;
13+
14+
class StructureVersionListWriterTest extends TestCase
15+
{
16+
private $mockConnector;
17+
18+
public function setUp()
19+
{
20+
$this->mockConnector = Mockery::mock(RabbitMqConnector::CLASS);
21+
$this->mockConnector->shouldReceive('isConnected')->never();
22+
}
23+
24+
/**
25+
* @expectedException Assert\InvalidArgumentException
26+
*/
27+
public function testWriteInvalidVersionList()
28+
{
29+
$versionListWriter = new StructureVersionListWriter($this->mockConnector, new ArrayConfig([]), new NullLogger);
30+
$versionListWriter->write('invalid');
31+
} //@codeCoverageIgnore
32+
33+
/**
34+
* @expectedException Assert\InvalidArgumentException
35+
*/
36+
public function testWriteMissingExchange()
37+
{
38+
$versionListWriter = new StructureVersionListWriter($this->mockConnector, new ArrayConfig([]), new NullLogger);
39+
$versionList = new StructureVersionList('test_id');
40+
$versionListWriter->write($versionList);
41+
} //@codeCoverageIgnore
42+
43+
/**
44+
* @expectedException Assert\InvalidArgumentException
45+
*/
46+
public function testWriteInvalidExchange()
47+
{
48+
$versionListWriter = new StructureVersionListWriter(
49+
$this->mockConnector,
50+
new ArrayConfig(['exchange' => '']),
51+
new NullLogger
52+
);
53+
54+
$versionList = new StructureVersionList('test_id');
55+
$versionListWriter->write($versionList);
56+
} //@codeCoverageIgnore
57+
58+
public function testWrite()
59+
{
60+
$mockChannel = Mockery::mock(\AMQPChannel::CLASS);
61+
$mockChannel->shouldReceive('exchange_unbind', 'exchange_bind')->once()->with(
62+
'test_exchange',
63+
'test_exchange',
64+
'test_id',
65+
false,
66+
[
67+
'@type' => ['S', StructureVersion::CLASS],
68+
'target_name' => ['S', 'test_target'],
69+
'version' => ['S', 123],
70+
'created_date' => ['S', date(DATE_ISO8601)]
71+
]
72+
)->andReturnNull();
73+
$mockConnection = Mockery::mock(\AMQPConnection::CLASS);
74+
$mockConnection->shouldReceive('channel')->twice()->withNoArgs()->andReturn($mockChannel);
75+
$this->mockConnector->shouldReceive('getConnection')->twice()->withNoArgs()->andReturn($mockConnection);
76+
$versionListWriter = new StructureVersionListWriter(
77+
$this->mockConnector,
78+
new ArrayConfig(['exchange' => 'test_exchange']),
79+
new NullLogger
80+
);
81+
82+
$mockVersionList = new StructureVersionList('test_id', [new StructureVersion([
83+
'target_name' => 'test_target',
84+
'version' => 123
85+
])]);
86+
$this->assertNull($versionListWriter->write($mockVersionList));
87+
}
88+
}

0 commit comments

Comments
 (0)