34 lines
1.3 KiB
TypeScript
34 lines
1.3 KiB
TypeScript
import { describe, it, expect, beforeEach, vi } from 'vitest';
|
|
import { mount, flushPromises } from '@vue/test-utils';
|
|
import { createPinia, setActivePinia } from 'pinia';
|
|
import { createVuetify } from 'vuetify';
|
|
import DashboardView from '../../resources/js/views/DashboardView.vue';
|
|
|
|
describe('DashboardView — KPI count-up', () => {
|
|
beforeEach(() => {
|
|
setActivePinia(createPinia());
|
|
Object.defineProperty(window, 'matchMedia', {
|
|
writable: true,
|
|
configurable: true,
|
|
value: vi.fn().mockReturnValue({ matches: false, addEventListener: vi.fn(), removeEventListener: vi.fn() }),
|
|
});
|
|
});
|
|
|
|
it('renders KPI strip with JetBrains Mono number', async () => {
|
|
const w = mount(DashboardView, {
|
|
global: { plugins: [createVuetify()], stubs: { RouterLink: true } },
|
|
});
|
|
await flushPromises();
|
|
const kpis = w.findAll('.ld-kpi__value');
|
|
expect(kpis.length).toBeGreaterThan(0);
|
|
expect(kpis[0].classes()).toContain('ld-mono');
|
|
});
|
|
|
|
it('shows live pulse indicator', () => {
|
|
const w = mount(DashboardView, {
|
|
global: { plugins: [createVuetify()], stubs: { RouterLink: true } },
|
|
});
|
|
expect(w.find('.ld-pulse').exists()).toBe(true);
|
|
});
|
|
});
|