Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
HandlersTest.php
Go to the documentation of this file.
1 <?php
7 
10 
11 class HandlersTest extends \PHPUnit\Framework\TestCase
12 {
16  private $methodsMap;
17 
21  private $validator;
22 
26  protected function setUp()
27  {
28  $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
29  $this->methodsMap = $this->getMockBuilder(MethodsMap::class)->disableOriginalConstructor()->getMock();
30  $this->validator = $objectManager->getObject(HandlersValidator::class, ['methodsMap' => $this->methodsMap]);
31  }
32 
37  public function testValidateValid($configData)
38  {
39  $this->validator->validate($configData);
40  }
41 
45  public function validConfigDataProvider()
46  {
47  return [
48  'valid' => [
49  [
50  'consumer1' => [
51  'name' => 'consumer1',
52  'queue' => 'queue1',
53  'consumerInstance' => 'consumerClass1',
54  'handlers' => [
55  ['type' => 'handlerClassOne', 'method' => 'handlerMethodOne'],
56  ['type' => 'handlerClassTwo', 'method' => 'handlerMethodTwo'],
57  ],
58  'connection' => 'connection1',
59  'maxMessages' => '100',
60  ]
61  ]
62  ],
63  'valid, empty handlers' => [
64  [
65  'consumer1' => [
66  'name' => 'consumer1',
67  'queue' => 'queue1',
68  'consumerInstance' => 'consumerClass1',
69  'handlers' => [],
70  'connection' => 'connection1',
71  'maxMessages' => null,
72  ]
73  ]
74  ],
75  ];
76  }
77 
83  public function testValidateInvalid($configData, $expectedExceptionMessage)
84  {
85  $this->expectException('\LogicException');
86  $this->expectExceptionMessage($expectedExceptionMessage);
87  $this->validator->validate($configData);
88  }
89 
93  public function invalidConfigDataProvider()
94  {
95  return [
96  'invalid, not an array' => [
97  [
98  'consumer1' => [
99  'name' => 'consumer1',
100  'queue' => 'queue1',
101  'consumerInstance' => 'consumerClass1',
102  'handlers' => ['handlerClassOne::handlerMethodOne'],
103  'connection' => 'connection1',
104  'maxMessages' => '100',
105  ]
106  ],
107  "'consumer1' consumer declaration is invalid. Every handler element must be an array."
108  . " It must contain 'type' and 'method' elements."
109  ],
110  'invalid, no required fields' => [
111  [
112  'consumer1' => [
113  'name' => 'consumer1',
114  'queue' => 'queue1',
115  'consumerInstance' => 'consumerClass1',
116  'handlers' => [
117  ['handlerClassOne::handlerMethodOne']
118  ],
119  'connection' => 'connection1',
120  'maxMessages' => '100',
121  ]
122  ],
123  "'consumer1' consumer declaration is invalid. Every handler element must be an array."
124  . " It must contain 'type' and 'method' elements."
125  ],
126  'invalid, no method' => [
127  [
128  'consumer1' => [
129  'name' => 'consumer1',
130  'queue' => 'queue1',
131  'consumerInstance' => 'consumerClass1',
132  'handlers' => [
133  ['type' => 'handlerClassOne']
134  ],
135  'connection' => 'connection1',
136  'maxMessages' => '100',
137  ]
138  ],
139  "'consumer1' consumer declaration is invalid. Every handler element must be an array."
140  . " It must contain 'type' and 'method' elements."
141  ],
142  'invalid, no type' => [
143  [
144  'consumer1' => [
145  'name' => 'consumer1',
146  'queue' => 'queue1',
147  'consumerInstance' => 'consumerClass1',
148  'handlers' => [
149  ['method' => 'handlerMethodOne']
150  ],
151  'connection' => 'connection1',
152  'maxMessages' => '100',
153  ]
154  ],
155  "'consumer1' consumer declaration is invalid. Every handler element must be an array."
156  . " It must contain 'type' and 'method' elements."
157  ]
158  ];
159  }
160 
162  {
163  $configData = [
164  'consumer1' => [
165  'name' => 'consumer1',
166  'queue' => 'queue1',
167  'consumerInstance' => 'consumerClass1',
168  'handlers' => [
169  ['type' => 'handlerClassOne', 'method' => 'handlerMethodOne'],
170  ],
171  'connection' => 'connection1',
172  'maxMessages' => '100',
173  ]
174  ];
175  $expectedExceptionMessage = 'Service method specified as handler for of consumer "consumer1" is not available.'
176  . ' Given "handlerClassOne::handlerMethodOne"';
177  $this->expectException('\LogicException');
178  $this->expectExceptionMessage($expectedExceptionMessage);
179 
180  $this->methodsMap->expects($this->once())
181  ->method('getMethodParams')
182  ->with('handlerClassOne', 'handlerMethodOne')
183  ->willThrowException(new \Exception(''));
184 
185  $this->validator->validate($configData);
186  }
187 }
$objectManager
Definition: bootstrap.php:17