logData = array( 'ip' => '(n-a)', 'date' => date('d.m.Y H:i:s'), 'func' => '(none)', 'version' => '(none)', 'error' => '' ); $this->dummyConfigFileQuiet = realpath(dirname(__FILE__) . '/../../../config/configuration.logger.quiet.php'); $this->dummyConfigFileNormal = realpath(dirname(__FILE__) . '/../../../config/configuration.logger.normal.php'); $this->dummyConfigFileVerbose = realpath(dirname(__FILE__) . '/../../../config/configuration.logger.verbose.php'); Configuration::setConfigFilePath($this->dummyConfigFileNormal, true); Logger::start(); } public function testClearEmptiesData() { Logger::start(); Logger::clear(); $this->assertEquals(empty(Logger::getData()), true); } public function testStartEmptyArrayInitializesDataDefaultKeys() { Logger::clear(); Logger::start(array()); $this->assertSame(array_diff_key(Logger::getData(), $this->logData), array()); } public function testStartWithSomeArrayInitializesDataDefaultKeysPlusPassedOnes() { $paramArray = array( 'someOtherInfo' => array(1,2,3), 1 => 'haha' ); Logger::clear(); Logger::start($paramArray); $expectedDataArray = $paramArray + $this->logData; $this->assertSame(array_diff_key(Logger::getData(),$expectedDataArray), array()); } public function testStartWithParamArrayOverwritesDataKeyValueIfExists() { $overwriteDefaultValue = array('overwriteDefault', 'z', 3); $paramArray = array('ip' => $overwriteDefaultValue); Logger::clear(); Logger::start($paramArray); $this->assertSame(Logger::getData()['ip'], $overwriteDefaultValue); } public function testInfoWithKeyParamOverwritesDataKeyValue() { $overwriteDefaultValue = array('overwriteDefault', 'z', 3); Logger::clear(); Logger::start(array()); Logger::info($overwriteDefaultValue, 'ip'); $this->assertSame(Logger::getData()['ip'], $overwriteDefaultValue); } public function testInfoWithoutKeyParamAndIntKeysGetRenumberedAndDontOverwrite() { $paramArray = array(0 => 'c', 1 => 'd'); Logger::clear(); Logger::start(array(0 => 'a', 1 => 'b')); Logger::info($paramArray); $this->assertSame( array_intersect(Logger::getData(), array('a', 'b', 'c', 'd')), array('a', 'b', 'c', 'd') ); } public function testLogDoesNotLogMessagesAccordingToVerbosityParamWhenSmallerThanConfig() { Configuration::setConfigFilePath($this->dummyConfigFileNormal, true); Logger::start(); Logger::log($this->arbitraryMessage, Logger::VERBOSE); Logger::stop(); $this->assertSame( strpos(Logger::getLastLogs(), $this->arbitraryMessage), false ); } public function testLogLogsMessagesWhenVerbosityParamIsGreaterThanConfigVerbosity() { Configuration::setConfigFilePath($this->dummyConfigFileVerbose, true); Logger::start(); Logger::log($this->arbitraryMessage, Logger::NORMAL); Logger::stop(); $this->assertNotSame( strpos(Logger::getLastLogs(), $this->arbitraryMessage), false ); } public function testStopSavesComputesElapsedTime() { Logger::clear(); Logger::start(); Logger::stop(); $this->assertEquals(array_key_exists('time', Logger::getData()), true); } public function testStopDoesNotLogAnythingWhenConfigVerbosityIsQuiet() { Configuration::setConfigFilePath($this->dummyConfigFileQuiet, true); $this->assertEquals(Configuration::get('log.verbosity'), Logger::QUIET); $this->assertEquals(Logger::stop(), Logger::NO_FILE_LOGGED); } public function testStopReturnsSavedLogFileWhenConfigVerbosityIsNotQuiet() { Configuration::setConfigFilePath($this->dummyConfigFileNormal, true); $this->assertNotEquals(Configuration::get('log.verbosity'), Logger::QUIET); Logger::start(); $stopReturn = Logger::stop(); $this->assertEquals(realpath($stopReturn), realpath(Configuration::get('log.file'))); } private function removeLogs() { $logsDir = realpath(dirname(Configuration::get('log.file'))); $files = glob("$logsDir/*"); foreach($files as $file){ if(is_file($file)) unlink($file); } } public function testStopSavesLogFileWhenConfigVerbosityIsNotQuiet() { $this->removeLogs(); Configuration::setConfigFilePath($this->dummyConfigFileNormal, true); $this->assertNotEquals(Configuration::get('log.verbosity'), Logger::QUIET); Logger::start(); Logger::stop(); $this->assertNotEquals(Logger::NO_LOG_YET_MSG, Logger::getLastLogs()); } public function testGetDataReturnsArray() { $this->assertEquals(is_array(Logger::getData()), true); } public function testGetLastLogsReturnsNoLogsWhenCallingItBeforeStopOnAnEmptyDir() { $this->removeLogs(); Configuration::setConfigFilePath($this->dummyConfigFileNormal, true); Logger::start(); Logger::log('Some message', Logger::NORMAL); $this->assertEquals(Logger::NO_LOG_YET_MSG, Logger::getLastLogs()); } }