Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
GenerateRepositoryTest.php
Go to the documentation of this file.
1 <?php
7 
8 use Composer\Autoload\ClassLoader;
9 use Magento\Framework\Code\Generator\Io;
11 use \PHPUnit_Framework_MockObject_MockObject as MockObject;
12 
16 class GenerateRepositoryTest extends \PHPUnit\Framework\TestCase
17 {
21  private $ioGenerator;
22 
26  protected function setUp()
27  {
28  $this->ioGenerator = $this->getMockBuilder(Io::class)
29  ->disableOriginalConstructor()
30  ->getMock();
31 
32  $loader = new ClassLoader();
33  $loader->addPsr4(
34  'Magento\\Framework\\ObjectManager\\Code\\Generator\\',
35  __DIR__ . '/_files'
36  );
37  $loader->register();
38  }
39 
48  public function testGenerate($className, $sourceClassName, $fileName)
49  {
51  $repository = $this->getMockBuilder(Repository::class)
52  ->setMethods(['_validateData'])
53  ->setConstructorArgs([
54  $sourceClassName,
55  null,
56  $this->ioGenerator
57  ])
58  ->getMock();
59 
60  $this->ioGenerator
61  ->method('generateResultFileName')
62  ->with('\\' . $className)
63  ->willReturn($fileName . '.php');
64 
65  $repositoryCode = file_get_contents(__DIR__ . '/_files/' . $fileName . '.txt');
66  $this->ioGenerator->method('writeResultFile')
67  ->with($fileName . '.php', $repositoryCode);
68 
69  $repository->method('_validateData')
70  ->willReturn(true);
71  $generated = $repository->generate();
72 
73  $this->assertEquals($fileName . '.php', $generated, 'Generated repository is invalid.');
74  }
75 
82  public function interfaceListDataProvider()
83  {
84  return [
85  [
86  \Magento\Framework\ObjectManager\Code\Generator\SampleRepository::class,
87  \Magento\Framework\ObjectManager\Code\Generator\Sample::class,
88  'SampleRepository'
89  ],
90  [
91  \Magento\Framework\ObjectManager\Code\Generator\TSampleRepository::class,
92  \Magento\Framework\ObjectManager\Code\Generator\TSample::class,
93  'TSampleRepository'
94  ],
95  ];
96  }
97 
101  public function testValidateData()
102  {
103  $sourceClassName = 'Magento_Module_Controller_Index';
104  $resultClassName = 'Magento_Module_Controller';
105 
106  $repository = new Repository();
107  $repository->init($sourceClassName, $resultClassName);
108  $this->assertFalse($repository->generate());
109  }
110 }
defined('TESTS_BP')||define('TESTS_BP' __DIR__
Definition: _bootstrap.php:60
$loader
Definition: autoload.php:8
$fileName
Definition: translate.phtml:15
if($currentSelectedMethod==$_code) $className
Definition: form.phtml:31