FiltersExtensionTest::testLoadConfiguration()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 11
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 11
c 0
b 0
f 0
rs 9.4285
cc 1
eloc 7
nc 1
nop 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Zenify\DoctrineFilters\Tests\DI;
6
7
use Doctrine\ORM\Configuration;
8
use Nette\DI\Compiler;
9
use Nette\DI\ContainerBuilder;
10
use PHPUnit\Framework\TestCase;
11
use Zenify\DoctrineFilters\Contract\FilterManagerInterface;
12
use Zenify\DoctrineFilters\DI\FiltersExtension;
13
use Zenify\DoctrineFilters\FilterManager;
14
use Zenify\DoctrineFilters\Tests\FilterManager\Source\ActiveFilter;
15
16
17
final class FiltersExtensionTest extends TestCase
18
{
19
20
	public function testLoadConfiguration()
21
	{
22
		$extension = $this->getExtension();
23
		$extension->loadConfiguration();
24
25
		$containerBuilder = $extension->getContainerBuilder();
26
		$containerBuilder->prepareClassList();
27
28
		$definition = $containerBuilder->getDefinition($containerBuilder->getByType(FilterManagerInterface::class));
29
		$this->assertSame(FilterManager::class, $definition->getClass());
30
	}
31
32
33
	public function testBeforeCompile()
34
	{
35
		$extension = $this->getExtension();
36
		$extension->loadConfiguration();
37
38
		$containerBuilder = $extension->getContainerBuilder();
39
		$containerBuilder->addDefinition('ormConfiguration')
40
			->setClass(Configuration::class)
41
			->setAutowired(FALSE);
42
43
		$containerBuilder->addDefinition('filter')
44
			->setClass(ActiveFilter::class);
45
46
		$extension->beforeCompile();
47
48
		$filterManagerDefinition = $containerBuilder->getDefinition(
49
			$containerBuilder->getByType(FilterManagerInterface::class)
50
		);
51
		$this->assertSame('addFilter', $filterManagerDefinition->getSetup()[0]->getEntity());
52
		$this->assertSame(['filter', '@filter'], $filterManagerDefinition->getSetup()[0]->arguments);
53
	}
54
55
56
	private function getExtension() : FiltersExtension
57
	{
58
		$extension = new FiltersExtension;
59
		$extension->setCompiler(new Compiler(new ContainerBuilder), 'filters');
60
		return $extension;
61
	}
62
63
}
64