‪TYPO3CMS  11.5
ExtractorRegistryTest.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
22 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
23 
27 class ‪ExtractorRegistryTest extends UnitTestCase
28 {
33  {
34  $extractorClass = 'a9f4d5e4ebb4b03547a2a6094e1170ac';
35  $extractorObject = $this->getMockBuilder(ExtractorInterface::class)
36  ->setMockClassName($extractorClass)
37  ->getMock();
38 
39  ‪$extractorRegistry = $this->‪getMockExtractorRegistry([[$extractorClass, $extractorObject]]);
40 
41  ‪$extractorRegistry->registerExtractionService($extractorClass);
42  self::assertContains($extractorObject, ‪$extractorRegistry->getExtractors());
43  }
44 
49  {
50  $this->expectException(\InvalidArgumentException::class);
51  $this->expectExceptionCode(1422705270);
52 
53  $className = 'e1f9aa4e1cd3aa7ff05dcdccb117156a';
55  ‪$extractorRegistry->registerExtractionService($className);
56  }
57 
62  {
63  $this->expectException(\InvalidArgumentException::class);
64  $this->expectExceptionCode(1422705271);
65 
66  $className = __CLASS__;
68  ‪$extractorRegistry->registerExtractionService($className);
69  }
70 
75  {
76  $extractorClass1 = 'db76010e5c24658c35ea1605cce2391d';
77  $extractorObject1 = $this->getMockBuilder(ExtractorInterface::class)
78  ->setMockClassName($extractorClass1)
79  ->getMock();
80  $extractorObject1->method('getPriority')->willReturn(1);
81 
82  $extractorClass2 = 'ad9195e2487eea33c8a2abd5cf33cba4';
83  $extractorObject2 = $this->getMockBuilder(ExtractorInterface::class)
84  ->setMockClassName($extractorClass2)
85  ->getMock();
86  $extractorObject2->method('getPriority')->willReturn(10);
87 
88  $extractorClass3 = 'cef9aa4e1cd3aa7ff05dcdccb117156a';
89  $extractorObject3 = $this->getMockBuilder(ExtractorInterface::class)
90  ->setMockClassName($extractorClass3)
91  ->getMock();
92  $extractorObject3->method('getPriority')->willReturn(2);
93 
94  $createdExtractorInstances = [
95  [$extractorClass1, $extractorObject1],
96  [$extractorClass2, $extractorObject2],
97  [$extractorClass3, $extractorObject3],
98  ];
99 
100  ‪$extractorRegistry = $this->‪getMockExtractorRegistry($createdExtractorInstances);
101  ‪$extractorRegistry->registerExtractionService($extractorClass1);
102  ‪$extractorRegistry->registerExtractionService($extractorClass2);
103  ‪$extractorRegistry->registerExtractionService($extractorClass3);
104 
105  $extractorInstances = ‪$extractorRegistry->getExtractors();
106 
107  self::assertInstanceOf($extractorClass2, $extractorInstances[0]);
108  self::assertInstanceOf($extractorClass3, $extractorInstances[1]);
109  self::assertInstanceOf($extractorClass1, $extractorInstances[2]);
110  }
111 
116  {
117  $extractorClass1 = 'b70551b2b2db62b6b15a9bbfcbd50614';
118  $extractorObject1 = $this->getMockBuilder(ExtractorInterface::class)
119  ->setMockClassName($extractorClass1)
120  ->getMock();
121  $extractorObject1->method('getPriority')->willReturn(1);
122 
123  $extractorClass2 = 'ac318f1659d278b79b38262f23a78d5d';
124  $extractorObject2 = $this->getMockBuilder(ExtractorInterface::class)
125  ->setMockClassName($extractorClass2)
126  ->getMock();
127  $extractorObject2->method('getPriority')->willReturn(1);
128 
129  $createdExtractorInstances = [
130  [$extractorClass1, $extractorObject1],
131  [$extractorClass2, $extractorObject2],
132  ];
133 
134  ‪$extractorRegistry = $this->‪getMockExtractorRegistry($createdExtractorInstances);
135  ‪$extractorRegistry->registerExtractionService($extractorClass1);
136  ‪$extractorRegistry->registerExtractionService($extractorClass2);
137 
138  $extractorInstances = ‪$extractorRegistry->getExtractors();
139  self::assertContains($extractorObject1, $extractorInstances);
140  self::assertContains($extractorObject2, $extractorInstances);
141  }
142 
149  protected function ‪getMockExtractorRegistry(array $createsExtractorInstances = [])
150  {
151  ‪$extractorRegistry = $this->getMockBuilder(ExtractorRegistry::class)
152  ->onlyMethods(['createExtractorInstance'])
153  ->getMock();
154 
155  if (!empty($createsExtractorInstances)) {
157  ->method('createExtractorInstance')
158  ->willReturnMap($createsExtractorInstances);
159  }
160 
161  return ‪$extractorRegistry;
162  }
163 }
‪TYPO3\CMS\Core\Tests\Unit\Resource\Index\ExtractorRegistryTest\registeredExtractorClassCanBeRetrieved
‪registeredExtractorClassCanBeRetrieved()
Definition: ExtractorRegistryTest.php:32
‪$extractorRegistry
‪$extractorRegistry
Definition: ext_localconf.php:59
‪TYPO3\CMS\Core\Tests\Unit\Resource\Index\ExtractorRegistryTest\registerExtractorClassThrowsExceptionIfClassDoesNotImplementRightInterface
‪registerExtractorClassThrowsExceptionIfClassDoesNotImplementRightInterface()
Definition: ExtractorRegistryTest.php:61
‪TYPO3\CMS\Core\Tests\Unit\Resource\Index\ExtractorRegistryTest
Definition: ExtractorRegistryTest.php:28
‪TYPO3\CMS\Core\Resource\Index\ExtractorInterface
Definition: ExtractorInterface.php:25
‪TYPO3\CMS\Core\Resource\Index\ExtractorRegistry
Definition: ExtractorRegistry.php:25
‪TYPO3\CMS\Core\Tests\Unit\Resource\Index\ExtractorRegistryTest\registeredExtractorClassWithSamePriorityAreAllReturned
‪registeredExtractorClassWithSamePriorityAreAllReturned()
Definition: ExtractorRegistryTest.php:115
‪TYPO3\CMS\Core\Tests\Unit\Resource\Index\ExtractorRegistryTest\getMockExtractorRegistry
‪PHPUnit Framework MockObject MockObject TYPO3 CMS Core Resource Index ExtractorRegistry getMockExtractorRegistry(array $createsExtractorInstances=[])
Definition: ExtractorRegistryTest.php:149
‪TYPO3\CMS\Core\Tests\Unit\Resource\Index
Definition: ExtractorRegistryTest.php:18
‪TYPO3\CMS\Core\Tests\Unit\Resource\Index\ExtractorRegistryTest\registerExtractorClassThrowsExceptionIfClassDoesNotExist
‪registerExtractorClassThrowsExceptionIfClassDoesNotExist()
Definition: ExtractorRegistryTest.php:48
‪TYPO3\CMS\Core\Tests\Unit\Resource\Index\ExtractorRegistryTest\registerExtractorClassWithHighestPriorityIsFirstInResult
‪registerExtractorClassWithHighestPriorityIsFirstInResult()
Definition: ExtractorRegistryTest.php:74