Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
VirtualTypeMapperTest.php
Go to the documentation of this file.
1 <?php
7 
9 
10 class VirtualTypeMapperTest extends \PHPUnit\Framework\TestCase
11 {
15  private $mapper;
16 
17  protected function setUp()
18  {
19  $managerHelper = new ObjectManager($this);
20  $this->mapper = $managerHelper->getObject(VirtualTypeMapper::class, [
21  'map' => [
22  'global' => [
23  'virtualType1' => 'Magento\SomeModule\Some\Class1',
24  'virtualType2' => 'Magento\SomeModule\Some\Class2',
25  'virtualType3' => 'Magento\SomeModule\Some\Class3',
26  ],
27  'adminhtml' => [
28  'virtualType1' => 'Magento\SomeModule\Some\Class4',
29  'virtualType4' => 'Magento\SomeModule\Some\Class5',
30  ]
31  ]
32  ]);
33  }
34 
35  public function testGetScopeFromFile()
36  {
37  $file = '/path/to/file/scope/filename.ext';
38  static::assertEquals('scope', $this->mapper->getScopeFromFile($file));
39  }
40 
47  public function testGetType($scope, $type, $expected)
48  {
49  static::assertEquals($expected, $this->mapper->getType($type, $scope));
50  }
51 
55  public function getTypeDataProvider()
56  {
57  return [
58  [
59  'global',
60  'virtualType1',
61  'Magento\SomeModule\Some\Class1'
62  ],
63  [
64  'global',
65  'virtualType2',
66  'Magento\SomeModule\Some\Class2'
67  ],
68  [
69  'adminhtml',
70  'virtualType3',
71  'Magento\SomeModule\Some\Class3'
72  ],
73  [
74  'adminhtml',
75  'virtualType1',
76  'Magento\SomeModule\Some\Class4'
77  ],
78  [
79  'adminhtml',
80  'virtualType4',
81  'Magento\SomeModule\Some\Class5'
82  ]
83  ];
84  }
85 
91  public function testLoad(array $diFilesPath, array $expectedVirtualTypesDependencies)
92  {
93  $mapper = new VirtualTypeMapper();
94  self::assertArrayEqualsRecursive(
95  $expectedVirtualTypesDependencies,
96  $mapper->loadMap($diFilesPath)
97  );
98  }
99 
105  public function testGetTypeComplex(array $diFilesPath, array $expectedVirtualTypesDependencies)
106  {
107  $mapper = new VirtualTypeMapper();
108  $mapper->loadMap($diFilesPath);
109 
110  // getType will return input value in case there no virtualType with the same name was found
111  $expectedVirtualTypesDependencies['global']['ConcreteClass'] = 'ConcreteClass';
112 
113  foreach ($expectedVirtualTypesDependencies as $scope => $deps) {
114  foreach ($deps as $virtualType => $baseType) {
115  self::assertEquals($baseType, $mapper->getType($virtualType, $scope));
116  }
117  }
118  }
119 
124  {
125  return [
126  // collects two virtual types, defined in module configuration on global area level
127  [
128  'diFilesPath' => [$this->getFilePath('etc/di.xml')],
129  'expectedVirtualTypesDependencies' => [
130  'global' => [
131  'Magento\Internal\Some\Class' => 'ExternalVirtualType',
132  'MyVirtualType' => 'Magento\Internal\Some\Class'
133  ]
134  ]
135  ],
136 
141  [
142  'diFilesPath' => [$this->getFilePath('etc/di.xml'), $this->getFilePath('etc/adminhtml/di.xml')],
143  'expectedVirtualTypesDependencies' => [
144  'global' => [
145  'Magento\Internal\Some\Class' => 'ExternalVirtualType',
146  'MyVirtualType' => 'Magento\Internal\Some\Class'
147  ],
148  'adminhtml' => [
149  'MyVirtualType2' => 'ExternalVirtualType'
150  ]
151  ]
152  ]
153  ];
154  }
155 
160  private static function assertArrayEqualsRecursive(
161  array $expectation,
162  array $input
163  ) {
164  static::assertEquals(count($expectation), count($input));
165  foreach ($expectation as $ek => $ev) {
166  self::assertArrayHasKey($ek, $input);
167  if (is_array($ev)) {
168  self::assertArrayEqualsRecursive($ev, $input[$ek]);
169  } else {
170  self::assertEquals($ev, $input[$ek]);
171  }
172  }
173  }
174 
179  private function getFilePath($fileName)
180  {
181  return __DIR__
182  . DIRECTORY_SEPARATOR
183  . '_files' . DIRECTORY_SEPARATOR . $fileName;
184  }
185 }
defined('TESTS_BP')||define('TESTS_BP' __DIR__
Definition: _bootstrap.php:60
$type
Definition: item.phtml:13
$fileName
Definition: translate.phtml:15
testLoad(array $diFilesPath, array $expectedVirtualTypesDependencies)
testGetTypeComplex(array $diFilesPath, array $expectedVirtualTypesDependencies)