+ public function test_event_page_include_parse()
+ {
+ /** @var Page $page */
+ /** @var Page $otherPage */
+ $page = $this->entities->page();
+ $otherPage = Page::query()->where('id', '!=', $page->id)->first();
+ $otherPage->html = '<p id="bkmrk-cool">This is a really cool section</p>';
+ $page->html = "<p>{{@{$otherPage->id}#bkmrk-cool}}</p>";
+ $page->save();
+ $otherPage->save();
+
+ $args = [];
+ $callback = function (...$eventArgs) use (&$args) {
+ $args = $eventArgs;
+
+ return '<strong>Big & content replace surprise!</strong>';
+ };
+
+ Theme::listen(ThemeEvents::PAGE_INCLUDE_PARSE, $callback);
+ $resp = $this->asEditor()->get($page->getUrl());
+ $this->withHtml($resp)->assertElementContains('.page-content strong', 'Big & content replace surprise!');
+
+ $this->assertCount(4, $args);
+ $this->assertEquals($otherPage->id . '#bkmrk-cool', $args[0]);
+ $this->assertEquals('This is a really cool section', $args[1]);
+ $this->assertTrue($args[2] instanceof Page);
+ $this->assertTrue($args[3] instanceof Page);
+ $this->assertEquals($page->id, $args[2]->id);
+ $this->assertEquals($otherPage->id, $args[3]->id);
+ }
+
+ public function test_event_routes_register_web_and_web_auth()
+ {
+ $functionsContent = <<<'END'
+<?php
+use BookStack\Theming\ThemeEvents;
+use BookStack\Facades\Theme;
+use Illuminate\Routing\Router;
+Theme::listen(ThemeEvents::ROUTES_REGISTER_WEB, function (Router $router) {
+ $router->get('/cat', fn () => 'cat')->name('say.cat');
+});
+Theme::listen(ThemeEvents::ROUTES_REGISTER_WEB_AUTH, function (Router $router) {
+ $router->get('/dog', fn () => 'dog')->name('say.dog');
+});
+END;
+
+ $this->usingThemeFolder(function () use ($functionsContent) {
+
+ $functionsFile = theme_path('functions.php');
+ file_put_contents($functionsFile, $functionsContent);
+
+ $app = $this->createApplication();
+ /** @var \Illuminate\Routing\Router $router */
+ $router = $app->get('router');
+
+ /** @var \Illuminate\Routing\Route $catRoute */
+ $catRoute = $router->getRoutes()->getRoutesByName()['say.cat'];
+ $this->assertEquals(['web'], $catRoute->middleware());
+
+ /** @var \Illuminate\Routing\Route $dogRoute */
+ $dogRoute = $router->getRoutes()->getRoutesByName()['say.dog'];
+ $this->assertEquals(['web', 'auth'], $dogRoute->middleware());
+ });
+ }
+