Passed
Push — master ( 4a3e7e...eed543 )
by Guillermo A.
01:38
created

ResourceTest::testDelete()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 0
dl 0
loc 5
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace GuillermoandraeTest\Highrise\Resources;
4
5
use Guillermoandrae\Highrise\Http\AdapterInterface;
6
use Guillermoandrae\Highrise\Resources\AbstractResource;
7
use Guillermoandrae\Highrise\Resources\ResourceInterface;
8
use GuillermoandraeTest\Highrise\TestCase;
9
10
class ResourceTest extends TestCase
11
{
12
    public function testFind()
13
    {
14
        $id = '12345';
15
        $expectedBody = sprintf('<test><id>%s</id></test>', $id);
16
        $adapter = $this->getAdapter($this->getMockClient(200, [], $expectedBody));
17
        $resource = $this->getResource($adapter);
18
        $item = $resource->find($id);
19
        $this->assertEquals($id, $item['id']);
20
    }
21
22
    public function testFindAll()
23
    {
24
        $expectedBody = '<tests type="array"><test><id>1</id></test><test><id>2</id></test></tests>';
25
        $adapter = $this->getAdapter($this->getMockClient(200, [], $expectedBody));
26
        $resource = $this->getResource($adapter);
27
        $this->assertCount(2, $resource->findAll());
28
    }
29
30
    public function testSearch()
31
    {
32
        $expectedBody = '<tests type="array"><test><id>1</id></test><test><id>2</id></test></tests>';
33
        $adapter = $this->getAdapter($this->getMockClient(200, [], $expectedBody));
34
        $resource = $this->getResource($adapter);
35
        $resource->search(['test' => 'test']);
36
        $this->assertContains('search.xml', $resource->getAdapter()->getLastRequest()->getUri()->getPath());
37
    }
38
39
    public function testCreate()
40
    {
41
        $expectedBody = '<test><name>test</name></test>';
42
        $adapter = $this->getAdapter($this->getMockClient(201, [], $expectedBody));
43
        $resource = $this->getResource($adapter);
44
        $results = $resource->create(['name' => 'test']);
45
        $this->assertArrayHasKey('name', $results);
46
        $this->assertSame($expectedBody, (string) $resource->getAdapter()->getLastRequest()->getBody());
47
    }
48
49
    public function testUpdate()
50
    {
51
        $expectedBody = '<test><name>test</name></test>';
52
        $adapter = $this->getAdapter($this->getMockClient(201, [], $expectedBody));
53
        $resource = $this->getResource($adapter);
54
        $results = $resource->update('123456', ['name' => 'test']);
55
        $this->assertArrayHasKey('name', $results);
56
        $this->assertSame($expectedBody, (string) $resource->getAdapter()->getLastRequest()->getBody());
57
    }
58
59
    public function testDelete()
60
    {
61
        $adapter = $this->getAdapter($this->getMockClient(200));
62
        $resource = $this->getResource($adapter);
63
        $this->assertTrue($resource->delete('123456'));
64
    }
65
66
    private function getResource(AdapterInterface $adapter): ResourceInterface
67
    {
68
        return $this->getMockForAbstractClass(
0 ignored issues
show
Bug Best Practice introduced by
The expression return $this->getMockFor...ray($adapter), 'Tests') returns the type PHPUnit\Framework\MockObject\MockObject which is incompatible with the type-hinted return Guillermoandrae\Highrise...urces\ResourceInterface.
Loading history...
69
            AbstractResource::class,
70
            [$adapter],
71
            'Tests'
72
        );
73
    }
74
}
75