io = $this->getMockBuilder('Cake\Console\ConsoleIo') ->disableOriginalConstructor() ->getMock(); $this->Task = $this->getMockBuilder('Cake\Shell\Task\LoadTask') ->setMethods(['in', 'out', 'err', '_stop']) ->setConstructorArgs([$this->io]) ->getMock(); $this->app = APP . DS . 'Application.php'; $this->bootstrap = ROOT . DS . 'config' . DS . 'bootstrap.php'; $this->bootstrapCli = ROOT . DS . 'config' . DS . 'bootstrap_cli.php'; copy($this->bootstrap, $this->bootstrapCli); $bootstrap = new File($this->bootstrap, false); $this->originalBootstrapContent = $bootstrap->read(); $app = new File($this->app, false); $this->originalAppContent = $app->read(); } /** * tearDown method * * @return void */ public function tearDown() { parent::tearDown(); unset($this->shell); Plugin::unload(); $bootstrap = new File($this->bootstrap, false); $bootstrap->write($this->originalBootstrapContent); unlink($this->bootstrapCli); $app = new File($this->app, false); $app->write($this->originalAppContent); } /** * testLoad * * @return void */ public function testLoad() { $this->exec('plugin load --no_app --autoload TestPlugin'); $this->assertExitCode(Shell::CODE_SUCCESS); $contents = file_get_contents($this->bootstrap); $this->assertContains( "Plugin::load('TestPlugin', ['autoload' => true]);", $contents ); } /** * testLoadWithBootstrap * * @return void */ public function testLoadWithBootstrap() { $this->exec('plugin load --no_app --bootstrap --autoload TestPlugin'); $this->assertExitCode(Shell::CODE_SUCCESS); $contents = file_get_contents($this->bootstrap); $this->assertContains( "Plugin::load('TestPlugin', ['autoload' => true, 'bootstrap' => true]);", $contents ); } /** * Tests that loading with bootstrap_cli works. * * @return void */ public function testLoadBootstrapCli() { $this->exec('plugin load --no_app --cli TestPlugin'); $this->assertExitCode(Shell::CODE_SUCCESS); $contents = file_get_contents($this->bootstrapCli); $this->assertContains( "Plugin::load('TestPlugin');", $contents ); } /** * testLoadWithRoutes * * @return void */ public function testLoadWithRoutes() { $this->exec('plugin load --no_app --routes --autoload TestPlugin'); $this->assertExitCode(Shell::CODE_SUCCESS); $contents = file_get_contents($this->bootstrap); $this->assertContains( "Plugin::load('TestPlugin', ['autoload' => true, 'routes' => true]);", $contents ); } /** * test load no autoload * * @return void */ public function testLoadNoAutoload() { $this->exec('plugin load --no_app --routes TestPlugin'); $this->assertExitCode(Shell::CODE_SUCCESS); $contents = file_get_contents($this->bootstrap); $this->assertContains("Plugin::load('TestPlugin', ['routes' => true]);", $contents); } /** * testLoad * * @return void */ public function testLoadNothing() { $this->exec('plugin load --no_app TestPlugin'); $this->assertExitCode(Shell::CODE_SUCCESS); $contents = file_get_contents($this->bootstrap); $this->assertContains("Plugin::load('TestPlugin');", $contents); } }