diff --git a/composer.json b/composer.json index 541702f..fbd5c02 100644 --- a/composer.json +++ b/composer.json @@ -18,7 +18,6 @@ "silverstripe/framework": "^4.0@dev" }, "require-dev": { - "hafriedlander/phockito": "dev-master", "silverstripe/versioned": "^1.0@dev" }, "extra": { @@ -28,11 +27,7 @@ }, "autoload": { "psr-4": { - "SilverStripe\\EnvironmentCheck\\": "src/" - } - }, - "autoload-dev": { - "psr-4": { + "SilverStripe\\EnvironmentCheck\\": "src/", "SilverStripe\\EnvironmentCheck\\Tests\\": "tests/" } } diff --git a/src/EnvironmentChecker.php b/src/EnvironmentChecker.php index 38bd042..204dd32 100644 --- a/src/EnvironmentChecker.php +++ b/src/EnvironmentChecker.php @@ -193,10 +193,10 @@ class EnvironmentChecker extends RequestHandler 'ErrorCode' => $this->errorCode, ])->renderWith(__CLASS__); - if ($this->config()->email_results && !$result->ShouldPass()) { + if ($this->config()->get('email_results') && !$result->ShouldPass()) { $email = new Email( - $this->config()->from_email_address, - $this->config()->to_email_address, + $this->config()->get('from_email_address'), + $this->config()->get('to_email_address'), $this->title, $resultText ); @@ -205,15 +205,15 @@ class EnvironmentChecker extends RequestHandler // Optionally log errors and warnings individually foreach ($result->Details() as $detail) { - if ($this->config()->log_results_warning && $detail->StatusCode == EnvironmentCheck::WARNING) { + if ($this->config()->get('log_results_warning') && $detail->StatusCode == EnvironmentCheck::WARNING) { $this->log( sprintf('EnvironmentChecker warning at "%s" check. Message: %s', $detail->Check, $detail->Message), - $this->config()->log_results_warning_level + $this->config()->get('log_results_warning_level') ); - } elseif ($this->config()->log_results_error && $detail->StatusCode == EnvironmentCheck::ERROR) { + } elseif ($this->config()->get('log_results_error') && $detail->StatusCode == EnvironmentCheck::ERROR) { $this->log( sprintf('EnvironmentChecker error at "%s" check. Message: %s', $detail->Check, $detail->Message), - $this->config()->log_results_error_level + $this->config()->get('log_results_error_level') ); } } @@ -260,7 +260,7 @@ class EnvironmentChecker extends RequestHandler public static function set_from_email_address($from) { Deprecation::notice('2.0', 'Use config API instead'); - Config::modify()->set(__CLASS__, 'from_email_address', $from); + static::config()->set('from_email_address', $from); } /** @@ -270,7 +270,7 @@ class EnvironmentChecker extends RequestHandler public static function get_from_email_address() { Deprecation::notice('2.0', 'Use config API instead'); - return Config::inst()->get(__CLASS__, 'from_email_address'); + return static::config()->get('from_email_address'); } /** @@ -280,7 +280,7 @@ class EnvironmentChecker extends RequestHandler public static function set_to_email_address($to) { Deprecation::notice('2.0', 'Use config API instead'); - Config::modify()->set(__CLASS__, 'to_email_address', $to); + static::config()->set('to_email_address', $to); } /** @@ -290,7 +290,7 @@ class EnvironmentChecker extends RequestHandler public static function get_to_email_address() { Deprecation::notice('2.0', 'Use config API instead'); - return Config::inst()->get(__CLASS__, 'to_email_address'); + return static::config()->get('to_email_address'); } /** @@ -300,7 +300,7 @@ class EnvironmentChecker extends RequestHandler public static function set_email_results($results) { Deprecation::notice('2.0', 'Use config API instead'); - Config::modify()->set(__CLASS__, 'email_results', $results); + static::config()->set('email_results', $results); } /** @@ -310,6 +310,6 @@ class EnvironmentChecker extends RequestHandler public static function get_email_results() { Deprecation::notice('2.0', 'Use config API instead'); - return Config::inst()->get(__CLASS__, 'email_results'); + return static::config()->get('email_results'); } } diff --git a/tests/EnvironmentCheckerTest.php b/tests/EnvironmentCheckerTest.php index f03110e..77b21db 100644 --- a/tests/EnvironmentCheckerTest.php +++ b/tests/EnvironmentCheckerTest.php @@ -2,13 +2,12 @@ namespace SilverStripe\EnvironmentCheck\Tests; -use Phockito; +use Monolog\Logger; use Psr\Log\LoggerInterface; +use Psr\Log\LogLevel; use SilverStripe\Core\Config\Config; use SilverStripe\Core\Injector\Injector; use SilverStripe\Dev\SapphireTest; -use SilverStripe\Dev\TestOnly; -use SilverStripe\EnvironmentCheck\EnvironmentCheck; use SilverStripe\EnvironmentCheck\EnvironmentChecker; use SilverStripe\EnvironmentCheck\EnvironmentCheckSuite; @@ -19,43 +18,11 @@ use SilverStripe\EnvironmentCheck\EnvironmentCheckSuite; */ class EnvironmentCheckerTest extends SapphireTest { - /** - * {@inheritDoc} - * @var bool - */ protected $usesDatabase = true; - /** - * {@inheritDoc} - */ - public static function setUpBeforeClass() + protected function tearDown() { - parent::setUpBeforeClass(); - - Phockito::include_hamcrest(); - - $logger = Injector::inst()->get(LoggerInterface::class); - if ($logger instanceof \Monolog\Logger) { - // It logs to stderr by default - disable - $logger->pushHandler(new \Monolog\Handler\NullHandler); - } - } - - /** - * {@inheritDoc} - */ - public function setUp() - { - parent::setUp(); - Config::nest(); - } - - /** - * {@inheritDoc} - */ - public function tearDown() - { - Config::unnest(); + EnvironmentCheckSuite::reset(); parent::tearDown(); } @@ -63,75 +30,68 @@ class EnvironmentCheckerTest extends SapphireTest { Config::modify()->set(EnvironmentChecker::class, 'log_results_warning', true); Config::modify()->set(EnvironmentChecker::class, 'log_results_error', true); - EnvironmentCheckSuite::register('test suite', new EnvironmentCheckerTest_CheckNoErrors()); - $checker = Phockito::spy( - EnvironmentChecker::class, - 'test suite', - 'test' - ); - $response = $checker->index(); - Phockito::verify($checker, 0)->log(\anything(), \anything()); - EnvironmentCheckSuite::reset(); + EnvironmentCheckSuite::register('test suite', new EnvironmentCheckerTest\CheckNoErrors()); + + $logger = $this->getMockBuilder(Logger::class) + ->disableOriginalConstructor() + ->setMethods(['log']) + ->getMock(); + + $logger->expects($this->never())->method('log'); + + Injector::inst()->registerService($logger, LoggerInterface::class); + + (new EnvironmentChecker('test suite', 'test'))->index(); } public function testLogsWithWarnings() { Config::modify()->set(EnvironmentChecker::class, 'log_results_warning', true); Config::modify()->set(EnvironmentChecker::class, 'log_results_error', false); - EnvironmentCheckSuite::register('test suite', new EnvironmentCheckerTest_CheckWarnings()); - EnvironmentCheckSuite::register('test suite', new EnvironmentCheckerTest_CheckErrors()); - $checker = Phockito::spy( - EnvironmentChecker::class, - 'test suite', - 'test' - ); - $response = $checker->index(); - Phockito::verify($checker, 1)->log(containsString('warning'), \anything()); - Phockito::verify($checker, 0)->log(containsString('error'), \anything()); - EnvironmentCheckSuite::reset(); + EnvironmentCheckSuite::register('test suite', new EnvironmentCheckerTest\CheckWarnings()); + EnvironmentCheckSuite::register('test suite', new EnvironmentCheckerTest\CheckErrors()); + + $logger = $this->getMockBuilder(Logger::class) + ->disableOriginalConstructor() + ->setMethods(['log']) + ->getMock(); + + $logger->expects($this->once()) + ->method('log') + ->withConsecutive( + $this->equalTo(LogLevel::WARNING), + $this->anything() + ); + + Injector::inst()->registerService($logger, LoggerInterface::class); + + (new EnvironmentChecker('test suite', 'test'))->index(); } public function testLogsWithErrors() { Config::modify()->set(EnvironmentChecker::class, 'log_results_error', false); Config::modify()->set(EnvironmentChecker::class, 'log_results_error', true); - EnvironmentCheckSuite::register('test suite', new EnvironmentCheckerTest_CheckWarnings()); - EnvironmentCheckSuite::register('test suite', new EnvironmentCheckerTest_CheckErrors()); - $checker = Phockito::spy( - EnvironmentChecker::class, - 'test suite', - 'test' - ); - $response = $checker->index(); - Phockito::verify($checker, 0)->log(containsString('warning'), \anything()); - Phockito::verify($checker, 1)->log(containsString('error'), \anything()); - EnvironmentCheckSuite::reset(); - } -} - -class EnvironmentCheckerTest_CheckNoErrors implements EnvironmentCheck, TestOnly -{ - public function check() - { - return [EnvironmentCheck::OK, '']; - } -} - -class EnvironmentCheckerTest_CheckWarnings implements EnvironmentCheck, TestOnly -{ - public function check() - { - return [EnvironmentCheck::WARNING, 'test warning']; - } -} - -class EnvironmentCheckerTest_CheckErrors implements EnvironmentCheck, TestOnly -{ - public function check() - { - return [EnvironmentCheck::ERROR, 'test error']; + EnvironmentCheckSuite::register('test suite', new EnvironmentCheckerTest\CheckWarnings()); + EnvironmentCheckSuite::register('test suite', new EnvironmentCheckerTest\CheckErrors()); + + $logger = $this->getMockBuilder(Logger::class) + ->disableOriginalConstructor() + ->setMethods(['log']) + ->getMock(); + + $logger->expects($this->once()) + ->method('log') + ->withConsecutive( + [$this->equalTo(LogLevel::ALERT), $this->anything()], + [$this->equalTo(LogLevel::WARNING), $this->anything()] + ); + + Injector::inst()->registerService($logger, LoggerInterface::class); + + (new EnvironmentChecker('test suite', 'test'))->index(); } } diff --git a/tests/EnvironmentCheckerTest/CheckErrors.php b/tests/EnvironmentCheckerTest/CheckErrors.php new file mode 100644 index 0000000..a646110 --- /dev/null +++ b/tests/EnvironmentCheckerTest/CheckErrors.php @@ -0,0 +1,14 @@ +