BackupTest.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Backup\Test\Unit\Model;
  7. use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
  8. use Magento\Framework\App\Filesystem\DirectoryList;
  9. /**
  10. * @covers \Magento\Backup\Model\Backup
  11. */
  12. class BackupTest extends \PHPUnit\Framework\TestCase
  13. {
  14. /**
  15. * @var \Magento\Framework\TestFramework\Unit\Helper\ObjectManager
  16. */
  17. protected $objectManager;
  18. /**
  19. * @var \Magento\Backup\Model\Backup
  20. */
  21. protected $backupModel;
  22. /**
  23. * @var \Magento\Framework\Filesystem|\PHPUnit_Framework_MockObject_MockObject
  24. */
  25. protected $filesystemMock;
  26. /**
  27. * @var \Magento\Backup\Helper\Data|\PHPUnit_Framework_MockObject_MockObject
  28. */
  29. protected $dataHelperMock;
  30. /**
  31. * @var \Magento\Framework\Filesystem\Directory\WriteInterface|\PHPUnit_Framework_MockObject_MockObject
  32. */
  33. protected $directoryMock;
  34. protected function setUp()
  35. {
  36. $this->filesystemMock = $this->getMockBuilder(\Magento\Framework\Filesystem::class)
  37. ->disableOriginalConstructor()
  38. ->getMock();
  39. $this->dataHelperMock = $this->getMockBuilder(\Magento\Backup\Helper\Data::class)
  40. ->disableOriginalConstructor()
  41. ->getMock();
  42. $this->directoryMock = $this->getMockBuilder(\Magento\Framework\Filesystem\Directory\WriteInterface::class)
  43. ->getMock();
  44. $this->filesystemMock->expects($this->atLeastOnce())
  45. ->method('getDirectoryWrite')
  46. ->with(DirectoryList::VAR_DIR)
  47. ->willReturn($this->directoryMock);
  48. $this->objectManager = new ObjectManager($this);
  49. $this->backupModel = $this->objectManager->getObject(
  50. \Magento\Backup\Model\Backup::class,
  51. [
  52. 'filesystem' => $this->filesystemMock,
  53. 'helper' => $this->dataHelperMock
  54. ]
  55. );
  56. }
  57. /**
  58. * @covers \Magento\Backup\Model\Backup::output
  59. * @param bool $isFile
  60. * @param string $result
  61. * @dataProvider outputDataProvider
  62. */
  63. public function testOutput($isFile, $result)
  64. {
  65. $path = '/path/to';
  66. $time = 1;
  67. $name = 'test';
  68. $type = 'db';
  69. $extension = 'sql';
  70. $relativePath = '/path/to/1_db_test.sql';
  71. $contents = 'test_result';
  72. $this->directoryMock->expects($this->atLeastOnce())
  73. ->method('isFile')
  74. ->with($relativePath)
  75. ->willReturn($isFile);
  76. $this->directoryMock->expects($this->any())
  77. ->method('getRelativePath')
  78. ->with($relativePath)
  79. ->willReturn($relativePath);
  80. $this->directoryMock->expects($this->any())
  81. ->method('readFile')
  82. ->with($relativePath)
  83. ->willReturn($contents);
  84. $this->dataHelperMock->expects($this->any())
  85. ->method('getExtensionByType')
  86. ->with($type)
  87. ->willReturn($extension);
  88. $this->backupModel->setPath($path);
  89. $this->backupModel->setName($name);
  90. $this->backupModel->setTime($time);
  91. $this->assertEquals($result, $this->backupModel->output());
  92. }
  93. /**
  94. * @return array
  95. */
  96. public function outputDataProvider()
  97. {
  98. return [
  99. ['isFile' => true, 'result' => 'test_result'],
  100. ['isFile' => false, 'result' => null]
  101. ];
  102. }
  103. }