86 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?PHP
 | |
| /**
 | |
|  * Tests for PUQI.
 | |
|  *
 | |
|  * @author Joshua Ramon Enslin <joshua@museum-digital.de>
 | |
|  */
 | |
| 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);
 | |
| 
 | |
|     }
 | |
| }
 |