2017-01-04 01:14:36 -03: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-04 22:21:38 -03:00
use Symfony\Component\Console\Tester\ApplicationTester ;
2017-01-04 01:14:36 -03:00
use Exception ;
use PHPUnit_Framework_TestCase as TestCase ;
class MageApplicationTest extends TestCase
{
public function testValidConfiguration ()
{
2017-01-29 18:25:02 -03:00
$application = new MageApplication ( __DIR__ . '/Resources/basic.yml' );
2017-01-04 01:14:36 -03:00
$this -> assertTrue ( $application instanceof MageApplication );
}
public function testInValidConfiguration ()
{
try {
2017-01-29 18:25:02 -03:00
$application = new MageApplication ( __DIR__ . '/Resources/invalid.yml' );
2017-01-29 19:43:39 -03:00
$application -> configure ();
$this -> assertTrue ( false , 'Application did not throw exception.' );
2017-01-04 01:14:36 -03: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 ());
}
}
2017-01-07 19:08:25 -03:00
public function testParserError ()
{
try {
2017-01-29 18:25:02 -03:00
$application = new MageApplication ( __DIR__ . '/Resources/invalid-yaml.yml' );
2017-01-29 19:43:39 -03:00
$application -> configure ();
$this -> assertTrue ( false , 'Application did not throw exception.' );
2017-01-07 19:08:25 -03:00
} 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-04 22:21:38 -03:00
public function testInvalidFile ()
2017-01-04 01:14:36 -03:00
{
try {
2017-01-29 18:25:02 -03:00
$application = new MageApplication ( __DIR__ . '/Resources/this-does-not-exists.yml' );
2017-01-29 19:43:39 -03:00
$application -> configure ();
$this -> assertTrue ( false , 'Application did not throw exception.' );
2017-01-04 01:14:36 -03: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-04 22:21:38 -03:00
public function testAppDispatcher ()
{
2017-01-29 18:25:02 -03:00
$application = new MageApplication ( __DIR__ . '/Resources/basic.yml' );
2017-01-04 22:21:38 -03:00
$application -> setAutoExit ( false );
$this -> assertTrue ( $application instanceof MageApplication );
2017-01-04 22:26:32 -03:00
$application -> register ( 'foo' ) -> setCode ( function () {
2017-01-04 22:21:38 -03: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 01:21:21 -03:00
}