serviceIsCreated()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 15

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 0
dl 0
loc 15
rs 9.7666
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace AcelayaTest\ExpressiveErrorHandler\ErrorHandler\Factory;
6
7
use Acelaya\ExpressiveErrorHandler\ErrorHandler\ContentBasedErrorResponseGenerator;
8
use Acelaya\ExpressiveErrorHandler\ErrorHandler\ErrorResponseGeneratorManager;
9
use Acelaya\ExpressiveErrorHandler\ErrorHandler\Factory\ContentBasedErrorResponseGeneratorFactory;
10
use Acelaya\ExpressiveErrorHandler\Log\LogMessageBuilderInterface;
11
use PHPUnit\Framework\TestCase;
12
use Psr\Log\LoggerInterface;
13
use ReflectionObject;
14
use Zend\ServiceManager\ServiceManager;
15
16
class ContentBasedErrorHandlerFactoryTest extends TestCase
17
{
18
    /** @var ContentBasedErrorResponseGeneratorFactory */
19
    protected $factory;
20
21
    public function setUp(): void
22
    {
23
        $this->factory = new ContentBasedErrorResponseGeneratorFactory();
24
    }
25
26
    /**
27
     * @test
28
     */
29
    public function serviceIsCreated(): void
30
    {
31
        $instance = $this->factory->__invoke(new ServiceManager(['services' => [
32
            ErrorResponseGeneratorManager::class => $this->prophesize(ErrorResponseGeneratorManager::class)->reveal(),
33
            LogMessageBuilderInterface::class => $this->prophesize(LogMessageBuilderInterface::class)->reveal(),
34
        ]]));
35
        $this->assertInstanceOf(ContentBasedErrorResponseGenerator::class, $instance);
36
37
        $instance = $this->factory->__invoke(new ServiceManager(['services' => [
38
            ErrorResponseGeneratorManager::class => $this->prophesize(ErrorResponseGeneratorManager::class)->reveal(),
39
            LogMessageBuilderInterface::class => $this->prophesize(LogMessageBuilderInterface::class)->reveal(),
40
            LoggerInterface::class => $this->prophesize(LoggerInterface::class)->reveal(),
41
        ]]));
42
        $this->assertInstanceOf(ContentBasedErrorResponseGenerator::class, $instance);
43
    }
44
45
    /**
46
     * @test
47
     */
48
    public function defaultContentTypeIsSetWhenDefined(): void
49
    {
50
        /** @var ContentBasedErrorResponseGenerator $instance */
51
        $instance = $this->factory->__invoke(new ServiceManager(['services' => [
52
            ErrorResponseGeneratorManager::class => $this->prophesize(ErrorResponseGeneratorManager::class)->reveal(),
53
            LogMessageBuilderInterface::class => $this->prophesize(LogMessageBuilderInterface::class)->reveal(),
54
            'config' => [
55
                'error_handler' => [
56
                    'default_content_type' => 'application/json',
57
                ],
58
            ],
59
        ]]));
60
61
        $ref = new ReflectionObject($instance);
62
        $prop = $ref->getProperty('defaultContentType');
63
        $prop->setAccessible(true);
64
        $this->assertEquals('application/json', $prop->getValue($instance));
65
    }
66
}
67