Completed
Push — master ( 16b58d...ac063d )
by Matthew
09:38
created

ControllerTrait   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 66
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 15

Importance

Changes 1
Bugs 1 Features 1
Metric Value
wmc 3
lcom 0
cbo 15
dl 0
loc 66
rs 9.1666
c 1
b 1
f 1

3 Methods

Rating   Name   Duplication   Size   Complexity  
A getContainerOrm() 0 8 1
A getContainerOdm() 0 8 1
B getContainer() 0 45 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\Entity\Job;
11
use Dtc\QueueBundle\Entity\JobArchive;
12
use Dtc\QueueBundle\Entity\Run;
13
use Dtc\QueueBundle\Entity\RunArchive;
14
use Dtc\QueueBundle\EventDispatcher\EventDispatcher;
15
use Dtc\QueueBundle\Model\WorkerManager;
16
use Dtc\QueueBundle\ORM\LiveJobsGridSource;
17
use Dtc\QueueBundle\Tests\ORM\JobManagerTest;
18
use Symfony\Bundle\TwigBundle\TwigEngine;
19
use Symfony\Component\Config\FileLocator;
20
use Symfony\Component\DependencyInjection\Container;
21
use Symfony\Component\Routing\Loader\YamlFileLoader;
22
use Symfony\Component\Routing\Router;
23
use Symfony\Component\Templating\TemplateNameParser;
24
use Twig\Environment;
25
26
trait ControllerTrait
27
{
28
    protected function getContainerOrm()
29
    {
30
        JobManagerTest::setUpBeforeClass();
31
        $jobManager = JobManagerTest::$jobManager;
32
        $jobTimingManager = JobManagerTest::$jobTimingManager;
33
34
        return $this->getContainer($jobManager, $jobTimingManager, LiveJobsGridSource::class, EntityGridSource::class);
35
    }
36
37
    protected function getContainerOdm()
38
    {
39
        \Dtc\QueueBundle\Tests\ODM\JobManagerTest::setUpBeforeClass();
40
        $jobManager = JobManagerTest::$jobManager;
41
        $jobTimingManager = JobManagerTest::$jobTimingManager;
42
43
        return $this->getContainer($jobManager, $jobTimingManager, \Dtc\QueueBundle\ODM\LiveJobsGridSource::class, DocumentGridSource::class);
44
    }
45
46
    protected function getContainer($jobManager, $jobTimingManager, $liveJobsGridSourceClass, $gridSourceClass)
47
    {
48
        $container = new Container();
49
        $container->setParameter('dtc_grid.theme.css', []);
50
        $container->setParameter('dtc_grid.theme.js', []);
51
        $container->setParameter('dtc_grid.jquery', ['url' => 'https://something']);
52
        $container->setParameter('dtc_queue.class_job', Job::class);
53
        $container->setParameter('dtc_queue.class_job_archive', JobArchive::class);
54
        $container->setParameter('dtc_queue.class_run', Run::class);
55
        $container->setParameter('dtc_queue.class_run_archive', RunArchive::class);
56
        $container->setParameter('dtc_queue.admin.chartjs', '');
57
        $container->setParameter('dtc_queue.default_manager', 'orm');
58
        $container->setParameter('dtc_queue.record_timings', true);
59
        $container->setParameter('dtc_queue.record_timings_timezone_offset', 0);
60
        $container->set('dtc_queue.job_manager', $jobManager);
61
        $container->set('dtc_queue.job_timing_manager', $jobTimingManager);
62
        $container->set('dtc_queue.worker_manager', new WorkerManager($jobManager, new EventDispatcher()));
63
        $rendererFactory = new RendererFactory(
64
            new Router(new YamlFileLoader(new FileLocator(__DIR__)), 'test.yml'),
65
            [
66
                'theme.css' => [],
67
                'theme.js' => [],
68
                'page_div_style' => 'somestyle',
69
                'jquery' => [],
70
                'purl' => [],
71
                'datatables.css' => [],
72
                'datatables.js' => [],
73
                'jq_grid.css' => [],
74
                'jq_grid.js' => [], ]
75
        );
76
        $twigEngine = new TwigEngine(new Environment(new \Twig_Loader_Array()), new TemplateNameParser(), new FileLocator(__DIR__));
77
        $rendererFactory->setTwigEngine($twigEngine);
78
        $container->set('dtc_grid.renderer.factory', $rendererFactory);
79
        $liveJobsGridSource = new $liveJobsGridSourceClass($jobManager);
80
        $container->set('dtc_queue.grid_source.jobs_waiting.orm', $liveJobsGridSource);
81
        $liveJobsGridSource = new $liveJobsGridSourceClass($jobManager);
82
        $liveJobsGridSource->setRunning(true);
83
        $container->set('dtc_queue.grid_source.jobs_running.orm', $liveJobsGridSource);
84
        $container->set('dtc_queue.job_manager', $jobManager);
85
        $gridSourceManager = new GridSourceManager(new AnnotationReader(), __DIR__);
86
        $container->set('dtc_grid.manager.source', $gridSourceManager);
87
        $gridSourceManager->add(Job::class, new $gridSourceClass($jobManager->getObjectManager(), $jobManager->getJobClass()));
88
89
        return $container;
90
    }
91
}
92