|
|
|
|
@ -53,63 +53,123 @@ class SetConfigTest extends TestCase {
|
|
|
|
|
|
|
|
|
|
public function setData() {
|
|
|
|
|
return [
|
|
|
|
|
[
|
|
|
|
|
'name',
|
|
|
|
|
'newvalue',
|
|
|
|
|
true,
|
|
|
|
|
true,
|
|
|
|
|
true,
|
|
|
|
|
'info',
|
|
|
|
|
],
|
|
|
|
|
[
|
|
|
|
|
'name',
|
|
|
|
|
'newvalue',
|
|
|
|
|
false,
|
|
|
|
|
true,
|
|
|
|
|
false,
|
|
|
|
|
'comment',
|
|
|
|
|
],
|
|
|
|
|
[['name'], 'newvalue', null, 'newvalue'],
|
|
|
|
|
[['a', 'b', 'c'], 'foobar', null, ['b' => ['c' => 'foobar']]],
|
|
|
|
|
[['a', 'b', 'c'], 'foobar', ['b' => ['d' => 'barfoo']], ['b' => ['d' => 'barfoo', 'c' => 'foobar']]],
|
|
|
|
|
];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @dataProvider setData
|
|
|
|
|
*
|
|
|
|
|
* @param string $configName
|
|
|
|
|
* @param mixed $newValue
|
|
|
|
|
* @param bool $configExists
|
|
|
|
|
* @param bool $updateOnly
|
|
|
|
|
* @param bool $updated
|
|
|
|
|
* @param string $expectedMessage
|
|
|
|
|
* @param array $configNames
|
|
|
|
|
* @param string $newValue
|
|
|
|
|
* @param mixed $existingData
|
|
|
|
|
* @param mixed $expectedValue
|
|
|
|
|
*/
|
|
|
|
|
public function testSet($configName, $newValue, $configExists, $updateOnly, $updated, $expectedMessage) {
|
|
|
|
|
public function testSet($configNames, $newValue, $existingData, $expectedValue) {
|
|
|
|
|
$this->systemConfig->expects($this->once())
|
|
|
|
|
->method('getKeys')
|
|
|
|
|
->willReturn($configExists ? [$configName] : []);
|
|
|
|
|
->method('setValue')
|
|
|
|
|
->with($configNames[0], $expectedValue);
|
|
|
|
|
$this->systemConfig->method('getValue')
|
|
|
|
|
->with($configNames[0])
|
|
|
|
|
->willReturn($existingData);
|
|
|
|
|
|
|
|
|
|
if ($updated) {
|
|
|
|
|
$this->systemConfig->expects($this->once())
|
|
|
|
|
->method('setValue')
|
|
|
|
|
->with($configName, $newValue);
|
|
|
|
|
}
|
|
|
|
|
$this->consoleInput->expects($this->once())
|
|
|
|
|
->method('getArgument')
|
|
|
|
|
->with('name')
|
|
|
|
|
->willReturn($configNames);
|
|
|
|
|
$this->consoleInput->method('getOption')
|
|
|
|
|
->will($this->returnValueMap([
|
|
|
|
|
['value', $newValue],
|
|
|
|
|
['type', 'string'],
|
|
|
|
|
]));
|
|
|
|
|
|
|
|
|
|
$this->invokePrivate($this->command, 'execute', [$this->consoleInput, $this->consoleOutput]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function setUpdateOnlyProvider() {
|
|
|
|
|
return [
|
|
|
|
|
[['name'], null],
|
|
|
|
|
[['a', 'b', 'c'], null],
|
|
|
|
|
[['a', 'b', 'c'], ['b' => 'foobar']],
|
|
|
|
|
[['a', 'b', 'c'], ['b' => ['d' => 'foobar']]],
|
|
|
|
|
];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @dataProvider setUpdateOnlyProvider
|
|
|
|
|
* @expectedException \UnexpectedValueException
|
|
|
|
|
*/
|
|
|
|
|
public function testSetUpdateOnly($configNames, $existingData) {
|
|
|
|
|
$this->systemConfig->expects($this->never())
|
|
|
|
|
->method('setValue');
|
|
|
|
|
$this->systemConfig->method('getValue')
|
|
|
|
|
->with($configNames[0])
|
|
|
|
|
->willReturn($existingData);
|
|
|
|
|
$this->systemConfig->method('getKeys')
|
|
|
|
|
->willReturn($existingData ? $configNames[0] : []);
|
|
|
|
|
|
|
|
|
|
$this->consoleInput->expects($this->once())
|
|
|
|
|
->method('getArgument')
|
|
|
|
|
->with('name')
|
|
|
|
|
->willReturn($configName);
|
|
|
|
|
$this->consoleInput->expects($this->any())
|
|
|
|
|
->method('getOption')
|
|
|
|
|
->with('value')
|
|
|
|
|
->willReturn($newValue);
|
|
|
|
|
$this->consoleInput->expects($this->any())
|
|
|
|
|
->method('hasParameterOption')
|
|
|
|
|
->with('--update-only')
|
|
|
|
|
->willReturn($updateOnly);
|
|
|
|
|
|
|
|
|
|
$this->consoleOutput->expects($this->any())
|
|
|
|
|
->method('writeln')
|
|
|
|
|
->with($this->stringContains($expectedMessage));
|
|
|
|
|
->willReturn($configNames);
|
|
|
|
|
$this->consoleInput->method('getOption')
|
|
|
|
|
->will($this->returnValueMap([
|
|
|
|
|
['value', 'foobar'],
|
|
|
|
|
['type', 'string'],
|
|
|
|
|
['update-only', true],
|
|
|
|
|
]));
|
|
|
|
|
|
|
|
|
|
$this->invokePrivate($this->command, 'execute', [$this->consoleInput, $this->consoleOutput]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function castValueProvider() {
|
|
|
|
|
return [
|
|
|
|
|
[null, 'string', ['value' => '', 'readable-value' => 'empty string']],
|
|
|
|
|
|
|
|
|
|
['abc', 'string', ['value' => 'abc', 'readable-value' => 'string abc']],
|
|
|
|
|
|
|
|
|
|
['123', 'integer', ['value' => 123, 'readable-value' => 'integer 123']],
|
|
|
|
|
['456', 'int', ['value' => 456, 'readable-value' => 'integer 456']],
|
|
|
|
|
|
|
|
|
|
['2.25', 'double', ['value' => 2.25, 'readable-value' => 'double 2.25']],
|
|
|
|
|
['0.5', 'float', ['value' => 0.5, 'readable-value' => 'double 0.5']],
|
|
|
|
|
|
|
|
|
|
['', 'null', ['value' => null, 'readable-value' => 'null']],
|
|
|
|
|
|
|
|
|
|
['true', 'boolean', ['value' => true, 'readable-value' => 'boolean true']],
|
|
|
|
|
['false', 'bool', ['value' => false, 'readable-value' => 'boolean false']],
|
|
|
|
|
];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @dataProvider castValueProvider
|
|
|
|
|
*/
|
|
|
|
|
public function testCastValue($value, $type, $expectedValue) {
|
|
|
|
|
$this->assertSame($expectedValue,
|
|
|
|
|
$this->invokePrivate($this->command, 'castValue', [$value, $type])
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function castValueInvalidProvider() {
|
|
|
|
|
return [
|
|
|
|
|
['123', 'foobar'],
|
|
|
|
|
|
|
|
|
|
[null, 'integer'],
|
|
|
|
|
['abc', 'integer'],
|
|
|
|
|
['76ggg', 'double'],
|
|
|
|
|
['true', 'float'],
|
|
|
|
|
['foobar', 'boolean'],
|
|
|
|
|
];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @dataProvider castValueInvalidProvider
|
|
|
|
|
* @expectedException \InvalidArgumentException
|
|
|
|
|
*/
|
|
|
|
|
public function testCastValueInvalid($value, $type) {
|
|
|
|
|
$this->invokePrivate($this->command, 'castValue', [$value, $type]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|