PoolTest.php 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\Pricing\Test\Unit\Adjustment;
  7. use \Magento\Framework\Pricing\Adjustment\Pool;
  8. class PoolTest extends \PHPUnit\Framework\TestCase
  9. {
  10. /**
  11. * @var \Magento\Framework\Pricing\Adjustment\Pool
  12. */
  13. public $model;
  14. protected function setUp()
  15. {
  16. $adjustmentsData = [
  17. 'adj1' => ['className' => 'adj1_class', 'sortOrder' => 10],
  18. 'adj2' => ['className' => 'adj2_class', 'sortOrder' => 20],
  19. 'adj3' => ['className' => 'adj3_class', 'sortOrder' => 5],
  20. 'adj4' => ['className' => 'adj4_class', 'sortOrder' => null],
  21. 'adj5' => ['className' => 'adj5_class'],
  22. ];
  23. /** @var Factory|\PHPUnit_Framework_MockObject_MockObject $adjustmentFactory */
  24. $adjustmentFactory = $this->getMockBuilder(\Magento\Framework\Pricing\Adjustment\Factory::class)
  25. ->disableOriginalConstructor()
  26. ->setMethods(['create'])
  27. ->getMock();
  28. $adjustmentFactory->expects($this->any())->method('create')->will(
  29. $this->returnCallback(
  30. function ($className, $data) {
  31. return $className . '|' . $data['sortOrder'];
  32. }
  33. )
  34. );
  35. $this->model = new Pool($adjustmentFactory, $adjustmentsData);
  36. }
  37. public function testGetAdjustments()
  38. {
  39. $expectedResult = [
  40. 'adj1' => 'adj1_class|10',
  41. 'adj2' => 'adj2_class|20',
  42. 'adj3' => 'adj3_class|5',
  43. 'adj4' => 'adj4_class|' . \Magento\Framework\Pricing\Adjustment\Pool::DEFAULT_SORT_ORDER,
  44. 'adj5' => 'adj5_class|' . \Magento\Framework\Pricing\Adjustment\Pool::DEFAULT_SORT_ORDER,
  45. ];
  46. $result = $this->model->getAdjustments();
  47. $this->assertEquals($expectedResult, $result);
  48. }
  49. /**
  50. * @dataProvider getAdjustmentByCodeDataProvider
  51. */
  52. public function testGetAdjustmentByCode($code, $expectedResult)
  53. {
  54. $result = $this->model->getAdjustmentByCode($code);
  55. $this->assertEquals($expectedResult, $result);
  56. }
  57. /**
  58. * @return array
  59. */
  60. public function getAdjustmentByCodeDataProvider()
  61. {
  62. return [
  63. ['adj1', 'adj1_class|10'],
  64. ['adj2', 'adj2_class|20'],
  65. ['adj3', 'adj3_class|5'],
  66. ['adj4', 'adj4_class|' . \Magento\Framework\Pricing\Adjustment\Pool::DEFAULT_SORT_ORDER],
  67. ['adj5', 'adj5_class|' . \Magento\Framework\Pricing\Adjustment\Pool::DEFAULT_SORT_ORDER],
  68. ];
  69. }
  70. /**
  71. * @expectedException \InvalidArgumentException
  72. */
  73. public function testGetAdjustmentByNotExistingCode()
  74. {
  75. $this->model->getAdjustmentByCode('not_existing_code');
  76. }
  77. }