Completed
Push — master ( 5fe2ea...bba9f0 )
by Matthew
13:23
created

JobManagerTest::runCountQuery()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 10
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 10
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 4
nc 1
nop 1
1
<?php
2
3
namespace Dtc\QueueBundle\Tests\ODM;
4
5
use Doctrine\Common\Annotations\AnnotationRegistry;
6
use Dtc\QueueBundle\ODM\JobTimingManager;
7
use Dtc\QueueBundle\ODM\RunManager;
8
use Dtc\QueueBundle\Tests\Doctrine\BaseJobManagerTest;
9
use Dtc\QueueBundle\ODM\JobManager;
10
use Doctrine\MongoDB\Connection;
11
use Doctrine\ODM\MongoDB\Configuration;
12
use Doctrine\ODM\MongoDB\DocumentManager;
13
use Doctrine\ODM\MongoDB\Mapping\Driver\AnnotationDriver;
14
15
/**
16
 * @author David
17
 * This test requires local mongodb running
18
 */
19
class JobManagerTest extends BaseJobManagerTest
20
{
21
    public static function setUpBeforeClass()
22
    {
23
        if (!is_dir('/tmp/dtcqueuetest/generate/proxies')) {
24
            mkdir('/tmp/dtcqueuetest/generate/proxies', 0777, true);
25
        }
26
27
        if (!is_dir('/tmp/dtcqueuetest/generate/hydrators')) {
28
            mkdir('/tmp/dtcqueuetest/generate/hydrators', 0777, true);
29
        }
30
31
        AnnotationRegistry::registerFile(__DIR__.'/../../vendor/doctrine/mongodb-odm/lib/Doctrine/ODM/MongoDB/Mapping/Annotations/Document.php');
32
        AnnotationRegistry::registerFile(__DIR__.'/../../vendor/doctrine/mongodb-odm/lib/Doctrine/ODM/MongoDB/Mapping/Annotations/Id.php');
33
        AnnotationRegistry::registerFile(__DIR__.'/../../vendor/doctrine/mongodb-odm/lib/Doctrine/ODM/MongoDB/Mapping/Annotations/Field.php');
34
        AnnotationRegistry::registerFile(__DIR__.'/../../vendor/doctrine/mongodb-odm/lib/Doctrine/ODM/MongoDB/Mapping/Annotations/Index.php');
35
        AnnotationRegistry::registerFile(__DIR__.'/../../vendor/doctrine/mongodb-odm/lib/Doctrine/ODM/MongoDB/Mapping/Annotations/AlsoLoad.php');
36
        AnnotationRegistry::registerFile(__DIR__.'/../../vendor/mmucklo/grid-bundle/Annotation/Grid.php');
37
        AnnotationRegistry::registerFile(__DIR__.'/../../vendor/mmucklo/grid-bundle/Annotation/Sort.php');
38
        AnnotationRegistry::registerFile(__DIR__.'/../../vendor/mmucklo/grid-bundle/Annotation/ShowAction.php');
39
        AnnotationRegistry::registerFile(__DIR__.'/../../vendor/mmucklo/grid-bundle/Annotation/DeleteAction.php');
40
        AnnotationRegistry::registerFile(__DIR__.'/../../vendor/mmucklo/grid-bundle/Annotation/Column.php');
41
        AnnotationRegistry::registerFile(__DIR__.'/../../vendor/mmucklo/grid-bundle/Annotation/Action.php');
42
43
        // Set up database delete here??
44
        $config = new Configuration();
45
        $config->setProxyDir('/tmp/dtcqueuetest/generate/proxies');
46
        $config->setProxyNamespace('Proxies');
47
48
        $config->setHydratorDir('/tmp/dtcqueuetest/generate/hydrators');
49
        $config->setHydratorNamespace('Hydrators');
50
51
        $classPath = __DIR__.'../../Document';
52
        $config->setMetadataDriverImpl(AnnotationDriver::create($classPath));
53
54
        self::$objectManager = DocumentManager::create(new Connection(getenv('MONGODB_HOST')), $config);
55
56
        $documentName = 'Dtc\QueueBundle\Document\Job';
57
        $archiveDocumentName = 'Dtc\QueueBundle\Document\JobArchive';
58
        $jobTimingClass = 'Dtc\QueueBundle\Document\JobTiming';
59
        $runClass = 'Dtc\QueueBundle\Document\Run';
60
        $runArchiveClass = 'Dtc\QueueBundle\Document\RunArchive';
61
        $sm = self::$objectManager->getSchemaManager();
62
63
        $sm->dropDocumentCollection($documentName);
64
        $sm->dropDocumentCollection($runClass);
65
        $sm->dropDocumentCollection($archiveDocumentName);
66
        $sm->dropDocumentCollection($runArchiveClass);
67
        $sm->dropDocumentCollection($jobTimingClass);
68
        $sm->createDocumentCollection($documentName);
69
        $sm->createDocumentCollection($archiveDocumentName);
70
        $sm->createDocumentCollection($runClass);
71
        $sm->createDocumentCollection($runArchiveClass);
72
        $sm->createDocumentCollection($jobTimingClass);
73
        $sm->updateDocumentIndexes($documentName);
74
        $sm->updateDocumentIndexes($archiveDocumentName);
75
        $sm->updateDocumentIndexes($runClass);
76
        $sm->updateDocumentIndexes($runArchiveClass);
77
        $sm->updateDocumentIndexes($jobTimingClass);
78
79
        self::$objectName = $documentName;
80
        self::$archiveObjectName = $archiveDocumentName;
81
        self::$runClass = $runClass;
82
        self::$runArchiveClass = $runArchiveClass;
83
        self::$jobTimingClass = $jobTimingClass;
84
        self::$jobManagerClass = JobManager::class;
85
        self::$runManagerClass = RunManager::class;
86
        self::$jobTimingManagerClass = JobTimingManager::class;
87
        parent::setUpBeforeClass();
88
    }
89
90
    protected function runCountQuery($class)
91
    {
92
        /** @var JobManager $jobManager */
93
        $jobManager = self::$jobManager;
94
95
        /** @var DocumentManager $documentManager */
96
        $documentManager = $jobManager->getObjectManager();
97
98
        return $documentManager->createQueryBuilder($class)->getQuery()->count();
99
    }
100
}
101