Newer
Older
namespace SpipLeague\Test\Composer;
use Composer;
use Composer\Package\Package;
use Composer\Package\RootPackage;
use InvalidArgumentException;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\DataProvider;
use SpipLeague\Composer\SpipInstaller;
use SpipLeague\Composer\SpipPaths;
class SpipInstallerTest extends TestCase
{
private SpipInstaller $installer;
protected function setUp(): void
{
$io = new Composer\IO\NullIO();
$composer = Composer\Factory::create($io);
$package = new RootPackage('spip/spip', '1.0', '1.0.0.0');
$package->setExtra([
'spip' => [
'template' => 'spip/default-template',
$this->installer = new SpipInstaller($io, $composer);
}
public static function dataPluginTypes()
{
return [
'library' => [
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
'expected' => false,
'type' => 'library',
],
'classic' => [
'expected' => true,
'type' => 'spip-classic',
],
'ecrire' => [
'expected' => true,
'type' => 'spip-ecrire',
],
'prive' => [
'expected' => true,
'type' => 'spip-prive',
],
'plugin' => [
'expected' => true,
'type' => 'spip-plugin',
],
];
}
#[DataProvider('dataPluginTypes')]
public function testSupports($expected, $type)
{
$package = new Package('spip/test', '1.0.0', '1.0.0.0');
$package->setType($type);
$this->assertEquals($expected, $this->installer->supports($package->getType()));
}
public static function dataPluginPaths()
{
return [
'library' => [
'expected' => dirname(__DIR__, 1) . '/vendor/spip/test',
'name' => 'spip/test',
'type' => 'library',
],
'classic' => [
'expected' => './tmp/__spip_classic__',
'name' => 'spip/test',
'type' => 'spip-classic',
],
'ecrire' => [
'name' => 'spip/test',
'type' => 'spip-ecrire',
],
'prive' => [
'name' => 'spip/test',
'type' => 'spip-prive',
],
'plugin' => [
'name' => 'spip/test',
'type' => 'spip-plugin',
],
'extension' => [
'expected' => './' . SpipPaths::EXTENSIONS . '/spip/mandatory',
'name' => 'spip/mandatory',
'type' => 'spip-plugin',
],
'template' => [
'name' => 'spip/default-template',
'type' => 'spip-plugin',
],
];
}
public function testGetInstallPath($expected, $name, $type)
{
$package = new Package($name, '1.0.0', '1.0.0.0');
$package->setType($type);
$this->assertSame($expected, $this->installer->getInstallPath($package));
}
public function testUnsupportedType()
{
$this->expectException(InvalidArgumentException::class);
$package = new Package('spip/test', '1.0.0', '1.0.0.0');
$package->setType('spip-lang');
$this->installer->getInstallPath($package);
}