Completed
Push — master ( 0c48af...84ef19 )
by Johannes
02:34
created

ContainerConfigTest::testDefine()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 37
Code Lines 29

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
dl 0
loc 37
rs 8.8571
c 1
b 0
f 0
cc 1
eloc 29
nc 1
nop 0
1
<?php
2
/**
3
 * Lichtenwallner  (https://lichtenwallner.at)
4
 *
5
 * @see https://github.com/jolicht/markdown-cms for the canonical source repository
6
 * @license https://github.com/jolicht/markdown-cms/blob/master/LICENSE MIT
7
 * @copyright Copyright (c) Johannes Lichtenwallner
8
 */
9
declare(strict_types = 1);
10
namespace JolichtTest\MarkdownCms;
11
12
use PHPUnit\Framework\TestCase;
13
use Reddogs\Test\AuraDi\ContainerAwareTrait;
14
use JolichtTest\MarkdownCms\TestContainerConfig;
15
use Jolicht\MarkdownCms\Action\BlogOverviewAction;
16
use Jolicht\MarkdownCms\ModuleConfig;
17
use Jolicht\MarkdownCms\ContainerConfig;
18
use Jolicht\MarkdownCms\Action\SingleBlogEntryAction;
19
use Jolicht\MarkdownCms\Command\ParseContentCommand;
20
use Jolicht\MarkdownCms\ContentType\ContentCreator;
21
use Jolicht\MarkdownCms\Iterator\MarkdownFileIterator;
22
use Mni\FrontYAML\Parser;
23
use Mni\FrontYAML\Bridge\CommonMark\CommonMarkParser;
24
use Jolicht\MarkdownCms\Markdown\MarkdownDocumentParser;
25
use Jolicht\MarkdownCms\Parser\Observer\SaveContentConfigObserver;
26
use Jolicht\MarkdownCms\Parser\Observer\SitemapObserver;
27
use Jolicht\MarkdownCms\Parser\ContentParser;
28
use Jolicht\MarkdownCms\Parser\ParseContentExecutor;
29
use Jolicht\MarkdownCms\ContentType\EntryParser;
30
use Jolicht\MarkdownCms\Action\TagArchiveAction;
31
use League\CommonMark\Environment;
32
use Jolicht\MarkdownCms\Markdown\Renderer\ImageRenderer;
33
34
class ContainerConfigTest extends TestCase
35
{
36
    use ContainerAwareTrait;
37
38
    private $containerConfig;
39
40
    protected function setUp()
41
    {
42
        $this->setConfigProviders([ModuleConfig::class, TestConfig::class]);
43
        $this->setContainerConfigs([
44
            ContainerConfig::class,
45
            ExpressiveAuraConfig::class,
46
            TestContainerConfig::class
47
        ]);
48
        $this->setUpContainer();
49
50
        $this->containerConfig = new ContainerConfig(['testconfig']);
51
    }
52
53
    public function testGetConfig()
54
    {
55
        $this->assertSame(['testconfig'], $this->containerConfig->getConfig());
56
    }
57
58
    public function testDefine()
59
    {
60
        $container = $this->getContainer();
61
62
        $this->assertInstanceOf(BlogOverviewAction::class, $container->get(BlogOverviewAction::class));
63
        $this->assertInstanceOf(SingleBlogEntryAction::class, $container->get(SingleBlogEntryAction::class));
64
        $this->assertInstanceOf(ParseContentCommand::class, $container->get(ParseContentCommand::class));
65
        $this->assertInstanceOf(ContentCreator::class, $container->get(ContentCreator::class));
66
67
        $markdownFilterIterator = $container->get(MarkdownFileIterator::class);
68
69
        $this->assertInstanceOf(MarkdownFileIterator::class, $markdownFilterIterator);
70
        $recursiveIteratorIterator = $markdownFilterIterator->getInnerIterator();
71
        $this->assertInstanceOf(\RecursiveIteratorIterator::class, $recursiveIteratorIterator);
72
        $directoryIterator = $recursiveIteratorIterator->getInnerIterator();
73
        $this->assertInstanceOf(\RecursiveDirectoryIterator::class, $directoryIterator);
74
        $this->assertSame('test/_files', $directoryIterator->getPath());
75
76
77
        $parser = $container->get(Parser::class);
78
        $this->assertInstanceOf(Parser::class, $parser);
79
        $this->assertInstanceOf(Parser::class, $parser);
80
        $reflectionObject = new \ReflectionObject($parser);
81
        $reflectionProperty = $reflectionObject->getProperty('markdownParser');
82
        $reflectionProperty->setAccessible(true);
83
        $this->assertInstanceOf(CommonMarkParser::class, $reflectionProperty->getValue($parser));
84
85
        $this->assertInstanceOf(MarkdownDocumentParser::class, $container->get(MarkdownDocumentParser::class));
86
        $this->assertInstanceOf(SaveContentConfigObserver::class, $container->get(SaveContentConfigObserver::class));
87
        $this->assertInstanceOf(SitemapObserver::class, $container->get(SitemapObserver::class));
88
        $this->assertInstanceOf(ContentParser::class, $container->get(ContentParser::class));
89
        $this->assertInstanceOf(ParseContentExecutor::class, $container->get(ParseContentExecutor::class));
90
        $this->assertInstanceOf(EntryParser::class, $container->get(EntryParser::class));
91
        $this->assertInstanceOf(TagArchiveAction::class, $container->get(TagArchiveAction::class));
92
        $this->assertInstanceOf(Environment::class, $container->get(Environment::class));
93
        $this->assertInstanceOf(ImageRenderer::class, $container->get(ImageRenderer::class));
94
    }
95
}