Completed
Push — master ( 9eea1d...6105f5 )
by Lucas
07:27
created

JsonDefinitionRelTest   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 88
Duplicated Lines 36.36 %

Coupling/Cohesion

Components 1
Dependencies 4

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 5
c 1
b 0
f 0
lcom 1
cbo 4
dl 32
loc 88
rs 10

5 Methods

Rating   Name   Duplication   Size   Complexity  
A testGetName() 8 8 1
A testGetType() 8 8 1
A testGetTypeDoctrine() 8 8 1
A testGetTypeSerializer() 8 8 1
B testGetDefAsArray() 0 24 1

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

1
<?php
2
/**
3
 * JsonDefinitionRelTest class file
4
 */
5
6
namespace Graviton\GeneratorBundle\Tests\Definition;
7
8
use Graviton\GeneratorBundle\Definition\JsonDefinitionRel;
9
use Graviton\GeneratorBundle\Definition\Schema;
10
11
/**
12
 * JsonDefinitionRel test
13
 *
14
 * @author   List of contributors <https://github.com/libgraviton/graviton/graphs/contributors>
15
 * @license  http://opensource.org/licenses/gpl-license.php GNU Public License
16
 * @link     http://swisscom.ch
17
 */
18
class JsonDefinitionRelTest extends BaseJsonDefinitionFieldTest
19
{
20
    /**
21
     * Test JsonDefinitionRel::getName()
22
     *
23
     * @return void
24
     */
25 View Code Duplication
    public function testGetName()
26
    {
27
        $name = __METHOD__;
28
        $definition = new Schema\Field();
29
30
        $field = new JsonDefinitionRel($name, $definition);
31
        $this->assertEquals($name, $field->getName());
32
    }
33
34
    /**
35
     * Test JsonDefinitionRel::getType()
36
     *
37
     * @return void
38
     */
39 View Code Duplication
    public function testGetType()
40
    {
41
        $type = __METHOD__;
42
        $definition = (new Schema\Field())->setType('class:'.$type);
43
44
        $field = new JsonDefinitionRel('name', $definition);
45
        $this->assertEquals($type, $field->getType());
46
    }
47
48
    /**
49
     * Test JsonDefinitionRel::getTypeDoctrine()
50
     *
51
     * @return void
52
     */
53 View Code Duplication
    public function testGetTypeDoctrine()
54
    {
55
        $type = __METHOD__;
56
        $definition = (new Schema\Field())->setType('class:'.$type);
57
58
        $field = new JsonDefinitionRel('name', $definition);
59
        $this->assertEquals($type, $field->getTypeDoctrine());
60
    }
61
62
    /**
63
     * Test JsonDefinitionRel::getTypeSerializer()
64
     *
65
     * @return void
66
     */
67 View Code Duplication
    public function testGetTypeSerializer()
68
    {
69
        $type = __METHOD__;
70
        $definition = (new Schema\Field())->setType('class:'.$type);
71
72
        $field = new JsonDefinitionRel('name', $definition);
73
        $this->assertEquals($type, $field->getTypeSerializer());
74
    }
75
76
    /**
77
     * Test JsonDefinitionRel::getDefAsArray()
78
     *
79
     * @return void
80
     */
81
    public function testGetDefAsArray()
82
    {
83
        $definition = $this->getBaseField();
84
        $relation = (new Schema\Relation())
85
            ->setType(__METHOD__.__LINE__);
86
87
        $field = new JsonDefinitionRel('name', $definition, $relation);
88
        $this->assertEquals(
89
            array_replace(
90
                $this->getBaseDefAsArray($definition),
91
                [
92
                    'name'              => $field->getName(),
93
                    'type'              => $field->getType(),
94
                    'exposedName'       => $definition->getExposeAs(),
95
                    'doctrineType'      => $field->getTypeDoctrine(),
96
                    'serializerType'    => $field->getTypeSerializer(),
97
                    'relType'           => $relation->getType(),
98
                    'isClassType'       => true,
99
                    'searchable'        => false,
100
                ]
101
            ),
102
            $field->getDefAsArray()
103
        );
104
    }
105
}
106