readProjectFile('templates/default.phtml'); $loginTemplate = $this->readProjectFile('templates/login.phtml'); $flashPartial = $this->readProjectFile('templates/partials/app-flash.phtml'); $topbarPartial = $this->readProjectFile('templates/partials/app-topbar.phtml'); $asideIconBar = $this->readProjectFile('templates/partials/app-main-aside-icon-bar.phtml'); $asidePartial = $this->readProjectFile('templates/partials/app-main-aside.phtml'); $bookmarkDialog = $this->readProjectFile('modules/bookmarks/templates/bookmark-dialogs.phtml'); $bookmarkPanelTemplate = $this->readProjectFile('modules/bookmarks/templates/aside-bookmarks-panel.phtml'); $sessionWarningDialog = $this->readProjectFile('templates/partials/app-session-warning-dialog.phtml'); $this->assertStringContainsString('id="page-config-app-components"', $defaultTemplate); $this->assertStringContainsString('id="page-config-login-components"', $loginTemplate); $this->assertStringNotContainsString("assetVersion('js/components/app-bookmark-init.js')", $defaultTemplate); $this->assertStringContainsString('data-app-component="flash-auto-dismiss"', $flashPartial); $this->assertStringContainsString('data-app-component="tenant-switcher"', $topbarPartial); $this->assertStringContainsString('data-app-component="theme-controls"', $topbarPartial); $this->assertStringContainsString('data-app-component="contrast-toggle"', $topbarPartial); $this->assertStringContainsString('data-app-component="details-aside-toggle"', $topbarPartial); $this->assertStringContainsString('data-app-component="aside-panels"', $asideIconBar); $this->assertStringContainsString('data-app-component="sidebar-toggle"', $asidePartial); $searchDialog = $this->readProjectFile('templates/partials/app-search-dialog.phtml'); $this->assertStringContainsString('data-app-component="global-search"', $searchDialog); $this->assertStringContainsString('data-app-component="bookmark-panel"', $bookmarkPanelTemplate); $this->assertStringContainsString('data-app-component="bookmark-save"', $bookmarkDialog); $this->assertStringContainsString('data-app-component="session-warning"', $sessionWarningDialog); } public function testTabsHostsUseDataAppComponentContract(): void { $files = [ 'templates/partials/app-user-profile.phtml', 'pages/admin/departments/_form.phtml', 'pages/admin/permissions/_form.phtml', 'pages/admin/roles/_form.phtml', 'pages/admin/settings/index(default).phtml', 'pages/admin/stats/index(default).phtml', 'pages/admin/tenants/_form.phtml', 'pages/admin/users/_form.phtml', ]; foreach ($files as $file) { $content = $this->readProjectFile($file); $this->assertStringContainsString('data-tabs', $content, $file); $this->assertStringContainsString('data-app-component="tabs"', $content, $file); } } public function testRolesFormUsesTokenSelectHost(): void { $rolesForm = $this->readProjectFile('pages/admin/roles/_form.phtml'); $this->assertStringContainsString('tokenSelectForm(', $rolesForm); } }