generated from yiisoft/package-template
/
OptionsTest.php
127 lines (113 loc) · 3.4 KB
/
OptionsTest.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<?php
declare(strict_types=1);
namespace Yiisoft\Config\Tests\Composer;
use PHPUnit\Framework\TestCase;
use Yiisoft\Config\Composer\Options;
final class OptionsTest extends TestCase
{
public function buildMergePlanDataProvider(): array
{
return [
'true' => [true],
'int' => [1],
'string' => ['yes'],
'string-int' => ['1'],
'array' => [['']],
];
}
/**
* @dataProvider buildMergePlanDataProvider
*/
public function testBuildMergePlanTrue(mixed $value): void
{
$options = new Options([
'config-plugin-options' => [
'build-merge-plan' => $value,
],
]);
$this->assertTrue($options->buildMergePlan());
}
public function noBuildMergePlanDataProvider(): array
{
return [
'false' => [false],
'int' => [0],
'string-int' => ['0'],
'empty-string' => [''],
'empty-array' => [[]],
];
}
/**
* @dataProvider noBuildMergePlanDataProvider
*/
public function testBuildMergePlanFalse(mixed $value): void
{
$options = new Options([
'config-plugin-options' => [
'build-merge-plan' => $value,
],
]);
$this->assertFalse($options->buildMergePlan());
}
public function packagePatternDataProvider(): array
{
return [
'string' => ['vendor-name/*'],
'array' => [['vendor-1/package-name', 'vendor-2/package-name', 'vendor-3/*']],
];
}
/**
* @dataProvider packagePatternDataProvider
*/
public function testVendorOverrideLayerPackages(array|string $packages): void
{
$options = new Options([
'config-plugin-options' => [
'vendor-override-layer' => $packages,
],
]);
$this->assertSame((array) $packages, $options->vendorOverrideLayerPackages());
}
public function directoryDataProvider(): array
{
return [
['', ''],
['', '/'],
['', '//'],
['', '\\'],
['custom/dir', 'custom/dir'],
['custom/dir', '/custom/dir'],
['custom/dir', '/custom/dir/'],
['custom/dir', '//custom/dir//'],
['custom/dir', '\\custom\\dir\\'],
];
}
/**
* @dataProvider directoryDataProvider
*/
public function testSourceDirectory(string $expected, string $path): void
{
$options = new Options([
'config-plugin-options' => [
'source-directory' => $path,
],
]);
$this->assertSame($expected, $options->sourceDirectory());
}
public function testDefaultOptions(): void
{
$options = new Options([]);
$this->assertTrue($options->buildMergePlan());
$this->assertSame([], $options->vendorOverrideLayerPackages());
$this->assertSame(Options::DEFAULT_CONFIG_DIRECTORY, $options->sourceDirectory());
}
public function testExtraOptionsNotArray(): void
{
$options = new Options([
'config-plugin-options' => true,
]);
$this->assertTrue($options->buildMergePlan());
$this->assertSame([], $options->vendorOverrideLayerPackages());
$this->assertSame(Options::DEFAULT_CONFIG_DIRECTORY, $options->sourceDirectory());
}
}