Completed
Push — master ( bcc930...059858 )
by Guillermo
11s
created

EntityCollectionTester   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 124
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Importance

Changes 0
Metric Value
wmc 8
lcom 1
cbo 2
dl 0
loc 124
rs 10
c 0
b 0
f 0

8 Methods

Rating   Name   Duplication   Size   Complexity  
entityCollectionClass() 0 1 ?
A emptyConstructor() 0 11 1
A invalidElementByConstructor() 0 11 1
A invalidEntities() 0 11 1
A invalidAddElement() 0 13 1
A validChildrenElementByConstructor() 0 11 1
A validElementByConstructor() 0 11 1
A addTwoValidElement() 0 19 2
1
<?php
2
3
namespace Atrapalo\PHPTools\Tester\Collection;
4
5
use Atrapalo\PHPTools\Collection\EntityCollection;
6
7
/**
8
 * Class EntityCollectionTester
9
 * @package Atrapalo\PHPTools\Collection
10
 *
11
 * @author Guillermo González <[email protected]>
12
 */
13
trait EntityCollectionTester
14
{
15
    /**
16
     * @return string
17
     */
18
    abstract protected function entityCollectionClass(): string;
19
20
    /**
21
     * @test
22
     */
23
    public function emptyConstructor()
24
    {
25
        /** @var EntityCollection $entityCollectionClass */
26
        $entityCollectionClass = $this->entityCollectionClass();
27
        $exception = $entityCollectionClass::customEmptyException();
28
29
        $this->expectException(get_class($exception));
0 ignored issues
show
Bug introduced by
It seems like expectException() must be provided by classes using this trait. How about adding it as abstract method to this trait?

This check looks for methods that are used by a trait but not required by it.

To illustrate, let’s look at the following code example

trait Idable {
    public function equalIds(Idable $other) {
        return $this->getId() === $other->getId();
    }
}

The trait Idable provides a method equalsId that in turn relies on the method getId(). If this method does not exist on a class mixing in this trait, the method will fail.

Adding the getId() as an abstract method to the trait will make sure it is available.

Loading history...
30
        $this->expectExceptionMessage($exception->getMessage());
0 ignored issues
show
Bug introduced by
It seems like expectExceptionMessage() must be provided by classes using this trait. How about adding it as abstract method to this trait?

This check looks for methods that are used by a trait but not required by it.

To illustrate, let’s look at the following code example

trait Idable {
    public function equalIds(Idable $other) {
        return $this->getId() === $other->getId();
    }
}

The trait Idable provides a method equalsId that in turn relies on the method getId(). If this method does not exist on a class mixing in this trait, the method will fail.

Adding the getId() as an abstract method to the trait will make sure it is available.

Loading history...
31
32
        new $entityCollectionClass([]);
33
    }
34
35
    /**
36
     * @test
37
     * @dataProvider invalidEntities
38
     * @param array $elements
39
     */
40
    public function invalidElementByConstructor(array $elements)
41
    {
42
        /** @var EntityCollection $entityCollectionClass */
43
        $entityCollectionClass = $this->entityCollectionClass();
44
        $exception = $entityCollectionClass::customInvalidEntityException();
45
46
        $this->expectException(get_class($exception));
0 ignored issues
show
Bug introduced by
It seems like expectException() must be provided by classes using this trait. How about adding it as abstract method to this trait?

This check looks for methods that are used by a trait but not required by it.

To illustrate, let’s look at the following code example

trait Idable {
    public function equalIds(Idable $other) {
        return $this->getId() === $other->getId();
    }
}

The trait Idable provides a method equalsId that in turn relies on the method getId(). If this method does not exist on a class mixing in this trait, the method will fail.

Adding the getId() as an abstract method to the trait will make sure it is available.

Loading history...
47
        $this->expectExceptionMessage($exception->getMessage());
0 ignored issues
show
Bug introduced by
It seems like expectExceptionMessage() must be provided by classes using this trait. How about adding it as abstract method to this trait?

This check looks for methods that are used by a trait but not required by it.

To illustrate, let’s look at the following code example

trait Idable {
    public function equalIds(Idable $other) {
        return $this->getId() === $other->getId();
    }
}

The trait Idable provides a method equalsId that in turn relies on the method getId(). If this method does not exist on a class mixing in this trait, the method will fail.

Adding the getId() as an abstract method to the trait will make sure it is available.

Loading history...
48
49
        new $entityCollectionClass($elements);
50
    }
51
52
    /**
53
     * @return array
54
     */
55
    public function invalidEntities()
56
    {
57
        return [
58
            [[1]],
59
            [['element']],
60
            [[new \stdClass()]],
61
            [[new \stdClass(), new \stdClass()]],
62
            [[null]],
63
            [[false]]
64
        ];
65
    }
66
67
    /**
68
     * @test
69
     */
70
    public function invalidAddElement()
71
    {
72
        /** @var EntityCollection $entityCollectionClass */
73
        $entityCollectionClass = $this->entityCollectionClass();
74
        $exception = $entityCollectionClass::customInvalidEntityException();
75
76
        $this->expectException(get_class($exception));
0 ignored issues
show
Bug introduced by
It seems like expectException() must be provided by classes using this trait. How about adding it as abstract method to this trait?

This check looks for methods that are used by a trait but not required by it.

To illustrate, let’s look at the following code example

trait Idable {
    public function equalIds(Idable $other) {
        return $this->getId() === $other->getId();
    }
}

The trait Idable provides a method equalsId that in turn relies on the method getId(). If this method does not exist on a class mixing in this trait, the method will fail.

Adding the getId() as an abstract method to the trait will make sure it is available.

Loading history...
77
        $this->expectExceptionMessage($exception->getMessage());
0 ignored issues
show
Bug introduced by
It seems like expectExceptionMessage() must be provided by classes using this trait. How about adding it as abstract method to this trait?

This check looks for methods that are used by a trait but not required by it.

To illustrate, let’s look at the following code example

trait Idable {
    public function equalIds(Idable $other) {
        return $this->getId() === $other->getId();
    }
}

The trait Idable provides a method equalsId that in turn relies on the method getId(). If this method does not exist on a class mixing in this trait, the method will fail.

Adding the getId() as an abstract method to the trait will make sure it is available.

Loading history...
78
79
        /** @var EntityCollection $collection */
80
        $collection = new $entityCollectionClass([$this->prophesize($entityCollectionClass::entityClass())->reveal()], true);
0 ignored issues
show
Bug introduced by
It seems like prophesize() must be provided by classes using this trait. How about adding it as abstract method to this trait?

This check looks for methods that are used by a trait but not required by it.

To illustrate, let’s look at the following code example

trait Idable {
    public function equalIds(Idable $other) {
        return $this->getId() === $other->getId();
    }
}

The trait Idable provides a method equalsId that in turn relies on the method getId(). If this method does not exist on a class mixing in this trait, the method will fail.

Adding the getId() as an abstract method to the trait will make sure it is available.

Loading history...
81
        $collection->add([]);
82
    }
83
84
    /**
85
     * @test
86
     */
87
    public function validChildrenElementByConstructor()
88
    {
89
        /** @var EntityCollection $entityCollectionClass */
90
        $entityCollectionClass = $this->entityCollectionClass();
91
        $exception = $entityCollectionClass::customInvalidEntityException();
92
93
        $this->expectException(get_class($exception));
0 ignored issues
show
Bug introduced by
It seems like expectException() must be provided by classes using this trait. How about adding it as abstract method to this trait?

This check looks for methods that are used by a trait but not required by it.

To illustrate, let’s look at the following code example

trait Idable {
    public function equalIds(Idable $other) {
        return $this->getId() === $other->getId();
    }
}

The trait Idable provides a method equalsId that in turn relies on the method getId(). If this method does not exist on a class mixing in this trait, the method will fail.

Adding the getId() as an abstract method to the trait will make sure it is available.

Loading history...
94
        $this->expectExceptionMessage($exception->getMessage());
0 ignored issues
show
Bug introduced by
It seems like expectExceptionMessage() must be provided by classes using this trait. How about adding it as abstract method to this trait?

This check looks for methods that are used by a trait but not required by it.

To illustrate, let’s look at the following code example

trait Idable {
    public function equalIds(Idable $other) {
        return $this->getId() === $other->getId();
    }
}

The trait Idable provides a method equalsId that in turn relies on the method getId(). If this method does not exist on a class mixing in this trait, the method will fail.

Adding the getId() as an abstract method to the trait will make sure it is available.

Loading history...
95
96
        new $entityCollectionClass([$this->prophesize($entityCollectionClass::entityClass())->reveal()]);
0 ignored issues
show
Bug introduced by
It seems like prophesize() must be provided by classes using this trait. How about adding it as abstract method to this trait?

This check looks for methods that are used by a trait but not required by it.

To illustrate, let’s look at the following code example

trait Idable {
    public function equalIds(Idable $other) {
        return $this->getId() === $other->getId();
    }
}

The trait Idable provides a method equalsId that in turn relies on the method getId(). If this method does not exist on a class mixing in this trait, the method will fail.

Adding the getId() as an abstract method to the trait will make sure it is available.

Loading history...
97
    }
98
99
    /**
100
     * @test
101
     */
102
    public function validElementByConstructor()
103
    {
104
        /** @var EntityCollection $entityCollectionClass */
105
        $entityCollectionClass = $this->entityCollectionClass();
106
107
        /** @var EntityCollection $collection */
108
        $collection = new $entityCollectionClass([$this->prophesize($entityCollectionClass::entityClass())->reveal()], true);
0 ignored issues
show
Bug introduced by
It seems like prophesize() must be provided by classes using this trait. How about adding it as abstract method to this trait?

This check looks for methods that are used by a trait but not required by it.

To illustrate, let’s look at the following code example

trait Idable {
    public function equalIds(Idable $other) {
        return $this->getId() === $other->getId();
    }
}

The trait Idable provides a method equalsId that in turn relies on the method getId(). If this method does not exist on a class mixing in this trait, the method will fail.

Adding the getId() as an abstract method to the trait will make sure it is available.

Loading history...
109
110
        $this->assertSame(1, $collection->count());
0 ignored issues
show
Bug introduced by
It seems like assertSame() must be provided by classes using this trait. How about adding it as abstract method to this trait?

This check looks for methods that are used by a trait but not required by it.

To illustrate, let’s look at the following code example

trait Idable {
    public function equalIds(Idable $other) {
        return $this->getId() === $other->getId();
    }
}

The trait Idable provides a method equalsId that in turn relies on the method getId(). If this method does not exist on a class mixing in this trait, the method will fail.

Adding the getId() as an abstract method to the trait will make sure it is available.

Loading history...
111
        $this->assertInstanceOf($entityCollectionClass::entityClass(), $collection->current());
0 ignored issues
show
Bug introduced by
It seems like assertInstanceOf() must be provided by classes using this trait. How about adding it as abstract method to this trait?

This check looks for methods that are used by a trait but not required by it.

To illustrate, let’s look at the following code example

trait Idable {
    public function equalIds(Idable $other) {
        return $this->getId() === $other->getId();
    }
}

The trait Idable provides a method equalsId that in turn relies on the method getId(). If this method does not exist on a class mixing in this trait, the method will fail.

Adding the getId() as an abstract method to the trait will make sure it is available.

Loading history...
112
    }
113
114
    /**
115
     * @test
116
     */
117
    public function addTwoValidElement()
118
    {
119
        /** @var EntityCollection $entityCollectionClass */
120
        $entityCollectionClass = $this->entityCollectionClass();
121
122
        /** @var EntityCollection $collection */
123
        $collection = new $entityCollectionClass([$this->prophesize($entityCollectionClass::entityClass())->reveal()], true);
0 ignored issues
show
Bug introduced by
It seems like prophesize() must be provided by classes using this trait. How about adding it as abstract method to this trait?

This check looks for methods that are used by a trait but not required by it.

To illustrate, let’s look at the following code example

trait Idable {
    public function equalIds(Idable $other) {
        return $this->getId() === $other->getId();
    }
}

The trait Idable provides a method equalsId that in turn relies on the method getId(). If this method does not exist on a class mixing in this trait, the method will fail.

Adding the getId() as an abstract method to the trait will make sure it is available.

Loading history...
124
125
126
        /** @var \Prophecy\Prophecy\ObjectProphecy $entity */
127
        $entity = $this->prophesize($entityCollectionClass::entityClass());
0 ignored issues
show
Bug introduced by
It seems like prophesize() must be provided by classes using this trait. How about adding it as abstract method to this trait?

This check looks for methods that are used by a trait but not required by it.

To illustrate, let’s look at the following code example

trait Idable {
    public function equalIds(Idable $other) {
        return $this->getId() === $other->getId();
    }
}

The trait Idable provides a method equalsId that in turn relies on the method getId(). If this method does not exist on a class mixing in this trait, the method will fail.

Adding the getId() as an abstract method to the trait will make sure it is available.

Loading history...
128
        $collection->add($entity->reveal());
129
        $collection->add($entity->reveal());
130
131
        $this->assertSame(3, $collection->count());
0 ignored issues
show
Bug introduced by
It seems like assertSame() must be provided by classes using this trait. How about adding it as abstract method to this trait?

This check looks for methods that are used by a trait but not required by it.

To illustrate, let’s look at the following code example

trait Idable {
    public function equalIds(Idable $other) {
        return $this->getId() === $other->getId();
    }
}

The trait Idable provides a method equalsId that in turn relies on the method getId(). If this method does not exist on a class mixing in this trait, the method will fail.

Adding the getId() as an abstract method to the trait will make sure it is available.

Loading history...
132
        foreach ($collection as $element) {
133
            $this->assertInstanceOf($entityCollectionClass::entityClass(), $element);
0 ignored issues
show
Bug introduced by
It seems like assertInstanceOf() must be provided by classes using this trait. How about adding it as abstract method to this trait?

This check looks for methods that are used by a trait but not required by it.

To illustrate, let’s look at the following code example

trait Idable {
    public function equalIds(Idable $other) {
        return $this->getId() === $other->getId();
    }
}

The trait Idable provides a method equalsId that in turn relies on the method getId(). If this method does not exist on a class mixing in this trait, the method will fail.

Adding the getId() as an abstract method to the trait will make sure it is available.

Loading history...
134
        }
135
    }
136
}
137