Passed
Pull Request — master (#407)
by Kirill
11:08 queued 03:58
created

testConstructorNoOptionsFailed()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 4
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 7
rs 10
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Spiral\Tests\Storage\Unit\Config\DTO\FileSystemInfo\Aws;
6
7
use League\Flysystem\AwsS3V3\PortableVisibilityConverter;
8
use League\Flysystem\Visibility;
9
use Spiral\Storage\Exception\ConfigException;
10
use Spiral\Storage\Config\DTO\FileSystemInfo\Aws\AwsVisibilityConverter;
11
use Spiral\Storage\Exception\StorageException;
12
use Spiral\Tests\Storage\Unit\UnitTestCase;
13
14
class AwsVisibilityConverterTest extends UnitTestCase
15
{
16
    /**
17
     * @throws StorageException
18
     */
19
    public function testConstructor(): void
20
    {
21
        $info = new AwsVisibilityConverter(
22
            [
23
                AwsVisibilityConverter::CLASS_KEY => PortableVisibilityConverter::class,
24
                AwsVisibilityConverter::OPTIONS_KEY => [
25
                    AwsVisibilityConverter::VISIBILITY_KEY => Visibility::PUBLIC,
26
                ]
27
            ]
28
        );
29
30
        $this->assertEquals(PortableVisibilityConverter::class, $info->getClass());
31
        $this->assertEquals(Visibility::PUBLIC, $info->getOption(AwsVisibilityConverter::VISIBILITY_KEY));
32
    }
33
34
    /**
35
     * @throws StorageException
36
     */
37
    public function testGetConverter(): void
38
    {
39
        $info = new AwsVisibilityConverter(
40
            [
41
                AwsVisibilityConverter::CLASS_KEY => PortableVisibilityConverter::class,
42
                AwsVisibilityConverter::OPTIONS_KEY => [
43
                    AwsVisibilityConverter::VISIBILITY_KEY => Visibility::PUBLIC,
44
                ],
45
            ]
46
        );
47
48
        $converter = $info->getConverter();
49
50
        $this->assertInstanceOf(PortableVisibilityConverter::class, $converter);
51
        $this->assertSame($converter, $info->getConverter());
52
    }
53
54
    /**
55
     * @throws StorageException
56
     */
57
    public function testConstructorNoClassFailed(): void
58
    {
59
        $this->expectException(ConfigException::class);
60
        $this->expectExceptionMessage('Aws visibility converter must be described with class');
61
62
        new AwsVisibilityConverter(
63
            [
64
                AwsVisibilityConverter::OPTIONS_KEY => [
65
                    AwsVisibilityConverter::VISIBILITY_KEY => Visibility::PUBLIC,
66
                ],
67
            ]
68
        );
69
    }
70
71
    /**
72
     * @throws StorageException
73
     */
74
    public function testConstructorNoOptionsFailed(): void
75
    {
76
        $this->expectException(ConfigException::class);
77
        $this->expectExceptionMessage('Aws visibility converter must be described with options list');
78
79
        new AwsVisibilityConverter(
80
            [AwsVisibilityConverter::CLASS_KEY => PortableVisibilityConverter::class]
81
        );
82
    }
83
84
    /**
85
     * @throws StorageException
86
     */
87
    public function testConstructorNoVisibilityOptionFailed(): void
88
    {
89
        $this->expectException(ConfigException::class);
90
        $this->expectExceptionMessage('`visibility` option should be defined for Aws visibility converter');
91
92
        new AwsVisibilityConverter(
93
            [
94
                AwsVisibilityConverter::CLASS_KEY => PortableVisibilityConverter::class,
95
                AwsVisibilityConverter::OPTIONS_KEY => ['some' => 'option'],
96
            ]
97
        );
98
    }
99
}
100