/** * Tests for environment detection methods * * The tests cover getEnvironment(), isProduction(), isDevelopment() and * isTest() with all relevant values for the APPLICATION_ENV environment * variable. */ public function testEnvironment() { // Assume that the tests have been invoked with APPLICATION_ENV set to // "test". Otherwise the tests might be incomplete. $this->assertEquals('test', getenv('APPLICATION_ENV')); $this->assertEquals('test', Application::getEnvironment()); $this->assertFalse(Application::isProduction()); $this->assertTrue(Application::isDevelopment()); $this->assertTrue(Application::isTest()); // Unset APPLICATION_ENV, equivalent to "production" putenv('APPLICATION_ENV'); $this->assertEquals('production', Application::getEnvironment()); $this->assertTrue(Application::isProduction()); $this->assertFalse(Application::isDevelopment()); $this->assertFalse(Application::isTest()); // Test "development" environment putenv('APPLICATION_ENV=development'); $this->assertEquals('development', Application::getEnvironment()); $this->assertFalse(Application::isProduction()); $this->assertTrue(Application::isDevelopment()); $this->assertFalse(Application::isTest()); // Test invalid environment. Ensure that the variable is reset to its // default in either case. putenv('APPLICATION_ENV=invalid'); try { Application::getEnvironment(); } catch (\DomainException $expected) { $invalidEnvironmmentDetected = true; } // Reset to default. putenv('APPLICATION_ENV=test'); if (!isset($invalidEnvironmmentDetected)) { $this->fail('Invalid environment was undetected.'); } }