Passed
Push — master ( 9f25c4...68bc04 )
by Adrien
02:16
created

MessageRendererTest::testRender()   A

Complexity

Conditions 3
Paths 1

Size

Total Lines 43
Code Lines 29

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 3
eloc 29
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 43
rs 9.456
1
<?php
2
3
declare(strict_types=1);
4
5
namespace EcodevTests\Felix\Service;
6
7
use Ecodev\Felix\Service\MessageRenderer;
8
use EcodevTests\Felix\Blog\Model\User;
9
use Laminas\View\Model\ViewModel;
10
use Laminas\View\Renderer\RendererInterface;
11
use PHPUnit\Framework\TestCase;
12
13
class MessageRendererTest extends TestCase
14
{
15
    public function testRender(): void
16
    {
17
        $user = new User();
18
        $email = '[email protected]';
19
        $subject = 'my subject';
20
        $type = 'my_type';
21
        $mailParams = ['foo' => 'bar'];
22
23
        $viewRenderer = $this->createMock(RendererInterface::class);
24
        $viewRenderer->expects($this->exactly(2))
25
            ->method('render')
26
            ->withConsecutive(
27
                [
28
                    self::callback(function (ViewModel $viewModel) use ($user) {
29
                        $variables = [
30
                            'foo' => 'bar',
31
                            'email' => '[email protected]',
32
                            'user' => $user,
33
                            'serverUrl' => 'https://example.com',
34
                        ];
35
36
                        return $viewModel->getTemplate() === 'my-type' &&
37
                            $viewModel->getVariables() === $variables;
38
                    }),
39
                ], [
40
                    self::callback(function (ViewModel $viewModel) use ($user) {
41
                        $variables = [
42
                            'content' => 'mocked-rendered-view',
43
                            'subject' => 'my subject',
44
                            'user' => $user,
45
                            'serverUrl' => 'https://example.com',
46
                            'hostname' => 'example.com',
47
                        ];
48
49
                        return $viewModel->getTemplate() === 'layout' &&
50
                            $viewModel->getVariables() === $variables;
51
                    }),
52
                ]
53
            )->willReturnOnConsecutiveCalls('mocked-rendered-view', 'mocked-rendered-layout');
54
55
        $messageRenderer = new MessageRenderer($viewRenderer, 'example.com');
56
57
        $messageRenderer->render($user, $email, $subject, $type, $mailParams);
58
    }
59
}
60