Add bootstrapping for tests, add praise instead of warning in case of

attribution licenses
This commit is contained in:
2025-07-06 13:06:49 +02:00
parent a0621216ec
commit f66fd1d9a0
5 changed files with 142 additions and 17 deletions

View File

@ -7,22 +7,13 @@
declare(strict_types = 1);
use PHPUnit\Framework\TestCase;
define('TL_FILE_DIRS', [
__DIR__ . '/../../../l10n/musdb/',
__DIR__ . '/../../../l10n/quality-web/',
__DIR__ . '/../../importer/dependencies/MDAllowedValueSets/l18n/',
]);
require_once __DIR__ . '/../src/Checks/Plausi/MDPlausi.php';
require_once __DIR__ . '/../src/Checks/Plausi/MDEventCategory.php';
require_once __DIR__ . '/../src/Checks/Plausi/MDPlausiEventCategory.php';
require_once __DIR__ . '/../src/Checks/Plausi/MDPlausiEvent.php';
# require_once __DIR__ . '/../../MDTlLoader/src/MDTlLoader.php';
require_once __DIR__ . '/../../importer/dependencies/MDAllowedValueSets/src/MDRequirementsSet.php';
require_once __DIR__ . '/../../importer/dependencies/MDAllowedValueSets/src/MDValueSet.php';
require_once __DIR__ . '/../../importer/dependencies/MDAllowedValueSets/src/MDEventsSet.php';
require_once __DIR__ . '/../../importer/dependencies/MDTlLoader/src/MDTlLoader.php';
if (!defined('TL_FILE_DIRS')) {
define('TL_FILE_DIRS', [
__DIR__ . '/../../../l10n/musdb/',
__DIR__ . '/../../../l10n/quality-web/',
__DIR__ . '/../../importer/dependencies/MDAllowedValueSets/l18n/',
]);
}
/**
* Tests for plausi.

View File

@ -7,10 +7,79 @@
declare(strict_types = 1);
use PHPUnit\Framework\TestCase;
use PHPUnit\Framework\Attributes\DataProvider;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\Small;
/**
* Tests for PUQI.
*/
#[small]
#[CoversClass(\MDPuqi::class)]
final class MDPuqiTest extends TestCase {
/**
* Provider for licenses.
*
* @return Generator<array{0: string, 1: MDPuqiMessageStatus, 2: bool}>
*/
public static function licenseProvider():Generator {
yield 'Empty' => ['', MDPuqiMessageStatus::warning, false];
yield 'Open' => ['CC0', MDPuqiMessageStatus::praise, true];
yield 'Open Attr' => ['CC BY', MDPuqiMessageStatus::praise, true];
yield 'Closed' => ['RR-F', MDPuqiMessageStatus::warning, false];
}
/**
* Test for license.
*
* @param string $input Input string.
* @param MDPuqiMessageStatus $warningStatus Expected message status.
* @param boolean $positive Positive or negative result.
*
* @return void
*/
#[DataProvider('licenseProvider')]
public function testMetadataLicensesResultInExpectedAccessment(string $input, MDPuqiMessageStatus $warningStatus, bool $positive):void {
$tlLoader = new MDTlLoader("abc", "en");
$puqi = new MDPuqi($tlLoader);
$puqi->checkMetadataLicense($input);
$msgs = $puqi->getMessages();
self::assertEquals(1, count($msgs));
$msg = $msgs[0];
self::assertEquals($warningStatus, $msg->status);
$score = $puqi->getScore();
self::assertEquals($positive, $score > 0, "Expected score to be positive or negative, got the oppite result. Score is: " . $score);
}
/**
* Test for license.
*
* @param string $input Input string.
* @param MDPuqiMessageStatus $warningStatus Expected message status.
* @param boolean $positive Positive or negative result.
*
* @return void
*/
#[DataProvider('licenseProvider')]
public function testImageLicensesResultInExpectedAccessment(string $input, MDPuqiMessageStatus $warningStatus, bool $positive):void {
$tlLoader = new MDTlLoader("abc", "en");
$puqi = new MDPuqi($tlLoader);
$puqi->checkImageLicenses([['license' => $input, 'rightsholder' => 'Somebody']]);
$msgs = $puqi->getMessages();
self::assertEquals(1, count($msgs));
$msg = $msgs[0];
self::assertEquals($warningStatus, $msg->status);
$score = $puqi->getScore();
self::assertEquals($positive, $score > 0, "Expected score to be positive or negative, got the oppite result. Score is: " . $score);
}
}

48
tests/bootstrap.php Normal file
View File

@ -0,0 +1,48 @@
<?PHP
/**
* Bootstraps tests by running provideEnv and then resetting the error handler.
*/
declare(strict_types = 1);
define('TL_FILE_DIRS', [
__DIR__ . '/../../../l10n/musdb/',
__DIR__ . '/../../../l10n/quality-web/',
__DIR__ . '/../../importer/dependencies/MDAllowedValueSets/l18n/',
]);
/**
* Autoloader for musdb.
*
* @param string $className Name of the class to load.
*
* @return void
*/
\spl_autoload_register(function(string $className):void {
// Try using class map as defined through /scripts/buildClassMap.php
foreach ([
__DIR__ . '/../tests',
__DIR__ . '/../src',
__DIR__ . '/../src/Checks',
__DIR__ . '/../src/Checks/Puqi',
__DIR__ . '/../src/Checks/Plausi',
__DIR__ . '/../../importer/dependencies/MDAllowedValueSets/src',
__DIR__ . '/../../importer/dependencies/MDAllowedValueSets/exceptions',
__DIR__ . '/../../importer/dependencies/MDErrorReporter/src',
__DIR__ . '/../../importer/dependencies/MDErrorReporter/exceptions',
__DIR__ . '/../../importer/dependencies/MDTlLoader/src',
__DIR__ . '/../../importer/dependencies/MDTlLoader/exceptions',
] as $classDir) {
if (\file_exists("$classDir/$className.php")) {
include "$classDir/$className.php";
return;
}
}
});
restore_error_handler();
restore_exception_handler();