From f66fd1d9a0ef5d28efaa067ff506c2869dda3f3b Mon Sep 17 00:00:00 2001 From: Joshua Ramon Enslin Date: Sun, 6 Jul 2025 13:06:49 +0200 Subject: [PATCH] Add bootstrapping for tests, add praise instead of warning in case of attribution licenses --- phpunit.xml | 17 ++++++++++ src/Checks/Puqi/MDPuqi.php | 2 +- tests/MDPlausiTest.php | 23 ++++--------- tests/MDPuqiTest.php | 69 ++++++++++++++++++++++++++++++++++++++ tests/bootstrap.php | 48 ++++++++++++++++++++++++++ 5 files changed, 142 insertions(+), 17 deletions(-) create mode 100644 phpunit.xml create mode 100644 tests/bootstrap.php diff --git a/phpunit.xml b/phpunit.xml new file mode 100644 index 0000000..02b8a66 --- /dev/null +++ b/phpunit.xml @@ -0,0 +1,17 @@ + + + + tests + + + + ./src + + + diff --git a/src/Checks/Puqi/MDPuqi.php b/src/Checks/Puqi/MDPuqi.php index ad671f4..eae97bc 100644 --- a/src/Checks/Puqi/MDPuqi.php +++ b/src/Checks/Puqi/MDPuqi.php @@ -894,7 +894,7 @@ final class MDPuqi { $this->_messages[] = new MDPuqiMessage( MDPuqiCheckSection::metadataLicense, - MDPuqiMessageStatus::warning, + MDPuqiMessageStatus::praise, $this->_tlLoader->tl("basis", "basis", "metadata") . ': ' . $this->_tlLoader->tl("quality", "quality", "open_access_licence_used"), self::QI_REWARD_METADATA_LICENCE_OPEN_ACCESS_ATTRIBUTION, ); diff --git a/tests/MDPlausiTest.php b/tests/MDPlausiTest.php index 0bf058f..bf6fd04 100644 --- a/tests/MDPlausiTest.php +++ b/tests/MDPlausiTest.php @@ -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. diff --git a/tests/MDPuqiTest.php b/tests/MDPuqiTest.php index a18c7b1..c4e0da0 100644 --- a/tests/MDPuqiTest.php +++ b/tests/MDPuqiTest.php @@ -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 + */ + 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); + + } } diff --git a/tests/bootstrap.php b/tests/bootstrap.php new file mode 100644 index 0000000..c7c9990 --- /dev/null +++ b/tests/bootstrap.php @@ -0,0 +1,48 @@ +