Passed
Pull Request — master (#57)
by Matthew
07:32
created

ControllerTrait   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 90
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 15

Importance

Changes 1
Bugs 1 Features 1
Metric Value
wmc 4
lcom 1
cbo 15
dl 0
loc 90
rs 9.1666
c 1
b 1
f 1
1
<?php
2
3
namespace Dtc\QueueBundle\Tests\Controller;
4
5
use Doctrine\Common\Annotations\AnnotationReader;
6
use Dtc\GridBundle\Grid\Renderer\RendererFactory;
7
use Dtc\GridBundle\Grid\Source\DocumentGridSource;
8
use Dtc\GridBundle\Grid\Source\EntityGridSource;
9
use Dtc\GridBundle\Manager\GridSourceManager;
10
use Dtc\QueueBundle\EventDispatcher\EventDispatcher;
11
use Dtc\QueueBundle\Manager\WorkerManager;
12
use Dtc\QueueBundle\ORM\LiveJobsGridSource;
13
use Dtc\QueueBundle\Tests\ORM\JobManagerTest;
14
use Symfony\Bundle\TwigBundle\TwigEngine;
15
use Symfony\Component\Config\FileLocator;
16
use Symfony\Component\DependencyInjection\Container;
17
use Symfony\Component\Routing\Loader\YamlFileLoader;
18
use Symfony\Component\Routing\Router;
19
use Symfony\Component\Templating\TemplateNameParser;
20
use Twig\Environment;
21
22
trait ControllerTrait
23
{
24
    protected function getContainerOrm()
25
    {
26
        JobManagerTest::setUpBeforeClass();
27
        $jobManager = JobManagerTest::$jobManager;
28
        $jobTimingManager = JobManagerTest::$jobTimingManager;
29
        $runManager = JobManagerTest::$runManager;
30
31
        return $this->getContainer($jobManager, $runManager, $jobTimingManager, LiveJobsGridSource::class, EntityGridSource::class);
32
    }
33
34
    public function runJsCssTest($response)
35
    {
36
        static::assertArrayHasKey('css', $response);
37
        static::assertArrayHasKey('js', $response);
38
    }
39
40
    protected function getContainerOdm()
41
    {
42
        \Dtc\QueueBundle\Tests\ODM\JobManagerTest::setUpBeforeClass();
43
        $jobManager = \Dtc\QueueBundle\Tests\ODM\JobManagerTest::$jobManager;
44
        $jobTimingManager = \Dtc\QueueBundle\Tests\ODM\JobManagerTest::$jobTimingManager;
45
        $runManager = \Dtc\QueueBundle\Tests\ODM\JobManagerTest::$runManager;
46
47
        return $this->getContainer($jobManager, $runManager, $jobTimingManager, \Dtc\QueueBundle\ODM\LiveJobsGridSource::class, DocumentGridSource::class);
48
    }
49
50
    protected function getContainer($jobManager, $runManager, $jobTimingManager, $liveJobsGridSourceClass, $gridSourceClass)
51
    {
52
        $container = new Container();
53
        $container->setParameter('dtc_grid.theme.css', []);
54
        $container->setParameter('dtc_grid.theme.js', []);
55
        $container->setParameter('dtc_grid.jquery', ['url' => 'https://something']);
56
        $container->setParameter('dtc_queue.class.job', $jobManager->getJobClass());
57
        $container->setParameter('dtc_queue.class.job_archive', $jobManager->getJobArchiveClass());
58
        $container->setParameter('dtc_queue.class.run', $runManager->getRunClass());
59
        $container->setParameter('dtc_queue.class.run_archive', $runManager->getRunArchiveClass());
60
        $container->setParameter('dtc_queue.admin.chartjs', '');
61
        $container->setParameter('dtc_queue.manager.job', 'orm');
62
        $container->setParameter('dtc_queue.timings.record', true);
63
        $container->setParameter('dtc_queue.timings.timezone_offset', 0);
64
        $container->set('dtc_queue.manager.job', $jobManager);
65
        $container->set('dtc_queue.manager.job_timing', $jobTimingManager);
66
        $container->set('dtc_queue.manager.worker', new WorkerManager($jobManager, new EventDispatcher()));
67
        $rendererFactory = new RendererFactory(
68
            new Router(new YamlFileLoader(new FileLocator(__DIR__)), 'test.yml'),
69
            [
70
                'theme.css' => [],
71
                'theme.js' => [],
72
                'page_div_style' => 'somestyle',
73
                'jquery' => [],
74
                'purl' => [],
75
                'datatables.css' => [],
76
                'datatables.js' => [],
77
                'jq_grid.css' => [],
78
                'jq_grid.js' => [], ]
79
        );
80
        $templates = ['@DtcQueue/Queue/grid.html.twig' => file_get_contents(__DIR__.'/../../Resources/views/Queue/grid.html.twig'),
81
                        'DtcGridBundle:Page:datatables.html.twig' => file_get_contents(__DIR__.'/../../vendor/mmucklo/grid-bundle/Resources/views/Grid/datatables.html.twig'), ];
82
        $twigEngine = new TwigEngine(new Environment(new \Twig_Loader_Array($templates)), new TemplateNameParser(), new FileLocator(__DIR__));
83
        $rendererFactory->setTwigEngine($twigEngine);
84
85
        $container->set('twig', $twigEngine);
86
87
        $container->set('dtc_grid.renderer.factory', $rendererFactory);
88
        $liveJobsGridSource = new $liveJobsGridSourceClass($jobManager);
89
        $container->set('dtc_queue.grid_source.jobs_waiting.orm', $liveJobsGridSource);
90
        $liveJobsGridSource = new $liveJobsGridSourceClass($jobManager);
91
        $liveJobsGridSource->setRunning(true);
92
        $container->set('dtc_queue.grid_source.jobs_running.orm', $liveJobsGridSource);
93
        $container->set('dtc_queue.manager.job', $jobManager);
94
        $gridSourceManager = new GridSourceManager(new AnnotationReader(), __DIR__);
95
        $container->set('dtc_grid.manager.source', $gridSourceManager);
96
        $gridSourceJob = new $gridSourceClass($jobManager->getObjectManager(), $jobManager->getJobClass());
97
        $gridSourceJob->autodiscoverColumns();
98
        $gridSourceManager->add($jobManager->getJobClass(), $gridSourceJob);
99
        $gridSourceJobArchive = new $gridSourceClass($jobManager->getObjectManager(), $jobManager->getJobArchiveClass());
100
        $gridSourceJobArchive->autodiscoverColumns();
101
        $gridSourceManager->add($jobManager->getJobArchiveClass(), $gridSourceJobArchive);
102
        $gridSourceRun = new $gridSourceClass($runManager->getObjectManager(), $runManager->getRunClass());
103
        $gridSourceRun->autodiscoverColumns();
104
        $gridSourceManager->add($runManager->getRunClass(), $gridSourceRun);
105
        $gridSourceRunArchive = new $gridSourceClass($runManager->getObjectManager(), $runManager->getRunArchiveClass());
106
        $gridSourceRunArchive->autodiscoverColumns();
107
        $gridSourceManager->add($runManager->getRunArchiveClass(), $gridSourceRunArchive);
108
109
        return $container;
110
    }
111
}
112