Acl\Test\TestCase\AclExtrasTestCase::testUpdateWithPlugins PHP Method

testUpdateWithPlugins() public method

Ensures that nested plugins are correctly created
public testUpdateWithPlugins ( ) : void
return void
    public function testUpdateWithPlugins()
    {
        Plugin::unload();
        Plugin::load('TestPlugin', ['routes' => true]);
        Plugin::load('Nested/TestPluginTwo');
        Plugin::routes();
        $this->_clean();
        $this->Task->expects($this->atLeast(3))->method('getControllerList')->will($this->returnCallback(function ($plugin, $prefix) {
            switch ($plugin) {
                case 'TestPlugin':
                    $return = ['PluginController.php'];
                    break;
                case 'Nested/TestPluginTwo':
                    if ($prefix !== null) {
                        $return = [];
                        break;
                    }
                    $return = ['PluginTwoController.php'];
                    break;
                default:
                    if ($prefix !== null) {
                        $return = ['PostsController.php', 'BigLongNamesController.php'];
                        break;
                    }
                    $return = ['CommentsController.php', 'PostsController.php', 'BigLongNamesController.php'];
            }
            return $return;
        }));
        $this->Task->startup();
        $this->Task->acoUpdate();
        $Aco = $this->Task->Acl->Aco;
        $result = $Aco->node('controllers/TestPlugin/Plugin');
        $this->assertNotFalse($result);
        $this->assertEquals($result->toArray()[0]['alias'], 'Plugin');
        $result = $Aco->node('controllers/TestPlugin/Admin/Plugin');
        $this->assertNotFalse($result);
        $this->assertEquals($result->toArray()[0]['alias'], 'Plugin');
        $result = $Aco->node('controllers/Nested\\TestPluginTwo/PluginTwo');
        $this->assertNotFalse($result);
        $result = $result->toArray();
        $this->assertEquals($result[0]['alias'], 'PluginTwo');
        $result = $Aco->find('children', ['for' => $result[0]['id']])->toArray();
        $this->assertEquals(count($result), 3);
        $this->assertEquals($result[0]['alias'], 'index');
        $this->assertEquals($result[1]['alias'], 'add');
        $this->assertEquals($result[2]['alias'], 'edit');
    }