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);
/**
* @return array<string,mixed>
*/
public static function dataPluginTypes(): array
'expected' => false,
'type' => 'library',
],
'ecrire' => [
'expected' => true,
'type' => 'spip-ecrire',
],
'prive' => [
'expected' => true,
'type' => 'spip-prive',
],
'plugin' => [
'expected' => true,
'type' => 'spip-plugin',
],
];
}
#[DataProvider('dataPluginTypes')]
public function testSupports(bool $expected, string $type): void
{
$package = new Package('spip/test', '1.0.0', '1.0.0.0');
$package->setType($type);
$this->assertEquals($expected, $this->installer->supports($package->getType()));
}
/**
* @return array<string,mixed>
*/
public static function dataPluginPaths(): array
{
return [
'library' => [
'expected' => dirname(__DIR__, 1) . '/vendor/spip/test',
'name' => 'spip/test',
'type' => 'library',
'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(string $expected, string $name, string $type): void
{
$package = new Package($name, '1.0.0', '1.0.0.0');
$package->setType($type);
$this->assertSame($expected, $this->installer->getInstallPath($package));
}
{
$this->expectException(InvalidArgumentException::class);
$package = new Package('spip/test', '1.0.0', '1.0.0.0');
$package->setType('spip-lang');
$this->installer->getInstallPath($package);
}