krona-staff/tests/unit/portal-ui.test.ts
Ochenstarik 331e4909c9
Some checks are pending
ci / verify (push) Waiting to run
feat(portal): rebuild staff operational workspace
2026-09-26 14:13:21 +07:00

38 lines
2.1 KiB
TypeScript

import { describe, expect, it } from 'vitest';
import { portalCssEnhanced, portalHtml, portalJsEnhanced, portalManifest } from '../../src/portal-ui.js';
describe('Krona Staff workspace shell', () => {
it('exposes the operational workspace sections with deep routes', () => {
expect(portalHtml).toContain('data-route="/staff/dashboard"');
expect(portalHtml).toContain('data-route="/staff/employees"');
expect(portalHtml).toContain('data-route="/staff/finance"');
expect(portalHtml).toContain('data-route="/staff/schedules"');
expect(portalHtml).toContain('data-route="/staff/payroll"');
expect(portalHtml).toContain('data-route="/staff/attendance">');
expect(portalHtml).toContain('data-route="/staff/shifts">');
expect(portalHtml).toContain('data-route="/staff/rules">');
expect(portalHtml).toContain('data-route="/staff/terminal">');
expect(portalHtml).toContain('id="employee-inspector"');
expect(portalHtml).toContain('id="finance-entries"');
expect(portalHtml).toContain('id="calendar-grid"');
expect(portalHtml).not.toContain('<aside class="sidebar"');
});
it('uses the Krona Library semantic theme vocabulary', () => {
expect(portalCssEnhanced).toContain('--omni-bg-workspace');
expect(portalCssEnhanced).toContain('[data-omni-theme="noble-green"]');
expect(portalCssEnhanced).toContain('[data-omni-theme="parchment-light"]');
expect(portalCssEnhanced).toContain('[data-omni-theme="graphite-forest-dark"]');
expect(portalCssEnhanced).toContain('var(--omni-primary)');
expect(portalCssEnhanced).toContain('[hidden]{display:none!important}');
});
it('keeps navigation addressable and starts the PWA on the dashboard', () => {
expect(portalJsEnhanced).toContain("'/staff/employees':'employees-view'");
expect(portalJsEnhanced).toContain("'/staff/attendance':'attendance-view'");
expect(portalJsEnhanced).toContain("'/staff/reports':'reports-view'");
expect(portalJsEnhanced).toContain("window.addEventListener('popstate'");
expect(JSON.parse(portalManifest)).toMatchObject({ start_url: '/staff/dashboard', scope: '/staff' });
});
});