'Link A', 'link' => '/to/a', 'icon' => 'fa-book', ]); $this->actAs('normal') ->get('/user') ->assertSee('Link A') ->assertSee('/to/a') ->assertSee('fa-book'); // Out of bound Hook::addMenuItem('user', 10, [ 'title' => 'Link B', 'link' => '/to/b', 'icon' => 'fa-book', ]); $this->actAs('normal') ->get('/user') ->assertSee('Link B') ->assertSee('/to/b'); } public function testAddRoute() { Hook::addRoute(function ($route) { $route->any('/test-hook', function () {}); }); event(new \App\Events\ConfigureRoutes(resolve(\Illuminate\Routing\Router::class))); $this->get('/test-hook')->assertSuccessful(); } public function testRegisterPluginTransScripts() { $this->generateFakePlugin(['name' => 'fake-plugin-with-i18n', 'version' => '0.0.1']); @mkdir($path = config('plugins.directory').DIRECTORY_SEPARATOR.'fake-plugin-with-i18n/lang/en', 0755, true); file_put_contents("$path/locale.js", ''); Hook::registerPluginTransScripts('fake-plugin-with-i18n', ['/']); $this->get('/')->assertSee('fake-plugin-with-i18n/lang/en/locale.js'); $this->get('/skinlib')->assertDontSee('fake-plugin-with-i18n/lang/en/locale.js'); File::deleteDirectory(config('plugins.directory').DIRECTORY_SEPARATOR.'fake-plugin-with-i18n'); } public function testAddStyleFileToPage() { Hook::addStyleFileToPage('/style/all'); $this->get('/') ->assertSee(''); Hook::addStyleFileToPage('/style/pattern', ['skinlib']); $this->get('/') ->assertDontSee(''); $this->get('/skinlib') ->assertSee(''); } public function testAddScriptFileToPage() { Hook::addScriptFileToPage('/script/all'); $this->get('/') ->assertSee(''); Hook::addScriptFileToPage('/script/pattern', ['skinlib']); $this->get('/') ->assertDontSee(''); $this->get('/skinlib') ->assertSee(''); } }