CategoryDAOTest.php 1.4 KB

123456789101112131415161718192021222324252627282930313233
  1. <?php
  2. declare(strict_types=1);
  3. use PHPUnit\Framework\Attributes\DataProvider;
  4. final class CategoryDAOTest extends \PHPUnit\Framework\TestCase {
  5. #[DataProvider('provideLanguages')]
  6. public function test_searchByName_resolvesLocalisedDefaultCategory(string $language): void {
  7. $previousLanguage = Minz_Translate::language();
  8. Minz_Translate::init($language);
  9. try {
  10. $pdo = new Minz_PdoSqlite('sqlite::memory:');
  11. $pdo->exec('CREATE TABLE category (id INTEGER PRIMARY KEY, name TEXT, kind INTEGER DEFAULT 0)');
  12. $pdo->exec("INSERT INTO category (id, name) VALUES (1, 'Uncategorized'), (2, 'Архив с пробелами')");
  13. $dao = new FreshRSS_CategoryDAOSQLite(currentPdo: $pdo);
  14. $defaultCategory = $dao->searchById(FreshRSS_CategoryDAO::DEFAULTCATEGORYID);
  15. self::assertNotNull($defaultCategory);
  16. self::assertSame(FreshRSS_CategoryDAO::DEFAULTCATEGORYID, $dao->searchByName($defaultCategory->name())?->id());
  17. self::assertSame(FreshRSS_CategoryDAO::DEFAULTCATEGORYID, $dao->searchByName(FreshRSS_CategoryDAO::DEFAULT_CATEGORY_NAME)?->id());
  18. self::assertSame(2, $dao->searchByName('Архив с пробелами')?->id());
  19. self::assertNull($dao->searchByName('Missing category'));
  20. } finally {
  21. Minz_Translate::init($previousLanguage);
  22. }
  23. }
  24. /** @return list<array{string}> */
  25. public static function provideLanguages(): array {
  26. return [['en'], ['ru'], ['fr']];
  27. }
  28. }