84dfbc857a
Accessibility (Pa11y live) / a11y (push) Has been cancelled
Все падения — устаревшие ожидания тестов (компоненты менялись намеренно): SettingsView (роутер+вкладка Реквизиты+события), LegalDoc (реальные доки под ЮKassa), ProjectsView (BulkActionsBar v-show→isVisible), ErrorView (убран фейк REQ/INC), PricingTiers (формат «500 ₽»), KanbanCard (costKopecks→«—»), ChangePassword (дата из API), DealDetail (русские ярлыки статусов), DealsView (RuDateField на v-menu), SupplierIntegration (window.confirm→v-dialog). Изменены ТОЛЬКО тесты, компоненты не тронуты. Полный прогон: 127 файлов / 992 теста зелёные. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
55 lines
2.4 KiB
TypeScript
55 lines
2.4 KiB
TypeScript
import { describe, it, expect } from 'vitest';
|
|
import { mount } from '@vue/test-utils';
|
|
import { createVuetify } from 'vuetify';
|
|
import { createRouter, createMemoryHistory, type Router } from 'vue-router';
|
|
|
|
import LegalDocView from '../../resources/js/views/legal/LegalDocView.vue';
|
|
|
|
const vuetify = createVuetify();
|
|
|
|
const buildRouter = (): Router =>
|
|
createRouter({
|
|
history: createMemoryHistory(),
|
|
routes: [
|
|
{ path: '/legal/:doc(offer|privacy)', name: 'legal', component: LegalDocView },
|
|
{ path: '/login', name: 'login', component: { template: '<div>login</div>' } },
|
|
],
|
|
});
|
|
|
|
const mountAt = async (path: string) => {
|
|
const router = buildRouter();
|
|
await router.push(path);
|
|
await router.isReady();
|
|
return mount(LegalDocView, { global: { plugins: [vuetify, router] } });
|
|
};
|
|
|
|
describe('LegalDocView.vue', () => {
|
|
it('рендерит «Публичная оферта» на /legal/offer', async () => {
|
|
const wrapper = await mountAt('/legal/offer');
|
|
expect(wrapper.text()).toContain('Публичная оферта');
|
|
});
|
|
|
|
it('рендерит «Политика конфиденциальности» на /legal/privacy', async () => {
|
|
const wrapper = await mountAt('/legal/privacy');
|
|
expect(wrapper.text()).toContain('Политика конфиденциальности');
|
|
});
|
|
|
|
it('показывает реальный текст оферты (рабочая редакция под ЮKassa), а не заглушку', async () => {
|
|
const wrapper = await mountAt('/legal/offer');
|
|
const text = wrapper.text();
|
|
// Реальные разделы + дата редакции из content/legalDocs.ts.
|
|
expect(text).toContain('Предмет');
|
|
expect(text).toContain('Реквизиты Исполнителя');
|
|
expect(text).toContain('Редакция от 2026-06-24');
|
|
expect(text).not.toContain('готовится');
|
|
});
|
|
|
|
it('политика конфиденциальности содержит реальные разделы (оператор/права субъекта)', async () => {
|
|
const wrapper = await mountAt('/legal/privacy');
|
|
const text = wrapper.text();
|
|
expect(text).toContain('Оператор');
|
|
expect(text).toContain('Права субъекта');
|
|
expect(text).toContain('Редакция от 2026-06-24');
|
|
});
|
|
});
|