SubTotalsTest.php 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Backend\Test\Unit\Model\Widget\Grid;
  7. class SubTotalsTest extends \PHPUnit\Framework\TestCase
  8. {
  9. /**
  10. * @var $_model \Magento\Backend\Model\Widget\Grid\SubTotals
  11. */
  12. protected $_model;
  13. /**
  14. * @var \PHPUnit_Framework_MockObject_MockObject
  15. */
  16. protected $_parserMock;
  17. /**
  18. * @var \PHPUnit_Framework_MockObject_MockObject
  19. */
  20. protected $_factoryMock;
  21. protected function setUp()
  22. {
  23. $this->_parserMock = $this->createMock(\Magento\Backend\Model\Widget\Grid\Parser::class);
  24. $this->_factoryMock = $this->createPartialMock(\Magento\Framework\DataObject\Factory::class, ['create']);
  25. $this->_factoryMock->expects(
  26. $this->any()
  27. )->method(
  28. 'create'
  29. )->with(
  30. ['sub_test1' => 3, 'sub_test2' => 2]
  31. )->will(
  32. $this->returnValue(new \Magento\Framework\DataObject(['sub_test1' => 3, 'sub_test2' => 2]))
  33. );
  34. $arguments = ['factory' => $this->_factoryMock, 'parser' => $this->_parserMock];
  35. $objectManagerHelper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
  36. $this->_model = $objectManagerHelper->getObject(
  37. \Magento\Backend\Model\Widget\Grid\SubTotals::class,
  38. $arguments
  39. );
  40. // setup columns
  41. $columns = ['sub_test1' => 'sum', 'sub_test2' => 'avg'];
  42. foreach ($columns as $index => $expression) {
  43. $this->_model->setColumn($index, $expression);
  44. }
  45. }
  46. protected function tearDown()
  47. {
  48. unset($this->_parserMock);
  49. unset($this->_factoryMock);
  50. }
  51. public function testCountTotals()
  52. {
  53. $expected = new \Magento\Framework\DataObject(['sub_test1' => 3, 'sub_test2' => 2]);
  54. $this->assertEquals($expected, $this->_model->countTotals($this->_getTestCollection()));
  55. }
  56. /**
  57. * Retrieve test collection
  58. *
  59. * @return \Magento\Framework\Data\Collection
  60. */
  61. protected function _getTestCollection()
  62. {
  63. $collection = new \Magento\Framework\Data\Collection(
  64. $this->createMock(\Magento\Framework\Data\Collection\EntityFactory::class)
  65. );
  66. $items = [
  67. new \Magento\Framework\DataObject(['sub_test1' => '1', 'sub_test2' => '2']),
  68. new \Magento\Framework\DataObject(['sub_test1' => '1', 'sub_test2' => '2']),
  69. new \Magento\Framework\DataObject(['sub_test1' => '1', 'sub_test2' => '2']),
  70. ];
  71. foreach ($items as $item) {
  72. $collection->addItem($item);
  73. }
  74. return $collection;
  75. }
  76. }