magallanes/tests/MageApplicationTest.php

79 lines
2.9 KiB
PHP
Raw Normal View History

2017-01-04 05:14:36 +01:00
<?php
/*
* This file is part of the Magallanes package.
*
* (c) Andrés Montañez <andres@andresmontanez.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Mage\Tests;
use Mage\MageApplication;
use Mage\Runtime\Exception\RuntimeException;
2017-01-05 02:21:38 +01:00
use Symfony\Component\Console\Tester\ApplicationTester;
2017-01-04 05:14:36 +01:00
use Exception;
use PHPUnit_Framework_TestCase as TestCase;
class MageApplicationTest extends TestCase
{
public function testValidConfiguration()
{
2017-01-29 22:25:02 +01:00
$application = new MageApplication(__DIR__ . '/Resources/basic.yml');
2017-01-04 05:14:36 +01:00
$this->assertTrue($application instanceof MageApplication);
}
public function testInValidConfiguration()
{
try {
2017-01-29 22:25:02 +01:00
$application = new MageApplication(__DIR__ . '/Resources/invalid.yml');
2017-01-29 23:43:39 +01:00
$application->configure();
$this->assertTrue(false, 'Application did not throw exception.');
2017-01-04 05:14:36 +01:00
} catch (Exception $exception) {
$this->assertTrue($exception instanceof RuntimeException);
$this->assertEquals(sprintf('The file "%s" does not have a valid Magallanes configuration.', __DIR__ . '/Resources/invalid.yml'), $exception->getMessage());
}
}
public function testParserError()
{
try {
2017-01-29 22:25:02 +01:00
$application = new MageApplication(__DIR__ . '/Resources/invalid-yaml.yml');
2017-01-29 23:43:39 +01:00
$application->configure();
$this->assertTrue(false, 'Application did not throw exception.');
} catch (Exception $exception) {
$this->assertTrue($exception instanceof RuntimeException);
$this->assertEquals(sprintf('Error parsing the file "%s".', __DIR__ . '/Resources/invalid-yaml.yml'), $exception->getMessage());
}
}
2017-01-05 02:21:38 +01:00
public function testInvalidFile()
2017-01-04 05:14:36 +01:00
{
try {
2017-01-29 22:25:02 +01:00
$application = new MageApplication(__DIR__ . '/Resources/this-does-not-exists.yml');
2017-01-29 23:43:39 +01:00
$application->configure();
$this->assertTrue(false, 'Application did not throw exception.');
2017-01-04 05:14:36 +01:00
} catch (Exception $exception) {
$this->assertTrue($exception instanceof RuntimeException);
$this->assertEquals(sprintf('The file "%s" does not exists or is not readable.', __DIR__ . '/Resources/this-does-not-exists.yml'), $exception->getMessage());
}
}
2017-01-05 02:21:38 +01:00
public function testAppDispatcher()
{
2017-01-29 22:25:02 +01:00
$application = new MageApplication(__DIR__ . '/Resources/basic.yml');
2017-01-05 02:21:38 +01:00
$application->setAutoExit(false);
$this->assertTrue($application instanceof MageApplication);
2017-01-05 02:26:32 +01:00
$application->register('foo')->setCode(function () {
2017-01-05 02:21:38 +01:00
throw new \RuntimeException('foo');
});
$tester = new ApplicationTester($application);
$tester->run(['command' => 'foo']);
$this->assertContains('Oops, exception thrown while running command foo', $tester->getDisplay());
}
2017-01-04 05:21:21 +01:00
}