Phase 4 cleanup: migrate old tests to PHPUnit, add ErrorHandler/PureLogic/SearchController tests, remove app/tests/, update justfile test target

This commit is contained in:
Pontoporeia
2026-05-20 01:55:58 +02:00
parent 93625d09b5
commit a047062d87
17 changed files with 475 additions and 2078 deletions

View File

@@ -0,0 +1,52 @@
<?php
use PHPUnit\Framework\TestCase;
/**
* SearchControllerTest — Regression test for SearchController::handleSearch()
* always returning a 'coverMap' key.
*/
class SearchControllerTest extends TestCase
{
protected function setUp(): void
{
TestDatabase::resetData();
TestDatabase::seedBasicThesis('Test Thesis', 'Author', 2024);
// Set up GET for SearchController (it reads from $_GET)
$_GET = ['query' => ''];
}
protected function tearDown(): void
{
$_GET = [];
}
public function testHandleSearchReturnsCoverMapKey(): void
{
$db = TestDatabase::getInstance();
$rateLimit = new RateLimit(1000, 60, sys_get_temp_dir() . '/xamxam_rl_test_' . uniqid());
$searchCtrl = new SearchController($db, $rateLimit);
$vars = $searchCtrl->handleSearch();
$this->assertArrayHasKey('coverMap', $vars);
$this->assertIsArray($vars['coverMap']);
}
public function testCoverMapContainsKnownThesis(): void
{
$pdo = TestDatabase::getPDO();
$thesisId = $pdo->query('SELECT id FROM theses LIMIT 1')->fetchColumn();
$db = TestDatabase::getInstance();
$rateLimit = new RateLimit(1000, 60, sys_get_temp_dir() . '/xamxam_rl_test2_' . uniqid());
$searchCtrl = new SearchController($db, $rateLimit);
$vars = $searchCtrl->handleSearch();
if (!empty($vars['results'])) {
$this->assertArrayHasKey((int)$thesisId, $vars['coverMap']);
}
}
}