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

AwsVisibilityConverterTest   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 82
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 28
c 1
b 0
f 0
dl 0
loc 82
rs 10
wmc 5

5 Methods

Rating   Name   Duplication   Size   Complexity  
A testConstructor() 0 13 1
A testConstructorNoClassFailed() 0 9 1
A testConstructorNoVisibilityOptionFailed() 0 9 1
A testConstructorNoOptionsFailed() 0 7 1
A testGetConverter() 0 15 1
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