ReportProviderTest.php 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Analytics\Test\Unit\ReportXml;
  7. /**
  8. * A unit test for testing of the reports provider.
  9. */
  10. class ReportProviderTest extends \PHPUnit\Framework\TestCase
  11. {
  12. /**
  13. * @var \Magento\Analytics\ReportXml\ReportProvider
  14. */
  15. private $subject;
  16. /**
  17. * @var \Magento\Analytics\ReportXml\Query|\PHPUnit_Framework_MockObject_MockObject
  18. */
  19. private $queryMock;
  20. /**
  21. * @var \Magento\Framework\DB\Select|\PHPUnit_Framework_MockObject_MockObject
  22. */
  23. private $selectMock;
  24. /**
  25. * @var \IteratorIterator|\PHPUnit_Framework_MockObject_MockObject
  26. */
  27. private $iteratorMock;
  28. /**
  29. * @var \Magento\Framework\DB\Statement\Pdo\Mysql|\PHPUnit_Framework_MockObject_MockObject
  30. */
  31. private $statementMock;
  32. /**
  33. * @var \Magento\Framework\DB\Adapter\AdapterInterface|\PHPUnit_Framework_MockObject_MockObject
  34. */
  35. private $connectionMock;
  36. /**
  37. * @var \Magento\Analytics\ReportXml\QueryFactory|\PHPUnit_Framework_MockObject_MockObject
  38. */
  39. private $queryFactoryMock;
  40. /**
  41. * @var \Magento\Framework\TestFramework\Unit\Helper\ObjectManager
  42. */
  43. private $objectManagerHelper;
  44. /**
  45. * @var \Magento\Analytics\ReportXml\ConnectionFactory|\PHPUnit_Framework_MockObject_MockObject
  46. */
  47. private $connectionFactoryMock;
  48. /**
  49. * @var \Magento\Analytics\ReportXml\IteratorFactory|\PHPUnit_Framework_MockObject_MockObject
  50. */
  51. private $iteratorFactoryMock;
  52. /**
  53. * @return void
  54. */
  55. protected function setUp()
  56. {
  57. $this->selectMock = $this->getMockBuilder(
  58. \Magento\Framework\DB\Select::class
  59. )
  60. ->disableOriginalConstructor()
  61. ->getMock();
  62. $this->queryMock = $this->getMockBuilder(
  63. \Magento\Analytics\ReportXml\Query::class
  64. )
  65. ->disableOriginalConstructor()
  66. ->getMock();
  67. $this->queryMock->expects($this->any())
  68. ->method('getSelect')
  69. ->willReturn($this->selectMock);
  70. $this->iteratorMock = $this->getMockBuilder(
  71. \IteratorIterator::class
  72. )
  73. ->disableOriginalConstructor()
  74. ->getMock();
  75. $this->statementMock = $this->getMockBuilder(
  76. \Magento\Framework\DB\Statement\Pdo\Mysql::class
  77. )
  78. ->disableOriginalConstructor()
  79. ->getMock();
  80. $this->statementMock->expects($this->any())
  81. ->method('getIterator')
  82. ->willReturn($this->iteratorMock);
  83. $this->connectionMock = $this->getMockBuilder(
  84. \Magento\Framework\DB\Adapter\AdapterInterface::class
  85. )
  86. ->disableOriginalConstructor()
  87. ->getMock();
  88. $this->queryFactoryMock = $this->getMockBuilder(
  89. \Magento\Analytics\ReportXml\QueryFactory::class
  90. )
  91. ->disableOriginalConstructor()
  92. ->getMock();
  93. $this->iteratorFactoryMock = $this->getMockBuilder(
  94. \Magento\Analytics\ReportXml\IteratorFactory::class
  95. )
  96. ->disableOriginalConstructor()
  97. ->getMock();
  98. $this->iteratorMock = $this->getMockBuilder(
  99. \IteratorIterator::class
  100. )
  101. ->disableOriginalConstructor()
  102. ->getMock();
  103. $this->objectManagerHelper =
  104. new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
  105. $this->connectionFactoryMock = $this->getMockBuilder(
  106. \Magento\Analytics\ReportXml\ConnectionFactory::class
  107. )
  108. ->disableOriginalConstructor()
  109. ->getMock();
  110. $this->subject = $this->objectManagerHelper->getObject(
  111. \Magento\Analytics\ReportXml\ReportProvider::class,
  112. [
  113. 'queryFactory' => $this->queryFactoryMock,
  114. 'connectionFactory' => $this->connectionFactoryMock,
  115. 'iteratorFactory' => $this->iteratorFactoryMock
  116. ]
  117. );
  118. }
  119. /**
  120. * @return void
  121. */
  122. public function testGetReport()
  123. {
  124. $reportName = 'test_report';
  125. $connectionName = 'sales';
  126. $this->queryFactoryMock->expects($this->once())
  127. ->method('create')
  128. ->with($reportName)
  129. ->willReturn($this->queryMock);
  130. $this->connectionFactoryMock->expects($this->once())
  131. ->method('getConnection')
  132. ->with($connectionName)
  133. ->willReturn($this->connectionMock);
  134. $this->queryMock->expects($this->once())
  135. ->method('getConnectionName')
  136. ->willReturn($connectionName);
  137. $this->queryMock->expects($this->once())
  138. ->method('getConfig')
  139. ->willReturn(
  140. [
  141. 'connection' => $connectionName
  142. ]
  143. );
  144. $this->connectionMock->expects($this->once())
  145. ->method('query')
  146. ->with($this->selectMock)
  147. ->willReturn($this->statementMock);
  148. $this->iteratorFactoryMock->expects($this->once())
  149. ->method('create')
  150. ->with($this->statementMock, null)
  151. ->willReturn($this->iteratorMock);
  152. $this->assertEquals($this->iteratorMock, $this->subject->getReport($reportName));
  153. }
  154. }