XmlConverterCommandTest.php 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Developer\Test\Unit\Console\Command;
  7. use Magento\Developer\Console\Command\XmlConverterCommand;
  8. use Symfony\Component\Console\Tester\CommandTester;
  9. use Magento\Developer\Model\Tools\Formatter;
  10. use Magento\Framework\DomDocument\DomDocumentFactory;
  11. use Magento\Framework\XsltProcessor\XsltProcessorFactory;
  12. class XmlConverterCommandTest extends \PHPUnit\Framework\TestCase
  13. {
  14. /**
  15. * @var Formatter|\PHPUnit_Framework_MockObject_MockObject
  16. */
  17. private $formatter;
  18. /**
  19. * @var XmlConverterCommand
  20. */
  21. private $command;
  22. /**
  23. * @var DomDocumentFactory|\PHPUnit_Framework_MockObject_MockObject
  24. */
  25. private $domFactory;
  26. /**
  27. * @var XsltProcessorFactory|\PHPUnit_Framework_MockObject_MockObject
  28. */
  29. private $xsltProcessorFactory;
  30. protected function setUp()
  31. {
  32. if (!function_exists('libxml_set_external_entity_loader')) {
  33. $this->markTestSkipped('Skipped on HHVM. Will be fixed in MAGETWO-45033');
  34. }
  35. $this->formatter = $this->createMock(\Magento\Developer\Model\Tools\Formatter::class);
  36. $this->domFactory = $this->createMock(\Magento\Framework\DomDocument\DomDocumentFactory::class);
  37. $this->xsltProcessorFactory = $this->createMock(\Magento\Framework\XsltProcessor\XsltProcessorFactory::class);
  38. $this->command = new XmlConverterCommand($this->formatter, $this->domFactory, $this->xsltProcessorFactory);
  39. }
  40. public function testExecute()
  41. {
  42. $domXml = $this->createMock(\DOMDocument::class);
  43. $domXsl = clone $domXml;
  44. $domXml->expects($this->once())->method('load')->with('file.xml');
  45. $domXsl->expects($this->once())->method('load')->with('file.xsl');
  46. $this->domFactory->expects($this->at(0))->method('create')->willReturn($domXml);
  47. $this->domFactory->expects($this->at(1))->method('create')->willReturn($domXsl);
  48. $xsltProcessor = $this->createMock(\XSLTProcessor::class);
  49. $xsltProcessor->expects($this->once())->method('transformToXml')->with($domXml)->willReturn('XML');
  50. $this->xsltProcessorFactory->expects($this->once())->method('create')->willReturn($xsltProcessor);
  51. $this->formatter->expects($this->once())->method('format')->with('XML')->willReturn('result');
  52. $commandTester = new CommandTester($this->command);
  53. $commandTester->execute(
  54. [
  55. XmlConverterCommand::XML_FILE_ARGUMENT => 'file.xml',
  56. XmlConverterCommand::PROCESSOR_ARGUMENT => 'file.xsl'
  57. ]
  58. );
  59. $this->assertContains('result', $commandTester->getDisplay());
  60. }
  61. /**
  62. * @expectedException \RuntimeException
  63. * @expectedExceptionMessage Not enough arguments
  64. */
  65. public function testWrongParameter()
  66. {
  67. $commandTester = new CommandTester($this->command);
  68. $commandTester->execute([]);
  69. }
  70. }