23 private $communicationConfig;
28 private $queueNameBuilder;
37 $this->configData = $this->createMock(Data::class);
38 $this->communicationConfig = $this->createMock(CommunicationConfig::class);
39 $this->queueNameBuilder = $this->createMock(ResponseQueueNameBuilder::class);
40 $this->model =
new DataMapper($this->configData, $this->communicationConfig, $this->queueNameBuilder);
49 'connection' =>
'amqp',
52 'autoDelete' =>
false,
53 'arguments' => [
'some' =>
'argument'],
58 'destinationType' =>
'queue',
59 'destination' =>
'some.queue',
61 'arguments' => [
'some' =>
'arguments'],
66 'destinationType' =>
'queue',
67 'destination' =>
'some.queue',
69 'arguments' => [
'some' =>
'arguments'],
76 'connection' =>
'amqp',
79 'autoDelete' =>
false,
80 'arguments' => [
'some' =>
'argument'],
85 'destinationType' =>
'exchange',
86 'destination' =>
'some.exchange',
88 'arguments' => [
'some' =>
'arguments'],
95 [
'topic01', [
'name' =>
'topic01',
'is_synchronous' =>
true]],
96 [
'topic02', [
'name' =>
'topic02',
'is_synchronous' =>
false]],
99 $this->communicationConfig->expects($this->exactly(2))->method(
'getTopic')->willReturnMap($communicationMap);
100 $this->configData->expects($this->once())->method(
'get')->willReturn(
$data);
101 $this->queueNameBuilder->expects($this->once())
102 ->method(
'getQueueName')
104 ->willReturn(
'responseQueue.topic01');
106 $actualResult = $this->model->getMappedData();
108 'responseQueue.topic01--amqp' => [
109 'name' =>
'responseQueue.topic01',
110 'connection' =>
'amqp',
112 'autoDelete' =>
false,
115 'some.queue--amqp' => [
116 'name' =>
'some.queue',
117 'connection' =>
'amqp',
119 'autoDelete' =>
false,
123 $this->assertEquals($expectedResult, $actualResult);
135 'connection' =>
'amqp',
138 'autoDelete' =>
false,
139 'arguments' => [
'some' =>
'argument'],
144 'destinationType' =>
'queue',
145 'destination' =>
'some.queue',
147 'arguments' => [
'some' =>
'arguments'],
152 'destinationType' =>
'queue',
153 'destination' =>
'some.queue',
155 'arguments' => [
'some' =>
'arguments'],
159 'topic' =>
'topic01',
160 'destinationType' =>
'queue',
161 'destination' =>
'some.queue',
163 'arguments' => [
'some' =>
'arguments'],
170 'connection' =>
'amqp',
173 'autoDelete' =>
false,
174 'arguments' => [
'some' =>
'argument'],
178 'topic' =>
'#.some.*',
179 'destinationType' =>
'queue',
180 'destination' =>
'some.queue',
182 'arguments' => [
'some' =>
'arguments'],
188 $communicationData = [
189 'topic01' => [
'name' =>
'topic01',
'is_synchronous' =>
true],
190 'topic02' => [
'name' =>
'topic02',
'is_synchronous' =>
true],
191 'topic03' => [
'name' =>
'topic03',
'is_synchronous' =>
true],
192 'topic04.04.04' => [
'name' =>
'topic04.04.04',
'is_synchronous' =>
true],
193 'topic05.05' => [
'name' =>
'topic05.05',
'is_synchronous' =>
true],
194 'topic06.06.06' => [
'name' =>
'topic06.06.06',
'is_synchronous' =>
false],
195 'topic07' => [
'name' =>
'topic07',
'is_synchronous' =>
false],
196 'topic08.part2.some.test' => [
'name' =>
'topic08.part2.some.test',
'is_synchronous' =>
true],
199 $this->communicationConfig->expects($this->once())
202 ->willReturn([
'name' =>
'topic01',
'is_synchronous' =>
true]);
203 $this->communicationConfig->expects($this->any())->method(
'getTopics')->willReturn($communicationData);
204 $this->configData->expects($this->once())->method(
'get')->willReturn(
$data);
205 $this->queueNameBuilder->expects($this->any())
206 ->method(
'getQueueName')
207 ->willReturnCallback(
function (
$value) {
208 return 'responseQueue.' .
$value;
211 $actualResult = $this->model->getMappedData();
213 'responseQueue.topic01--amqp' => [
214 'name' =>
'responseQueue.topic01',
215 'connection' =>
'amqp',
217 'autoDelete' =>
false,
220 'some.queue--amqp' => [
221 'name' =>
'some.queue',
222 'connection' =>
'amqp',
224 'autoDelete' =>
false,
227 'responseQueue.topic02--amqp' => [
228 'name' =>
'responseQueue.topic02',
229 'connection' =>
'amqp',
231 'autoDelete' =>
false,
234 'responseQueue.topic03--amqp' => [
235 'name' =>
'responseQueue.topic03',
236 'connection' =>
'amqp',
238 'autoDelete' =>
false,
241 'responseQueue.topic04.04.04--amqp' => [
242 'name' =>
'responseQueue.topic04.04.04',
243 'connection' =>
'amqp',
245 'autoDelete' =>
false,
248 'responseQueue.topic05.05--amqp' => [
249 'name' =>
'responseQueue.topic05.05',
250 'connection' =>
'amqp',
252 'autoDelete' =>
false,
255 'responseQueue.topic08.part2.some.test--amqp' => [
256 'name' =>
'responseQueue.topic08.part2.some.test',
257 'connection' =>
'amqp',
259 'autoDelete' =>
false,
263 $this->assertEquals($expectedResult, $actualResult);
testGetMappedDataForWildcard()