56 lines
2.2 KiB
TypeScript
56 lines
2.2 KiB
TypeScript
|
|
import { describe, it, expect } from 'vitest';
|
|||
|
|
import { mount } from '@vue/test-utils';
|
|||
|
|
import { createVuetify } from 'vuetify';
|
|||
|
|
import { createRouter, createMemoryHistory } from 'vue-router';
|
|||
|
|
import AdminIncidentsView from '../../resources/js/views/admin/AdminIncidentsView.vue';
|
|||
|
|
|
|||
|
|
const mountView = async () => {
|
|||
|
|
const router = createRouter({
|
|||
|
|
history: createMemoryHistory(),
|
|||
|
|
routes: [{ path: '/admin/incidents', component: AdminIncidentsView }],
|
|||
|
|
});
|
|||
|
|
await router.push('/admin/incidents');
|
|||
|
|
await router.isReady();
|
|||
|
|
return mount(AdminIncidentsView, {
|
|||
|
|
global: { plugins: [createVuetify(), router] },
|
|||
|
|
});
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
describe('AdminIncidentsView.vue', () => {
|
|||
|
|
it('монтируется и содержит заголовок «Инциденты»', async () => {
|
|||
|
|
const wrapper = await mountView();
|
|||
|
|
expect(wrapper.text()).toContain('Инциденты');
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
it('содержит 3 stats: Открыто / Расследуется / РКН-уведомлений', async () => {
|
|||
|
|
const wrapper = await mountView();
|
|||
|
|
const text = wrapper.text();
|
|||
|
|
expect(text).toContain('Открыто');
|
|||
|
|
expect(text).toContain('Расследуется');
|
|||
|
|
expect(text).toContain('РКН-уведомлений');
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
it('содержит фильтр-toggle по статусам (5 значений)', async () => {
|
|||
|
|
const wrapper = await mountView();
|
|||
|
|
const text = wrapper.text();
|
|||
|
|
expect(text).toContain('Все');
|
|||
|
|
expect(text).toContain('Открыты');
|
|||
|
|
expect(text).toContain('Решены');
|
|||
|
|
expect(text).toContain('Закрыты');
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
it('показывает PDN-breach с РКН pending chip', async () => {
|
|||
|
|
const wrapper = await mountView();
|
|||
|
|
const text = wrapper.text();
|
|||
|
|
expect(text).toContain('Утечка ПДн');
|
|||
|
|
expect(text).toContain('РКН pending');
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
it('содержит incident_id в формате INC-YYYY-MMDD-NNNN', async () => {
|
|||
|
|
const wrapper = await mountView();
|
|||
|
|
const text = wrapper.text();
|
|||
|
|
expect(text).toContain('INC-2026-0507-0034');
|
|||
|
|
expect(text).toContain('INC-2026-0506-0028');
|
|||
|
|
});
|
|||
|
|
});
|