24 private $configInterfaceMock;
29 private $reportValidatorMock;
34 private $providerFactoryMock;
39 private $reportProviderMock;
44 private $objectManagerHelper;
49 private $directoryMock;
54 private $reportWriter;
59 private $reportName =
'testReport';
64 private $providerName =
'testProvider';
69 private $providerClass =
'Magento\Analytics\Provider';
76 $this->configInterfaceMock = $this->getMockBuilder(ConfigInterface::class)->getMockForAbstractClass();
77 $this->reportValidatorMock = $this->getMockBuilder(ReportValidator::class)
78 ->disableOriginalConstructor()->getMock();
79 $this->providerFactoryMock = $this->getMockBuilder(ProviderFactory::class)
80 ->disableOriginalConstructor()->getMock();
81 $this->reportProviderMock = $this->getMockBuilder(ReportProvider::class)
82 ->disableOriginalConstructor()->getMock();
83 $this->directoryMock = $this->getMockBuilder(WriteInterface::class)->getMockForAbstractClass();
84 $this->objectManagerHelper =
new ObjectManagerHelper($this);
86 $this->reportWriter = $this->objectManagerHelper->getObject(
89 'config' => $this->configInterfaceMock,
90 'reportValidator' => $this->reportValidatorMock,
91 'providerFactory' => $this->providerFactoryMock
106 [
'number' => 1,
'type' =>
'Shoes Usual']
108 $this->configInterfaceMock
109 ->expects($this->once())
113 $this->providerFactoryMock
114 ->expects($this->once())
116 ->with($this->providerClass)
117 ->willReturn($this->reportProviderMock);
118 $parameterName = isset(reset(
$configData)[0][
'parameters'][
'name'])
121 $this->reportProviderMock->expects($this->once())
122 ->method(
'getReport')
123 ->with($parameterName ?:
null)
124 ->willReturn($fileData);
125 $errorStreamMock = $this->getMockBuilder(
127 )->getMockForAbstractClass();
129 ->expects($this->once())
133 ->expects($this->exactly(2))
136 [array_keys($fileData[0])],
139 $errorStreamMock->expects($this->once())->method(
'unlock');
140 $errorStreamMock->expects($this->once())->method(
'close');
141 if ($parameterName) {
142 $this->reportValidatorMock
143 ->expects($this->once())
145 ->with($parameterName)
149 ->expects($this->once())
152 $this->stringContains(
'/var/tmp' . $parameterName ?: $this->reportName),
154 )->willReturn($errorStreamMock);
155 $this->assertTrue($this->reportWriter->write($this->directoryMock,
'/var/tmp'));
166 $errors = [
'orders',
'SQL Error: test'];
167 $this->configInterfaceMock->expects($this->once())->method(
'get')->willReturn([
$configData]);
168 $errorStreamMock = $this->getMockBuilder(
170 )->getMockForAbstractClass();
171 $errorStreamMock->expects($this->once())->method(
'lock');
172 $errorStreamMock->expects($this->once())->method(
'writeCsv')->with(
$errors);
173 $errorStreamMock->expects($this->once())->method(
'unlock');
174 $errorStreamMock->expects($this->once())->method(
'close');
175 $this->reportValidatorMock->expects($this->once())->method(
'validate')->willReturn(
$errors);
176 $this->directoryMock->expects($this->once())->method(
'openFile')->with(
'/var/tmp' .
'errors.csv',
'w+')
177 ->willReturn($errorStreamMock);
178 $this->assertTrue($this->reportWriter->write($this->directoryMock,
'/var/tmp'));
186 $this->configInterfaceMock->expects($this->once())->method(
'get')->willReturn([]);
187 $this->reportValidatorMock->expects($this->never())->method(
'validate');
188 $this->directoryMock->expects($this->never())->method(
'openFile');
189 $this->assertTrue($this->reportWriter->write($this->directoryMock,
'/var/tmp'));
198 'reportProvider' => [
202 'name' => $this->providerName,
203 'class' => $this->providerClass,
205 'name' => $this->reportName
testWrite(array $configData)
testWriteErrorFile($configData)