From 0317683155a3966830f3972fde1562087f65cf94 Mon Sep 17 00:00:00 2001 From: Luc SANCHEZ <4697568+ColonelMoutarde@users.noreply.github.com> Date: Mon, 27 Mar 2023 00:36:21 +0200 Subject: Add test and type hinting (#5087) * - Add test and type hinting - pass PhpStan Level 9 * fix dump * fix style * fix visibility * fix style * add test * add test * add test * add test * add test * Simplify * cleaning after test * remove space * fix style * use specific log file for test * Remarque's from Alkarex * A few more details --------- Co-authored-by: Luc Co-authored-by: Alexandre Alapetite --- app/Models/Log.php | 15 ++++++++------ app/Models/LogDAO.php | 22 +++++++++++--------- lib/Minz/Session.php | 4 ++-- tests/app/Models/LogDAOTest.php | 45 +++++++++++++++++++++++++++++++++++++++++ tests/phpstan-next.txt | 1 - 5 files changed, 68 insertions(+), 19 deletions(-) create mode 100644 tests/app/Models/LogDAOTest.php diff --git a/app/Models/Log.php b/app/Models/Log.php index df2de72ac..72208513d 100644 --- a/app/Models/Log.php +++ b/app/Models/Log.php @@ -1,26 +1,29 @@ date; } - public function level() { + public function level(): string { return $this->level; } - public function info() { + public function info(): string { return $this->information; } - public function _date($date) { + public function _date(string $date): void { $this->date = $date; } - public function _level($level) { + public function _level(string $level): void { $this->level = $level; } - public function _info($information) { + public function _info(string $information): void { $this->information = $information; } } diff --git a/app/Models/LogDAO.php b/app/Models/LogDAO.php index 6e5bf171b..080af54ea 100644 --- a/app/Models/LogDAO.php +++ b/app/Models/LogDAO.php @@ -1,19 +1,21 @@ */ - public static function lines(): array { - $logs = array(); - $handle = @fopen(self::logPath(), 'r'); + public static function lines(?string $logFileName = null): array { + $logs = []; + $handle = @fopen(self::logPath($logFileName), 'r'); if ($handle) { while (($line = fgets($handle)) !== false) { if (preg_match('/^\[([^\[]+)\] \[([^\[]+)\] --- (.*)$/', $line, $matches)) { - $myLog = new FreshRSS_Log (); + $myLog = new FreshRSS_Log(); $myLog->_date($matches[1]); $myLog->_level($matches[2]); $myLog->_info($matches[3]); @@ -25,8 +27,8 @@ class FreshRSS_LogDAO { return array_reverse($logs); } - public static function truncate(): void { - file_put_contents(self::logPath(), ''); + public static function truncate(?string $logFileName = null): void { + file_put_contents(self::logPath($logFileName), ''); if (FreshRSS_Auth::hasAccess('admin')) { file_put_contents(ADMIN_LOG, ''); file_put_contents(API_LOG, ''); diff --git a/lib/Minz/Session.php b/lib/Minz/Session.php index 924e9f5f9..0ce6721e2 100644 --- a/lib/Minz/Session.php +++ b/lib/Minz/Session.php @@ -59,8 +59,8 @@ class Minz_Session { * @param string $p le paramètre à récupérer * @return mixed|false la valeur de la variable de session, false si n'existe pas */ - public static function param($p, $default = false) { - return isset($_SESSION[$p]) ? $_SESSION[$p] : $default; + public static function param(string $p, $default = false) { + return $_SESSION[$p] ?? $default; } diff --git a/tests/app/Models/LogDAOTest.php b/tests/app/Models/LogDAOTest.php new file mode 100644 index 000000000..18cad4968 --- /dev/null +++ b/tests/app/Models/LogDAOTest.php @@ -0,0 +1,45 @@ +logDAO = new FreshRSS_LogDAO(); + $this->logPath = FreshRSS_LogDAO::logPath(self::LOG_FILE_TEST); + + file_put_contents( + $this->logPath, + '[Wed, 08 Feb 2023 15:35:05 +0000] [notice] --- Migration 2019_12_22_FooBar: OK' + ); + } + + public function test_lines_is_array_and_truncate_function_work(): void { + $this->assertEquals(USERS_PATH . '/' . Minz_User::INTERNAL_USER . '/' . self::LOG_FILE_TEST, $this->logPath); + + $line = $this->logDAO::lines(self::LOG_FILE_TEST); + + $this->assertIsArray($line); + $this->assertCount(1, $line); + $this->assertInstanceOf(FreshRSS_Log::class, $line[0]); + $this->assertEquals('Wed, 08 Feb 2023 15:35:05 +0000', $line[0]->date()); + $this->assertEquals('notice', $line[0]->level()); + $this->assertEquals("Migration 2019_12_22_FooBar: OK", $line[0]->info()); + + $this->logDAO::truncate(self::LOG_FILE_TEST); + + $this->assertStringContainsString('', file_get_contents($this->logPath)); + } + + protected function tearDown(): void { + unlink($this->logPath); + } +} diff --git a/tests/phpstan-next.txt b/tests/phpstan-next.txt index 7f8d5e4e4..b936f3d39 100644 --- a/tests/phpstan-next.txt +++ b/tests/phpstan-next.txt @@ -31,7 +31,6 @@ ./app/Models/FeedDAOSQLite.php ./app/Models/FilterAction.php ./app/Models/FormAuth.php -./app/Models/Log.php ./app/Models/ReadingMode.php ./app/Models/Search.php ./app/Models/Share.php -- cgit v1.2.3