Files
portal/app/tests/Frontend/useWarmingFirms.spec.ts
T

39 lines
1.9 KiB
TypeScript

import { describe, it, expect } from 'vitest';
import { ref } from 'vue';
import { useWarmingFirms } from '../../resources/js/composables/useWarmingFirms';
import type { SalesAdAudienceFirmRow } from '../../resources/js/api/sales';
function firm(over: Partial<SalesAdAudienceFirmRow>): SalesAdAudienceFirmRow {
return {
id: 1, firm_name: 'Ф', city: 'Самара', rubric: 'Стоматологии', phones_count: 1,
state: 'active', stop_reason: null, resume_at: null, days_in_ads: 1,
warmup_started_at: '2026-07-20T00:00:00+00:00', prospect_id: null, stage: null,
assigned: false, manager_id: null, manager_name: null, warming_active: true,
warming_channels: ['yandex'], ch_yandex: true, ch_vk: false, ch_mts: false, ...over,
};
}
describe('useWarmingFirms', () => {
it('собирает список ниш и фильтрует по нише', () => {
const src = ref<SalesAdAudienceFirmRow[]>([
firm({ id: 1, rubric: 'Стоматологии' }),
firm({ id: 2, rubric: 'Медицина' }),
firm({ id: 3, rubric: 'Стоматологии' }),
]);
const { niches, filters, filtered } = useWarmingFirms(src);
expect(niches.value).toEqual(['Медицина', 'Стоматологии']);
filters.niche = 'Стоматологии';
expect(filtered.value.map((f) => f.id)).toEqual([1, 3]);
});
it('фильтрует по периоду дат запуска', () => {
const src = ref<SalesAdAudienceFirmRow[]>([
firm({ id: 1, warmup_started_at: '2026-07-01T00:00:00+00:00' }),
firm({ id: 2, warmup_started_at: '2026-07-20T00:00:00+00:00' }),
]);
const { filters, filtered } = useWarmingFirms(src);
filters.from = '2026-07-15';
expect(filtered.value.map((f) => f.id)).toEqual([2]);
});
});