Files
portal/app/tests/Frontend/KanbanCard.spec.ts
T
Дмитрий dab91b62f7 test(фронт): привёл стенд в зелёный — 10 протухших спеков под актуальные компоненты
Все падения — устаревшие ожидания тестов (компоненты менялись намеренно):
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>
2026-06-28 12:58:19 +03:00

42 lines
1.9 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { describe, it, expect } from 'vitest';
import { mount } from '@vue/test-utils';
import { createVuetify } from 'vuetify';
import KanbanCard from '../../resources/js/components/kanban/KanbanCard.vue';
import { MOCK_DEALS } from '../../resources/js/composables/mockDeals';
describe('KanbanCard.vue', () => {
const factory = (deal = MOCK_DEALS[0]) =>
mount(KanbanCard, {
props: { deal },
global: { plugins: [createVuetify()] },
});
it('рендерит имя, телефон, проект и стоимость', () => {
// Карточка показывает ФАКТ списания (costKopecks), а не legacy cost; при отсутствии
// списания — «—». Формат проверяем на сделке с costKopecks=185000 → «1 850 ₽».
const wrapper = factory({ ...MOCK_DEALS[0], costKopecks: 185000 });
const text = wrapper.text();
expect(text).toContain('Анна Соколова');
expect(text).toContain('+7 (916) 871-23-45');
expect(text).toContain('Натяжные потолки');
expect(text).toMatch(/1\s+850\s*₽/);
});
it('показывает «—» в стоимости когда списания ещё не было (costKopecks=null)', () => {
const wrapper = factory({ ...MOCK_DEALS[0], costKopecks: null });
expect(wrapper.find('.card-cost').text()).toBe('—');
});
it('показывает initials менеджера', () => {
const wrapper = factory(MOCK_DEALS[0]);
expect(wrapper.text()).toContain('ИП');
});
it('emit-ит open(id) при клике', async () => {
const wrapper = factory(MOCK_DEALS[0]);
await wrapper.find('.kanban-card').trigger('click');
expect(wrapper.emitted('open')).toBeTruthy();
expect(wrapper.emitted('open')?.[0]).toEqual([MOCK_DEALS[0].id]);
});
});