Test Failed
Branch main (1f5430)
by Rizart
01:43
created

UnitTestCase::mockAPIRequest()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 4
c 0
b 0
f 0
nc 1
nop 2
dl 0
loc 8
rs 10
1
<?php
2
3
namespace Tests\Unit;
4
5
use ElasticEmail\Client;
6
use GuzzleHttp\Handler\MockHandler;
7
use GuzzleHttp\Middleware;
8
use GuzzleHttp\Psr7\Request;
9
use GuzzleHttp\Psr7\Response;
10
use Tests\TestCase;
11
12
class UnitTestCase extends TestCase
13
{
14
    protected function mockAPIStatus(&$container = [], $key = 'key'): Client
15
    {
16
        $history = Middleware::history($container);
17
18
        $body = json_encode(['success' => true, 'data' => 'mocked-data']);
19
        $response = new Response(200, [], $body);
20
        $mockHandler = new MockHandler([$response]);
21
22
        return new Client($key, [$history], $mockHandler);
23
    }
24
25
    protected function mockAPIRequest(&$container = [], $key = 'key'): Client
26
    {
27
        $history = Middleware::history($container);
28
        $mockHandler = new MockHandler([
29
            new Response(200, [], json_encode(['success' => true])),
30
        ]);
31
32
        return new Client($key, [$history], $mockHandler);
33
    }
34
35
    protected function assertAPIRequestBodyHas(array $expected, $container)
36
    {
37
        $this->assertMiddlewarePushed($container);
38
        $this->assertArrayHasKey('request', $container[0]);
39
40
        /** @var Request $request */
41
        $request = $container[0]['request'];
42
43
        $actual = (string)$request->getBody();
44
        $expected = http_build_query($expected);
45
        $this->assertSame($expected, $actual);
46
    }
47
48
    protected function assertMiddlewarePushed($container = [])
49
    {
50
        $error = 'Expected history middleware was not pushed.';
51
52
        $this->assertCount(1, $container, $error);
53
    }
54
55
    protected function assertAPIRequestMultipartHas(
56
        array $params,
57
        array $container
58
    ) {
59
        $this->assertMiddlewarePushed($container);
60
        $this->assertArrayHasKey('request', $container[0]);
61
62
        /** @var Request $request */
63
        $request = $container[0]['request'];
64
65
        $contents = $request->getBody()->getContents();
66
67
        $expected = sprintf('name="%s"', $params['name']);
68
        $this->assertStringContainsString($expected, $contents);
69
70
        $expected = sprintf("\r\n%s\r\n", $params['contents']);
71
        $this->assertStringContainsString($expected, $contents);
72
73
        $contents = strlen($params['contents']);
74
        $expected = sprintf("Content-Length: %s\r\n", $contents);
75
        $this->assertStringContainsString($expected, $contents);
76
    }
77
78
    protected function assertAPIRequestQueryHas($container, $string)
79
    {
80
        $this->assertMiddlewarePushed($container);
81
        $this->assertArrayHasKey('request', $container[0]);
82
83
        /** @var Request $request */
84
        $request = $container[0]['request'];
85
86
        $this->assertEquals($string, $request->getUri()->getQuery());
87
    }
88
89
    protected function assertAPIBaseURIEquals($container, $string)
90
    {
91
        $this->assertArrayHasKey('request', $container[0]);
92
93
        /** @var Request $request */
94
        $request = $container[0]['request'];
95
96
        $this->assertEquals($string, $request->getUri()->getHost());
97
    }
98
}
99