- клиент на единый POST …/intercompany-matrix и …/export - матрица: колонка «Итого Дт» и строка «Итого Кт» из total_debit/total_credit, клиентское сложение убрано - фильтр «Компании» уходит в запрос (legal_entity_ids), варианты — весь периметр из ответа без выбора; выгрузка с тем же выбором - результирующая таблица без строки «Итого», колонка «Итого по группе» - change intercompany-matrix-totals-ui Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
31 lines
1.5 KiB
TypeScript
31 lines
1.5 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
||
import { chessMatrixRequest, isWholePerimeter } from './chessMatrixRequest';
|
||
|
||
describe('chessMatrixRequest', () => {
|
||
it('пустые фильтры — пустые списки: все балансовые счета и весь периметр', () => {
|
||
expect(chessMatrixRequest([], [], [])).toEqual({ debit_account_ids: [], credit_account_ids: [], legal_entity_ids: [] });
|
||
});
|
||
it('выбранные счета и компании уходят в запрос как есть', () => {
|
||
expect(chessMatrixRequest(['d1'], ['c1', 'c2'], ['le1'])).toEqual({
|
||
debit_account_ids: ['d1'],
|
||
credit_account_ids: ['c1', 'c2'],
|
||
legal_entity_ids: ['le1'],
|
||
});
|
||
});
|
||
it('списки копируются: правка фильтра после отправки не меняет тело', () => {
|
||
const companies = ['le1'];
|
||
const body = chessMatrixRequest([], [], companies);
|
||
companies.push('le2');
|
||
expect(body.legal_entity_ids).toEqual(['le1']);
|
||
});
|
||
});
|
||
|
||
describe('isWholePerimeter', () => {
|
||
it('без выбора компаний ответ содержит весь периметр — из него строятся варианты фильтра', () => {
|
||
expect(isWholePerimeter(chessMatrixRequest(['d1'], ['c1'], []))).toBe(true);
|
||
});
|
||
it('с выбором компаний ответ сужен — варианты фильтра не трогаем', () => {
|
||
expect(isWholePerimeter(chessMatrixRequest([], [], ['le1']))).toBe(false);
|
||
});
|
||
});
|