Add tests for set/get/delete/list

This commit is contained in:
Joas Schilling 2016-06-14 11:31:32 +02:00
parent f574a9d44f
commit dcacdde1ea
No known key found for this signature in database
GPG Key ID: E166FD8976B3BAC8
2 changed files with 241 additions and 14 deletions

View File

@ -175,6 +175,7 @@ class Setting extends Base {
}
$this->config->setUserValue($uid, $app, $key, $input->getOption('value'));
return 0;
} else if ($input->hasParameterOption('--delete')) {
if ($input->hasParameterOption('--error-if-not-exists') && $value === null) {
@ -183,28 +184,25 @@ class Setting extends Base {
}
$this->config->deleteUserValue($uid, $app, $key);
return 0;
} else if ($value !== null) {
$output->writeln($value);
return 0;
} else {
if ($input->hasParameterOption('--default-value')) {
$output->writeln($input->getOption('default-value'));
return 0;
} else {
$output->writeln('<error>The setting does not exist for user "' . $uid . '".</error>');
return 1;
}
}
} else {
$this->listUserSettings($input, $output, $uid, $app);
$settings = $this->getUserSettings($uid, $app);
$this->writeArrayInOutputFormat($input, $output, $settings);
return 0;
}
return 0;
}
protected function listUserSettings(InputInterface $input, OutputInterface $output, $uid, $app) {
$settings = $this->getUserSettings($uid, $app);
$this->writeArrayInOutputFormat($input, $output, $settings);
}
protected function getUserSettings($uid, $app) {

View File

@ -190,11 +190,11 @@ class SettingTest extends TestCase {
/**
* @dataProvider dataCheckInput
*
* @param $arguments
* @param $options
* @param $parameterOptions
* @param $user
* @param $expectedException
* @param array $arguments
* @param array $options
* @param array $parameterOptions
* @param mixed $user
* @param string $expectedException
*/
public function testCheckInput($arguments, $options, $parameterOptions, $user, $expectedException) {
$this->consoleInput->expects($this->any())
@ -234,4 +234,233 @@ class SettingTest extends TestCase {
$this->assertEquals(1, $this->invokePrivate($command, 'execute', [$this->consoleInput, $this->consoleOutput]));
}
public function dataExecuteDelete() {
return [
['config', false, null, 0],
['config', true, null, 0],
[null, false, null, 0],
[null, true, '<error>The setting does not exist for user "username".</error>', 1],
];
}
/**
* @dataProvider dataExecuteDelete
*
* @param string|null $value
* @param bool $errorIfNotExists
* @param string $expectedLine
* @param int $expectedReturn
*/
public function testExecuteDelete($value, $errorIfNotExists, $expectedLine, $expectedReturn) {
$command = $this->getCommand([
'writeArrayInOutputFormat',
'checkInput',
'getUserSettings',
]);
$this->consoleInput->expects($this->any())
->method('getArgument')
->willReturnMap([
['uid', 'username'],
['app', 'appname'],
['key', 'configkey'],
]);
$command->expects($this->once())
->method('checkInput');
$this->config->expects($this->once())
->method('getUserValue')
->with('username', 'appname', 'configkey', null)
->willReturn($value);
$this->consoleInput->expects($this->atLeastOnce())
->method('hasParameterOption')
->willReturnMap([
['--delete', true],
['--error-if-not-exists', $errorIfNotExists],
]);
if ($expectedLine === null) {
$this->consoleOutput->expects($this->never())
->method('writeln');
$this->config->expects($this->once())
->method('deleteUserValue')
->with('username', 'appname', 'configkey');
} else {
$this->consoleOutput->expects($this->once())
->method('writeln')
->with($expectedLine);
$this->config->expects($this->never())
->method('deleteUserValue');
}
$this->assertEquals($expectedReturn, $this->invokePrivate($command, 'execute', [$this->consoleInput, $this->consoleOutput]));
}
public function dataExecuteSet() {
return [
['config', false, null, 0],
['config', true, null, 0],
[null, false, null, 0],
[null, true, '<error>The setting does not exist for user "username".</error>', 1],
];
}
/**
* @dataProvider dataExecuteSet
*
* @param string|null $value
* @param bool $updateOnly
* @param string $expectedLine
* @param int $expectedReturn
*/
public function testExecuteSet($value, $updateOnly, $expectedLine, $expectedReturn) {
$command = $this->getCommand([
'writeArrayInOutputFormat',
'checkInput',
'getUserSettings',
]);
$this->consoleInput->expects($this->any())
->method('getArgument')
->willReturnMap([
['uid', 'username'],
['app', 'appname'],
['key', 'configkey'],
]);
$command->expects($this->once())
->method('checkInput');
$this->config->expects($this->once())
->method('getUserValue')
->with('username', 'appname', 'configkey', null)
->willReturn($value);
$this->consoleInput->expects($this->atLeastOnce())
->method('hasParameterOption')
->willReturnMap([
['--value', true],
['--update-only', $updateOnly],
]);
if ($expectedLine === null) {
$this->consoleOutput->expects($this->never())
->method('writeln');
$this->consoleInput->expects($this->once())
->method('getOption')
->with('value')
->willReturn('setValue');
$this->config->expects($this->once())
->method('setUserValue')
->with('username', 'appname', 'configkey', 'setValue');
} else {
$this->consoleOutput->expects($this->once())
->method('writeln')
->with($expectedLine);
$this->config->expects($this->never())
->method('setUserValue');
}
$this->assertEquals($expectedReturn, $this->invokePrivate($command, 'execute', [$this->consoleInput, $this->consoleOutput]));
}
public function dataExecuteGet() {
return [
['config', null, 'config', 0],
[null, 'config', 'config', 0],
[null, null, '<error>The setting does not exist for user "username".</error>', 1],
];
}
/**
* @dataProvider dataExecuteGet
*
* @param string|null $value
* @param string|null $defaultValue
* @param string $expectedLine
* @param int $expectedReturn
*/
public function testExecuteGet($value, $defaultValue, $expectedLine, $expectedReturn) {
$command = $this->getCommand([
'writeArrayInOutputFormat',
'checkInput',
'getUserSettings',
]);
$this->consoleInput->expects($this->any())
->method('getArgument')
->willReturnMap([
['uid', 'username'],
['app', 'appname'],
['key', 'configkey'],
]);
$command->expects($this->once())
->method('checkInput');
$this->config->expects($this->once())
->method('getUserValue')
->with('username', 'appname', 'configkey', null)
->willReturn($value);
if ($value === null) {
if ($defaultValue === null) {
$this->consoleInput->expects($this->atLeastOnce())
->method('hasParameterOption')
->willReturnMap([
['--default-value', false],
]);
} else {
$this->consoleInput->expects($this->atLeastOnce())
->method('hasParameterOption')
->willReturnMap([
['--default-value', true],
]);
$this->consoleInput->expects($this->once())
->method('getOption')
->with('default-value')
->willReturn($defaultValue);
}
}
$this->consoleOutput->expects($this->once())
->method('writeln')
->with($expectedLine);
$this->assertEquals($expectedReturn, $this->invokePrivate($command, 'execute', [$this->consoleInput, $this->consoleOutput]));
}
public function testExecuteList() {
$command = $this->getCommand([
'writeArrayInOutputFormat',
'checkInput',
'getUserSettings',
]);
$this->consoleInput->expects($this->any())
->method('getArgument')
->willReturnMap([
['uid', 'username'],
['app', 'appname'],
['key', ''],
]);
$command->expects($this->once())
->method('checkInput');
$command->expects($this->once())
->method('getUserSettings')
->willReturn(['settings']);
$command->expects($this->once())
->method('writeArrayInOutputFormat')
->with($this->consoleInput, $this->consoleOutput, ['settings']);
$this->assertEquals(0, $this->invokePrivate($command, 'execute', [$this->consoleInput, $this->consoleOutput]));
}
}