tmpFile = tempnam(sys_get_temp_dir(), 'status_'); } protected function tearDown(): void { if (is_file($this->tmpFile)) { unlink($this->tmpFile); } } public function testReadsValidLines(): void { file_put_contents($this->tmpFile, "Server1 192.168.178.2 online 2026-07-27 10:00\nServer2 192.168.178.3 offline 2026-07-27 10:01\n"); $rows = (new LegacyStatusFileReader())->read($this->tmpFile); self::assertCount(2, $rows); self::assertSame('Server1', $rows[0]['id']); self::assertSame('ok', $rows[0]['status']); self::assertSame('192.168.178.2', $rows[0]['detail']); self::assertSame('2026-07-27 10:00', $rows[0]['last_check_at']); self::assertSame('error', $rows[1]['status']); } public function testSkipsMalformedLines(): void { file_put_contents($this->tmpFile, "incomplete line\nServer1 1.2.3.4 online 2026-07-27 10:00\n"); $rows = (new LegacyStatusFileReader())->read($this->tmpFile); self::assertCount(1, $rows); } public function testReturnsEmptyArrayForMissingFile(): void { self::assertSame([], (new LegacyStatusFileReader())->read('/does/not/exist.txt')); } }