Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
AbstractSampleDataCommandTest.php
Go to the documentation of this file.
1 <?php
7 
8 use Composer\Console\Application;
9 use Composer\Console\ApplicationFactory;
15 use PHPUnit\Framework\TestCase;
16 use Symfony\Component\Console\Input\ArrayInput;
17 use Symfony\Component\Console\Input\ArrayInputFactory;
18 
22 abstract class AbstractSampleDataCommandTest extends TestCase
23 {
27  protected $directoryReadMock;
28 
33 
37  protected $filesystemMock;
38 
43 
48 
52  protected $applicationMock;
53 
58 
62  protected function setUp()
63  {
64  $this->directoryReadMock = $this->createMock(ReadInterface::class);
65  $this->directoryWriteMock = $this->createMock(WriteInterface::class);
66  $this->filesystemMock = $this->createMock(Filesystem::class);
67  $this->sampleDataDependencyMock = $this->createMock(Dependency::class);
68  $this->arrayInputFactoryMock = $this->createMock(ArrayInputFactory::class);
69  $this->applicationMock = $this->createMock(Application::class);
70  $this->applicationFactoryMock = $this->createPartialMock(ApplicationFactory::class, ['create']);
71  }
72 
79  protected function setupMocks(
80  $sampleDataPackages,
81  $pathToComposerJson,
82  $appRunResult,
83  $additionalComposerArgs = []
84  ) {
85  $this->directoryReadMock->expects($this->any())->method('getAbsolutePath')->willReturn($pathToComposerJson);
86  $this->directoryReadMock->expects($this->any())->method('readFile')->with('composer.json')->willReturn(
87  '{"version": "0.0.1"}'
88  );
89  $this->filesystemMock->expects($this->any())->method('getDirectoryRead')->with(DirectoryList::ROOT)->willReturn(
90  $this->directoryReadMock
91  );
92  $this->sampleDataDependencyMock->expects($this->any())->method('getSampleDataPackages')->willReturn(
93  $sampleDataPackages
94  );
95  $this->arrayInputFactoryMock->expects($this->never())->method('create');
96 
97  $this->applicationMock->expects($this->any())
98  ->method('run')
99  ->with(
100  new ArrayInput(
101  array_merge(
103  $sampleDataPackages,
104  $pathToComposerJson
105  ),
106  $additionalComposerArgs
107  )
108  ),
109  $this->anything()
110  )
111  ->willReturn($appRunResult);
112 
113  if (($appRunResult !== 0) && !empty($sampleDataPackages)) {
114  $this->applicationMock->expects($this->once())->method('resetComposer')->willReturnSelf();
115  }
116 
117  $this->applicationFactoryMock->expects($this->any())
118  ->method('create')
119  ->willReturn($this->applicationMock);
120  }
121 
129  abstract protected function expectedComposerArguments(
130  array $sampleDataPackages,
131  string $pathToComposerJson
132  ) : array;
133 }
setupMocks( $sampleDataPackages, $pathToComposerJson, $appRunResult, $additionalComposerArgs=[])
expectedComposerArguments(array $sampleDataPackages, string $pathToComposerJson)