Passed
Push — master ( 727475...c2e18b )
by Igor
04:07
created

FindRequestTest   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 156
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 76
dl 0
loc 156
rs 10
c 1
b 0
f 0
wmc 8

8 Methods

Rating   Name   Duplication   Size   Complexity  
A testSet() 0 24 1
A testGet() 0 13 1
A testMaxMoreInvalidArgumentException() 0 10 1
A testMaxLessInvalidArgumentException() 0 11 1
A testEmpty() 0 20 1
A testMinOffsetInvalidException() 0 11 1
A getPropertyValue() 0 8 1
A testGetFormData() 0 14 1
1
<?php
2
3
namespace SomeWork\Minjust\Tests\Unit;
4
5
use InvalidArgumentException;
6
use PHPUnit\Framework\TestCase;
7
use ReflectionObject;
8
use SomeWork\Minjust\FindRequest;
9
10
/**
11
 * @covers \SomeWork\Minjust\FindRequest
12
 * @coversDefaultClass \SomeWork\Minjust\FindRequest
13
 */
14
class FindRequestTest extends TestCase
15
{
16
    public function testEmpty(): FindRequest
17
    {
18
        $request = new FindRequest();
19
20
        $this->assertIsString($this->getPropertyValue($request, 'fullName'));
21
        $this->assertIsString($this->getPropertyValue($request, 'registerNumber'));
22
        $this->assertIsString($this->getPropertyValue($request, 'certificateNumber'));
23
24
        $this->assertNull($this->getPropertyValue($request, 'status'));
25
        $this->assertNull($this->getPropertyValue($request, 'formOfLegalPractice'));
26
        $this->assertNull($this->getPropertyValue($request, 'territorialSubject'));
27
28
        $this->assertIsBool($this->getPropertyValue($request, 'fullData'));
29
30
        $this->assertIsInt($this->getPropertyValue($request, 'max'));
31
        $this->assertEquals(FindRequest::MAX_VALUE_MAX, $this->getPropertyValue($request, 'max'));
32
33
        $this->assertIsInt($this->getPropertyValue($request, 'offset'));
34
35
        return $request;
36
    }
37
38
    protected function getPropertyValue(object $object, string $property)
39
    {
40
        $ref = new ReflectionObject($object);
41
        /** @noinspection PhpUnhandledExceptionInspection */
42
        $property = $ref->getProperty($property);
43
        $property->setAccessible(true);
44
45
        return $property->getValue($object);
46
    }
47
48
    /**
49
     * @depends testEmpty
50
     *
51
     * @param \SomeWork\Minjust\FindRequest $request
52
     *
53
     * @return \SomeWork\Minjust\FindRequest
54
     */
55
    public function testSet(FindRequest $request): FindRequest
56
    {
57
        $request
58
            ->setTerritorialSubject(1)
59
            ->setCertificateNumber('testCertificateNumber')
60
            ->setRegisterNumber('testRegisterNumber')
61
            ->setStatus(1)
62
            ->setFullName('testFullName')
63
            ->setFullData()
64
            ->setMax(55)
65
            ->setOffset(1)
66
            ->setFormOfLegalPractice(2);
67
68
        $this->assertEquals(1, $this->getPropertyValue($request, 'territorialSubject'));
69
        $this->assertEquals('testCertificateNumber', $this->getPropertyValue($request, 'certificateNumber'));
70
        $this->assertEquals('testRegisterNumber', $this->getPropertyValue($request, 'registerNumber'));
71
        $this->assertEquals(1, $this->getPropertyValue($request, 'status'));
72
        $this->assertEquals('testFullName', $this->getPropertyValue($request, 'fullName'));
73
        $this->assertEquals(true, $this->getPropertyValue($request, 'fullData'));
74
        $this->assertEquals(55, $this->getPropertyValue($request, 'max'));
75
        $this->assertEquals(1, $this->getPropertyValue($request, 'offset'));
76
        $this->assertEquals(2, $this->getPropertyValue($request, 'formOfLegalPractice'));
77
78
        return $request;
79
    }
80
81
    /**
82
     * @depends testSet
83
     *
84
     * @param \SomeWork\Minjust\FindRequest $request
85
     *
86
     * @return \SomeWork\Minjust\FindRequest
87
     */
88
    public function testGet(FindRequest $request): FindRequest
89
    {
90
        $this->assertEquals(1, $request->getTerritorialSubject());
91
        $this->assertEquals('testCertificateNumber', $request->getCertificateNumber());
92
        $this->assertEquals('testRegisterNumber', $request->getRegisterNumber());
93
        $this->assertEquals(1, $request->getStatus());
94
        $this->assertEquals('testFullName', $request->getFullName());
95
        $this->assertEquals(true, $request->isFullData());
96
        $this->assertEquals(55, $request->getMax());
97
        $this->assertEquals(1, $request->getOffset());
98
        $this->assertEquals(2, $request->getFormOfLegalPractice());
99
100
        return $request;
101
    }
102
103
    /**
104
     * @depends testSet
105
     * @covers ::getFormData
106
     *
107
     * @param \SomeWork\Minjust\FindRequest $findRequest
108
     */
109
    public function testGetFormData(FindRequest $findRequest): void
110
    {
111
        $request = [
112
            FindRequest::FULL_NAME              => $findRequest->getFullName(),
113
            FindRequest::REGISTER_NUMBER        => $findRequest->getRegisterNumber(),
114
            FindRequest::CERTIFICATE_NUMBER     => $findRequest->getCertificateNumber(),
115
            FindRequest::STATUS                 => $findRequest->getStatus(),
116
            FindRequest::FORM_OF_LEGAL_PRACTICE => $findRequest->getFormOfLegalPractice(),
117
            FindRequest::TERRITORIAL_SUBJECT    => $findRequest->getTerritorialSubject(),
118
            FindRequest::MAX                    => $findRequest->getMax(),
119
            FindRequest::OFFSET                 => $findRequest->getOffset(),
120
        ];
121
122
        $this->assertEquals($request, $findRequest->getFormData());
123
    }
124
125
    /**
126
     * @covers ::setMax
127
     */
128
    public function testMaxMoreInvalidArgumentException(): void
129
    {
130
        $this->expectException(InvalidArgumentException::class);
131
        $this->expectExceptionMessage(
132
            sprintf(
133
                'Maximum value for "%s" is %s',
134
                FindRequest::MAX,
135
                FindRequest::MAX_VALUE_MAX
136
            ));
137
        (new FindRequest())->setMax(FindRequest::MAX_VALUE_MAX + 1);
138
    }
139
140
    /**
141
     * @covers ::setMax
142
     */
143
    public function testMaxLessInvalidArgumentException(): void
144
    {
145
        $this->expectException(InvalidArgumentException::class);
146
        $this->expectExceptionMessage(
147
            sprintf(
148
                'Minimum value for "%s" is %s',
149
                FindRequest::MAX,
150
                1
151
            )
152
        );
153
        (new FindRequest())->setMax(0);
154
    }
155
156
    /**
157
     * @covers ::setOffset
158
     */
159
    public function testMinOffsetInvalidException(): void
160
    {
161
        $this->expectException(InvalidArgumentException::class);
162
        $this->expectExceptionMessage(
163
            sprintf(
164
                'Minimum value for "%s" is %s',
165
                FindRequest::OFFSET,
166
                0
167
            )
168
        );
169
        (new FindRequest())->setOffset(-1);
170
    }
171
}
172