Completed
Push — master ( 1f04bf...cc1bbe )
by Daniel
07:04 queued 04:13
created

DoctrineBenchTrait   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 102
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 0

Importance

Changes 0
Metric Value
wmc 4
lcom 1
cbo 0
dl 0
loc 102
rs 10
c 0
b 0
f 0

5 Methods

Rating   Name   Duplication   Size   Complexity  
A image_phpcr_odm_only() 0 11 1
A ct_article() 0 11 1
A ct_article_with_image() 0 15 1
B getBenchContainer() 0 46 1
getContainer() 0 1 ?
1
<?php
2
3
namespace Psi\Component\ContentType\Benchmark;
4
5
use Pimple\Container;
6
use Psi\Component\ContentType\Tests\Functional\Example\Model\Article;
7
use Psi\Component\ContentType\Tests\Functional\Example\Model\Image;
8
9
/**
10
 * @BeforeMethods({"setUp"})
11
 * @Revs(1)
12
 * @Iterations(10)
13
 * @OutputTimeUnit("milliseconds", precision=2)
14
 */
15
trait DoctrineBenchTrait
16
{
17
    protected $objectManager;
18
19
    public function getBenchContainer()
20
    {
21
        $container = $this->getContainer([
22
            'mapping' => [
23
                Article::class => [
24
                    'properties' => [
25
                        'title' => [
26
                            'type' => 'text',
27
                            'role' => 'title',
28
                        ],
29
                        'image' => [
30
                            'type' => 'image',
31
                            'role' => 'image',
32
                        ],
33
                        'slideshow' => [
34
                            'type' => 'collection',
35
                            'options' => [
36
                                'field_type' => 'image',
37
                            ],
38
                        ],
39
                        'date' => [
40
                            'type' => 'datetime',
41
                        ],
42
                        'referencedImage' => [
43
                            'type' => 'object_reference',
44
                        ],
45
                        'paragraphs' => [
46
                            'type' => 'collection',
47
                            'options' => [
48
                                'field_type' => 'text',
49
                                'field_options' => [],
50
                            ],
51
                        ],
52
                        'numbers' => [
53
                            'type' => 'collection',
54
                            'options' => [
55
                                'field_type' => 'integer',
56
                            ],
57
                        ],
58
                    ],
59
                ],
60
            ],
61
        ]);
62
63
        return $container;
64
    }
65
66
    /**
67
     * @Subject()
68
     */
69
    public function image_phpcr_odm_only()
70
    {
71
        static $id;
72
        $image = new Image(
73
            '/path/to/image', 100, 200, 'image/jpeg'
74
        );
75
        $image->id = '/test/image' . $id++;
76
77
        $this->objectManager->persist($image);
78
        $this->objectManager->flush();
79
    }
80
81
    /**
82
     * @Subject()
83
     */
84
    public function ct_article()
85
    {
86
        static $id;
87
        $article = new Article();
88
        $article->id = '/test/article' . $id++;
89
        $article->title = 'Hello';
90
        $article->date = new \DateTime('2016-01-01 00:00:00');
91
92
        $this->objectManager->persist($article);
93
        $this->objectManager->flush();
94
    }
95
96
    /**
97
     * @Subject()
98
     */
99
    public function ct_article_with_image()
100
    {
101
        static $id;
102
        $article = new Article();
103
        $article->id = '/test/article' . $id++;
104
        $article->title = 'Hello';
105
        $article->date = new \DateTime('2016-01-01 00:00:00');
106
107
        $article->image = new Image(
108
            '/path/to/image', 100, 200, 'image/jpeg'
109
        );
110
111
        $this->objectManager->persist($article);
112
        $this->objectManager->flush();
113
    }
114
115
    abstract protected function getContainer(array $config = []): Container;
116
}
117