|  |  |  | <?php
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace yiiunit\extensions\bootstrap;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | use yii\di\Container;
 | 
					
						
							|  |  |  | use yii\helpers\ArrayHelper;
 | 
					
						
							|  |  |  | use Yii;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /**
 | 
					
						
							|  |  |  |  * This is the base class for all yii framework unit tests.
 | 
					
						
							|  |  |  |  */
 | 
					
						
							|  |  |  | abstract class TestCase extends \PHPUnit\Framework\TestCase
 | 
					
						
							|  |  |  | {
 | 
					
						
							|  |  |  |     protected function setUp()
 | 
					
						
							|  |  |  |     {
 | 
					
						
							|  |  |  |         parent::setUp();
 | 
					
						
							|  |  |  |         $this->mockWebApplication();
 | 
					
						
							|  |  |  |     }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /**
 | 
					
						
							|  |  |  |      * Clean up after test.
 | 
					
						
							|  |  |  |      * By default the application created with [[mockApplication]] will be destroyed.
 | 
					
						
							|  |  |  |      */
 | 
					
						
							|  |  |  |     protected function tearDown()
 | 
					
						
							|  |  |  |     {
 | 
					
						
							|  |  |  |         parent::tearDown();
 | 
					
						
							|  |  |  |         $this->destroyApplication();
 | 
					
						
							|  |  |  |     }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /**
 | 
					
						
							|  |  |  |      * Populates Yii::$app with a new application
 | 
					
						
							|  |  |  |      * The application will be destroyed on tearDown() automatically.
 | 
					
						
							|  |  |  |      * @param array $config The application configuration, if needed
 | 
					
						
							|  |  |  |      * @param string $appClass name of the application class to create
 | 
					
						
							|  |  |  |      */
 | 
					
						
							|  |  |  |     protected function mockApplication($config = [], $appClass = '\yii\console\Application')
 | 
					
						
							|  |  |  |     {
 | 
					
						
							|  |  |  |         new $appClass(ArrayHelper::merge([
 | 
					
						
							|  |  |  |             'id' => 'testapp',
 | 
					
						
							|  |  |  |             'basePath' => __DIR__,
 | 
					
						
							|  |  |  |             'vendorPath' => dirname(__DIR__) . '/vendor',
 | 
					
						
							|  |  |  |         ], $config));
 | 
					
						
							|  |  |  |     }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     protected function mockWebApplication($config = [], $appClass = '\yii\web\Application')
 | 
					
						
							|  |  |  |     {
 | 
					
						
							|  |  |  |         new $appClass(ArrayHelper::merge([
 | 
					
						
							|  |  |  |             'id' => 'testapp',
 | 
					
						
							|  |  |  |             'basePath' => __DIR__,
 | 
					
						
							|  |  |  |             'vendorPath' => dirname(__DIR__) . '/vendor',
 | 
					
						
							|  |  |  |             'components' => [
 | 
					
						
							|  |  |  |                 'request' => [
 | 
					
						
							|  |  |  |                     'cookieValidationKey' => 'wefJDF8sfdsfSDefwqdxj9oq',
 | 
					
						
							|  |  |  |                     'scriptFile' => __DIR__ .'/index.php',
 | 
					
						
							|  |  |  |                     'scriptUrl' => '/index.php',
 | 
					
						
							|  |  |  |                 ],
 | 
					
						
							|  |  |  |             ]
 | 
					
						
							|  |  |  |         ], $config));
 | 
					
						
							|  |  |  |     }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /**
 | 
					
						
							|  |  |  |      * Destroys application in Yii::$app by setting it to null.
 | 
					
						
							|  |  |  |      */
 | 
					
						
							|  |  |  |     protected function destroyApplication()
 | 
					
						
							|  |  |  |     {
 | 
					
						
							|  |  |  |         Yii::$app = null;
 | 
					
						
							|  |  |  |         Yii::$container = new Container();
 | 
					
						
							|  |  |  |     }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /**
 | 
					
						
							|  |  |  |      * Asserting two strings equality ignoring line endings
 | 
					
						
							|  |  |  |      *
 | 
					
						
							|  |  |  |      * @param string $expected
 | 
					
						
							|  |  |  |      * @param string $actual
 | 
					
						
							|  |  |  |      */
 | 
					
						
							|  |  |  |     public function assertEqualsWithoutLE($expected, $actual)
 | 
					
						
							|  |  |  |     {
 | 
					
						
							|  |  |  |         $expected = str_replace("\r\n", "\n", $expected);
 | 
					
						
							|  |  |  |         $actual = str_replace("\r\n", "\n", $actual);
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $this->assertEquals($expected, $actual);
 | 
					
						
							|  |  |  |     }
 | 
					
						
							|  |  |  | }
 |