You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
148 lines
5.1 KiB
148 lines
5.1 KiB
<?php |
|
|
|
namespace clagiordano\weblibs\configmanager\tests; |
|
|
|
use clagiordano\weblibs\configmanager\ArrayConfigManager; |
|
use clagiordano\weblibs\configmanager\FileConverter; |
|
use clagiordano\weblibs\configmanager\YamlConfigManager; |
|
use PHPUnit\Framework\TestCase; |
|
|
|
/** |
|
* Class FileConverterTest |
|
* @package clagiordano\weblibs\configmanager\tests |
|
*/ |
|
class FileConverterTest extends TestCase |
|
{ |
|
/** |
|
* @return array |
|
*/ |
|
public function configDataProvider() |
|
{ |
|
return [ |
|
[ |
|
__DIR__ . '/../testsdata/sample_config_data.php', |
|
'\clagiordano\weblibs\configmanager\ArrayConfigManager', |
|
__DIR__ . '/../testsdata/sample_config_data.php.converted.yml', |
|
'\clagiordano\weblibs\configmanager\YamlConfigManager', |
|
], |
|
[ |
|
__DIR__ . '/../testsdata/sample_config_data.php', |
|
'\clagiordano\weblibs\configmanager\ArrayConfigManager', |
|
__DIR__ . '/../testsdata/sample_config_data.php.converted.json', |
|
'\clagiordano\weblibs\configmanager\JsonConfigManager', |
|
], |
|
[ |
|
__DIR__ . '/../testsdata/sample_config_data.yml', |
|
'\clagiordano\weblibs\configmanager\YamlConfigManager', |
|
__DIR__ . '/../testsdata/sample_config_data.yml.converted.json', |
|
'\clagiordano\weblibs\configmanager\JsonConfigManager', |
|
], |
|
[ |
|
__DIR__ . '/../testsdata/sample_config_data.yml', |
|
'\clagiordano\weblibs\configmanager\YamlConfigManager', |
|
__DIR__ . '/../testsdata/sample_config_data.yml.converted.php', |
|
'\clagiordano\weblibs\configmanager\ArrayConfigManager', |
|
], |
|
[ |
|
__DIR__ . '/../testsdata/sample_config_data.json', |
|
'\clagiordano\weblibs\configmanager\JsonConfigManager', |
|
__DIR__ . '/../testsdata/sample_config_data.json.converted.yml', |
|
'\clagiordano\weblibs\configmanager\YamlConfigManager', |
|
], |
|
[ |
|
__DIR__ . '/../testsdata/sample_config_data.json', |
|
'\clagiordano\weblibs\configmanager\JsonConfigManager', |
|
__DIR__ . '/../testsdata/sample_config_data.json.converted.php', |
|
'\clagiordano\weblibs\configmanager\ArrayConfigManager', |
|
], |
|
]; |
|
} |
|
|
|
/** |
|
* @test |
|
* @dataProvider configDataProvider |
|
* @param mixed $sourceConfig |
|
* @param mixed $sourceInstance |
|
* @param mixed $targetConfig |
|
* @param mixed $targetInstance |
|
*/ |
|
public function canConvertOneFormatToAnother($sourceConfig, $sourceInstance, $targetConfig, $targetInstance) |
|
{ |
|
if (file_exists($targetConfig)) { |
|
/** |
|
* Drop target file if already existing |
|
*/ |
|
unlink($targetConfig); |
|
} |
|
|
|
$source = new $sourceInstance($sourceConfig); |
|
self::assertInstanceOf($sourceInstance, $source); |
|
|
|
$target = new $targetInstance($targetConfig); |
|
self::assertInstanceOf($targetInstance, $target); |
|
|
|
$converted = FileConverter::convert($source, $target); |
|
self::assertInstanceOf($targetInstance, $converted); |
|
|
|
$converted = FileConverter::convertAndSave($source, $target); |
|
self::assertInstanceOf($targetInstance, $converted); |
|
|
|
self::assertFileExists($targetConfig); |
|
} |
|
|
|
/** |
|
* @test |
|
*/ |
|
public function canSuccessConversionOnInvalidSource() |
|
{ |
|
|
|
$source = new ArrayConfigManager(); |
|
$target = new YamlConfigManager(__DIR__ . '/../testsdata/sample_config_data.empty.converted.yml'); |
|
|
|
$converted = FileConverter::convert($source, $target); |
|
self::assertInstanceOf('\clagiordano\weblibs\configmanager\YamlConfigManager', $converted); |
|
|
|
self::assertSame($target, $converted); |
|
} |
|
|
|
/** |
|
* @test |
|
*/ |
|
public function canSuccessConversionAndSaveOnInvalidSource() |
|
{ |
|
|
|
$source = new ArrayConfigManager(); |
|
$target = new YamlConfigManager(__DIR__ . '/../testsdata/sample_config_data.empty.converted.yml'); |
|
|
|
$converted = FileConverter::convertAndSave($source, $target); |
|
self::assertInstanceOf('\clagiordano\weblibs\configmanager\YamlConfigManager', $converted); |
|
|
|
self::assertSame($target, $converted); |
|
} |
|
|
|
/** |
|
* @test |
|
*/ |
|
public function cannotFailConversionOnInvalidTarget() |
|
{ |
|
$source = new ArrayConfigManager(__DIR__ . '/../testsdata/sample_config_data.php'); |
|
$target = new YamlConfigManager(); |
|
|
|
$converted = FileConverter::convert($source, $target); |
|
self::assertInstanceOf('\clagiordano\weblibs\configmanager\YamlConfigManager', $converted); |
|
} |
|
|
|
/** |
|
* @test |
|
*/ |
|
public function canFailConversionAndSaveOnInvalidTarget() |
|
{ |
|
self::setExpectedException('\RuntimeException'); |
|
|
|
$source = new ArrayConfigManager(__DIR__ . '/../testsdata/sample_config_data.php'); |
|
$target = new YamlConfigManager(); |
|
|
|
$converted = FileConverter::convertAndSave($source, $target); |
|
self::assertInstanceOf('\clagiordano\weblibs\configmanager\YamlConfigManager', $converted); |
|
} |
|
}
|
|
|