Passed
Push — master ( db5c4e...adaaa2 )
by Kirill
03:03
created

AccessorsTest   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 58
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 4
eloc 32
c 1
b 0
f 0
dl 0
loc 58
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A testGetAccessor() 0 11 1
A testReflection() 0 6 1
A testAccessed() 0 26 1
A testException() 0 4 1
1
<?php
2
3
/**
4
 * Spiral Framework.
5
 *
6
 * @license   MIT
7
 * @author    Anton Titov (Wolfy-J)
8
 */
9
10
declare(strict_types=1);
11
12
namespace Spiral\Tests\Models;
13
14
use PHPUnit\Framework\TestCase;
15
use Spiral\Models\Reflection\ReflectionEntity;
16
17
class AccessorsTest extends TestCase
18
{
19
    public function testAccessed(): void
20
    {
21
        $e = new AccessedEntity();
22
        $e->name = 'antony';
0 ignored issues
show
Bug Best Practice introduced by
The property name does not exist on Spiral\Tests\Models\AccessedEntity. Since you implemented __set, consider adding a @property annotation.
Loading history...
23
        $this->assertSame('ANTONY', (string)$e->name);
0 ignored issues
show
Bug Best Practice introduced by
The property name does not exist on Spiral\Tests\Models\AccessedEntity. Since you implemented __get, consider adding a @property annotation.
Loading history...
24
25
        $e->setFields(['name' => 'bob']);
26
        $this->assertSame('BOB', (string)$e->name);
27
28
        $this->assertSame([
29
            'name' => 'BOB'
30
        ], $e->getValue());
31
32
        $this->assertSame([
33
            'name' => 'BOB'
34
        ], $e->jsonSerialize());
35
36
        $this->assertEquals([
37
            'name' => new NameValue('bob')
38
        ], $e->getFields());
39
40
        $e->name = new NameValue('mike');
41
42
        $this->assertEquals([
43
            'name' => new NameValue('mike')
44
        ], $e->getFields());
45
    }
46
47
    public function testGetAccessor(): void
48
    {
49
        $e = new AccessedEntity();
50
        $this->assertSame('', (string)$e->name);
0 ignored issues
show
Bug Best Practice introduced by
The property name does not exist on Spiral\Tests\Models\AccessedEntity. Since you implemented __get, consider adding a @property annotation.
Loading history...
51
        $this->assertInstanceOf(NameValue::class, $e->name);
52
53
        $this->assertEquals([
54
            'name' => new NameValue(null)
55
        ], $e->getFields());
56
57
        $e->setFields(null);
58
    }
59
60
    public function testReflection(): void
61
    {
62
        $s = new ReflectionEntity(AccessedEntity::class);
63
        $this->assertSame([
64
            'name' => NameValue::class
65
        ], $s->getAccessors());
66
    }
67
68
    /**
69
     * @expectedException \Spiral\Models\Exception\EntityException
70
     */
71
    public function testException(): void
72
    {
73
        $e = new BadAccessedEntity();
74
        $e->name = 'xx';
0 ignored issues
show
Bug Best Practice introduced by
The property name does not exist on Spiral\Tests\Models\BadAccessedEntity. Since you implemented __set, consider adding a @property annotation.
Loading history...
75
    }
76
}
77