createSystemAuthFixture([ 'title' => '命中权限', 'code' => 'match-role', 'remark' => '命中说明', 'status' => 1, 'create_time' => '2026-03-10 08:00:00', ]); $this->createSystemAuthFixture([ 'title' => '跨日权限', 'code' => 'cross-day-role', 'remark' => '跨日说明', 'status' => 1, 'create_time' => '2026-03-09 08:00:00', ]); $this->createSystemAuthFixture([ 'title' => '禁用权限', 'code' => 'disabled-role', 'remark' => '禁用说明', 'status' => 0, 'create_time' => '2026-03-10 09:00:00', ]); $result = $this->callIndexController([ 'output' => 'json', 'type' => 'index', 'title' => '命中', 'create_time' => '2026-03-10 - 2026-03-10', 'plugin_group' => 'common', '_field_' => 'id', '_order_' => 'asc', 'page' => 1, 'limit' => 20, ]); $this->assertSame(200, intval($result['code'] ?? 0)); $this->assertSame('JSON-DATA', $result['info'] ?? ''); $this->assertSame(1, intval($result['data']['page']['total'] ?? 0)); $this->assertCount(1, $result['data']['list'] ?? []); $this->assertSame('命中权限', $result['data']['list'][0]['title'] ?? ''); $this->assertSame('common', $result['data']['list'][0]['plugin_group'] ?? ''); } public function testIndexGetRendersPageBuilderMarkup(): void { $html = $this->callActionHtml('index', ['plugin_group' => 'tester']); $this->assertStringContainsString('page-builder-schema', $html); $this->assertStringContainsString('id="RoleTable"', $html); $this->assertStringContainsString('StatusSwitchRoleTable', $html); $this->assertStringContainsString('data-open=', $html); $this->assertStringNotContainsString('
条件搜索', $html); $this->assertStringContainsString('class="layui-card-table"', $html); $this->assertStringContainsString('class="layui-tab layui-tab-card"', $html); $this->assertStringContainsString('class="layui-tab-content"', $html); $this->assertStringContainsString('系统权限', $html); $this->assertStringContainsString('回 收 站', $html); } public function testAddGetRendersBuilderFormMarkup(): void { $html = $this->callActionHtml('add', ['plugin' => 'tester']); $this->assertStringContainsString('id="RoleForm"', $html); $this->assertStringContainsString('form-builder-schema', $html); $this->assertStringContainsString('AuthPluginFilter', $html); $this->assertStringContainsString('data-target-backup', $html); $this->assertStringContainsString('layui-card-header', $html); $this->assertStringContainsString('layui-card-line', $html); $this->assertStringContainsString('class="layui-card-table"', $html); $this->assertStringContainsString('class="think-box-shadow"', $html); $this->assertStringContainsString('name="code"', $html); $this->assertStringContainsString('name="remark"', $html); $this->assertStringContainsString('name="status"', $html); $this->assertStringContainsString('id="AuthTreeKeyword"', $html); $this->assertStringContainsString('id="AuthTreeKeywordClear"', $html); $this->assertStringContainsString('搜索权限节点名称,按 / 快速聚焦', $html); $this->assertStringContainsString('keydown.auth-tree-search', $html); $this->assertStringContainsString('id="AuthTreeSelectedOnly"', $html); $this->assertStringContainsString('只看已选', $html); $this->assertStringContainsString('data-tree-action="select-visible"', $html); $this->assertStringContainsString('data-tree-action="clear-visible"', $html); $this->assertStringContainsString('id="AuthTreePanel"', $html); $this->assertStringContainsString('data-role-plugin="tester"', $html); $this->assertStringContainsString('data-role-action-url="/auth/add.html?plugin=tester"', $html); $this->assertStringContainsString('data-expand-node', $html); $this->assertStringContainsString('auth-plugin-title', $html); $this->assertStringContainsString('auth-group-title', $html); $this->assertStringContainsString('auth-group-grid', $html); $this->assertStringContainsString('auth-plugin-card', $html); $this->assertStringContainsString('data-batch-type="select"', $html); $this->assertStringContainsString('data-batch-type="clear"', $html); $this->assertStringContainsString('系统权限编辑', $html); $this->assertStringContainsString('返回列表', $html); $this->assertStringContainsString('class="pa40"', $html); $this->assertStringContainsString("this.filter = String(\$roleForm.data('rolePlugin') || '');", $html); $this->assertStringContainsString("this.actionUrl = String(\$roleForm.data('roleActionUrl') || \$roleForm.attr('action') || '');", $html); $this->assertStringContainsString('system-auth-tree-state', $html); $this->assertStringContainsString('localStorage.setItem', $html); $this->assertStringContainsString('确认保存权限变更', $html); $this->assertStringContainsString('本次权限变更', $html); $this->assertStringNotContainsString('