UpdaterTaskCreatorTest.php 3.7 KB
Newer Older
Ketan's avatar
Ketan committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
<?php
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */

namespace Magento\Setup\Test\Unit\Model;

use \Magento\Setup\Model\ObjectManagerProvider;
use \Magento\Setup\Model\UpdaterTaskCreator;

class UpdaterTaskCreatorTest extends \PHPUnit\Framework\TestCase
{
    /**
     * @var \Magento\Setup\Model\Updater|\PHPUnit_Framework_MockObject_MockObject
     */
    private $updater;

    /**
     * @var \Magento\Framework\Filesystem|\PHPUnit_Framework_MockObject_MockObject
     */
    private $filesystem;

    /**
     * @var Navigation|\PHPUnit_Framework_MockObject_MockObject
     */
    private $navigation;

    /**
     * @var ObjectManagerProvider|\PHPUnit_Framework_MockObject_MockObject
     */
    private $objectManagerProvider;

    public function setUp()
    {
        $this->updater = $this->createMock(\Magento\Setup\Model\Updater::class);
        $this->objectManagerProvider =
            $this->createMock(\Magento\Setup\Model\ObjectManagerProvider::class);
        $this->filesystem = $this->createMock(\Magento\Framework\Filesystem::class);
        $this->navigation = $this->createMock(\Magento\Setup\Model\Navigation::class);
        $this->model = new UpdaterTaskCreator(
            $this->filesystem,
            $this->navigation,
            $this->updater,
            $this->objectManagerProvider
        );
        $this->navigation->expects($this->any())
            ->method('getMenuItems')
            ->willReturn([
                ['title' => 'A', 'type' => 'update'],
                ['title' => 'B', 'type' => 'upgrade'],
                ['title' => 'C', 'type' => 'enable'],
                ['title' => 'D', 'type' => 'disable'],
            ]);
    }

    /**
     * @param array $payload
     * @dataProvider createUpdaterTasksDataProvider
     */
    public function testCreateUpdaterTasks($payload)
    {
        $write = $this->getMockForAbstractClass(
            \Magento\Framework\Filesystem\Directory\WriteInterface::class,
            [],
            '',
            false
        );
        $this->filesystem->expects($this->once())->method('getDirectoryWrite')->willReturn($write);
        $write->expects($this->once())->method('writeFile');
        $cacheManager = $this->createMock(\Magento\Framework\App\Cache\Manager::class);
        $objectManager = $this->getMockForAbstractClass(\Magento\Framework\ObjectManagerInterface::class);
        $objectManager->expects($this->once())->method('get')->willReturn($cacheManager);
        $this->objectManagerProvider->expects($this->once())->method('get')->willReturn($objectManager);

        $cacheManager->expects($this->once())->method('getStatus')->willReturn([
            'cache1' => 1, 'cache2' => 0, 'cache3' => 1
        ]);
        $this->model->createUpdaterTasks($payload);
    }

    /**
     * @return array
     */
    public function createUpdaterTasksDataProvider()
    {
        return [
            [['type' => 'uninstall',
                'packages' => [['name' => 'vendor\/package', 'version' => '1.0.1']],
                'headerTitle'=>'Uninstall Package1', 'dataOption' => true
            ], 0, false],
            [['type' => 'update',
                'packages' => [['name' => 'vendor\/package', 'version' => '1.0.1',]],
                'headerTitle'=>'Uninstall Package1'
            ], 0, false],
            [['type' => 'enable',
                'packages' => [['name' => 'vendor\/package', 'version' => '1.0.1',]],
                'headerTitle'=>'Uninstall Package1'
            ], 1, true],
            [['type' => 'disable',
                'packages' => [['name' => 'vendor\/package', 'version' => '1.0.1',]],
                'headerTitle'=>'Uninstall Package1'
            ], 1, true],
        ];
    }
}