ValidatorResultMergerTest.php 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. declare(strict_types=1);
  7. namespace Magento\Sales\Test\Unit\Model;
  8. use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
  9. use Magento\Sales\Model\ValidatorResultInterface;
  10. use Magento\Sales\Model\ValidatorResultInterfaceFactory;
  11. use Magento\Sales\Model\ValidatorResultMerger;
  12. /**
  13. * @covers \Magento\Sales\Model\ValidatorResultMerger
  14. */
  15. class ValidatorResultMergerTest extends \PHPUnit\Framework\TestCase
  16. {
  17. /**
  18. * Testable Object
  19. *
  20. * @var ValidatorResultMerger
  21. */
  22. private $validatorResultMerger;
  23. /**
  24. * Object Manager
  25. *
  26. * @var ObjectManager
  27. */
  28. private $objectManager;
  29. /**
  30. * @var ValidatorResultInterfaceFactory|\PHPUnit_Framework_MockObject_MockObject
  31. */
  32. private $validatorResultFactoryMock;
  33. /**
  34. * Set Up
  35. *
  36. * @return void
  37. */
  38. protected function setUp()
  39. {
  40. $this->validatorResultFactoryMock = $this->getMockBuilder(ValidatorResultInterfaceFactory::class)
  41. ->setMethods(['create'])->disableOriginalConstructor()->getMock();
  42. $this->objectManager = new ObjectManager($this);
  43. $this->validatorResultMerger = $this->objectManager->getObject(
  44. ValidatorResultMerger::class,
  45. [
  46. 'validatorResultInterfaceFactory' => $this->validatorResultFactoryMock,
  47. ]
  48. );
  49. }
  50. /**
  51. * Test merge method
  52. *
  53. * @return void
  54. */
  55. public function testMerge()
  56. {
  57. $validatorResultMock = $this->createMock(ValidatorResultInterface::class);
  58. $orderValidationResultMock = $this->createMock(ValidatorResultInterface::class);
  59. $creditmemoValidationResultMock = $this->createMock(ValidatorResultInterface::class);
  60. $itemsValidationMessages = [['test04', 'test05'], ['test06']];
  61. $this->validatorResultFactoryMock->expects($this->once())->method('create')
  62. ->willReturn($validatorResultMock);
  63. $orderValidationResultMock->expects($this->once())->method('getMessages')->willReturn(['test01', 'test02']);
  64. $creditmemoValidationResultMock->expects($this->once())->method('getMessages')->willReturn(['test03']);
  65. $validatorResultMock->expects($this->at(0))->method('addMessage')->with('test01');
  66. $validatorResultMock->expects($this->at(1))->method('addMessage')->with('test02');
  67. $validatorResultMock->expects($this->at(2))->method('addMessage')->with('test03');
  68. $validatorResultMock->expects($this->at(3))->method('addMessage')->with('test04');
  69. $validatorResultMock->expects($this->at(4))->method('addMessage')->with('test05');
  70. $validatorResultMock->expects($this->at(5))->method('addMessage')->with('test06');
  71. $expected = $validatorResultMock;
  72. $actual = $this->validatorResultMerger->merge(
  73. $orderValidationResultMock,
  74. $creditmemoValidationResultMock,
  75. ...$itemsValidationMessages
  76. );
  77. $this->assertEquals($expected, $actual);
  78. }
  79. }