120 lines
3.5 KiB
TypeScript
120 lines
3.5 KiB
TypeScript
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
import { generatePodmioty } from './Podmioty';
|
|
import { Faktura } from '../../types/fa1.types';
|
|
|
|
vi.mock('../../../shared/PDF-functions', () => ({
|
|
createSection: vi.fn((arr) => arr),
|
|
getTable: vi.fn((obj) => (obj ? (Array.isArray(obj) ? obj : [obj]) : [])),
|
|
getValue: vi.fn((val) => (val && val._text ? val._text : '')),
|
|
hasValue: vi.fn((val) => Boolean(val && val._text)),
|
|
generateColumns: vi.fn((left, right) => ({ columns: [left, right] })),
|
|
}));
|
|
vi.mock('./Podmiot1', () => ({
|
|
generatePodmiot1: vi.fn(() => [{ podmiot1: true }]),
|
|
}));
|
|
vi.mock('./Podmiot1Podmiot1K', () => ({
|
|
generatePodmiot1Podmiot1K: vi.fn(() => [{ podmiot1K: true }]),
|
|
}));
|
|
vi.mock('./Podmiot2', () => ({
|
|
generatePodmiot2: vi.fn(() => [{ podmiot2: true }]),
|
|
}));
|
|
vi.mock('./Podmiot2Podmiot2k', () => ({
|
|
generatePodmiot2Podmiot2K: vi.fn(() => [{ podmiot2K: true }]),
|
|
}));
|
|
vi.mock('./Podmiot3', () => ({
|
|
generatePodmiot3: vi.fn(() => [{ podmiot3: true }]),
|
|
}));
|
|
vi.mock('./Podmiot3Podmiot2k', () => ({
|
|
generateDaneIdentyfikacyjneTPodmiot3Dto: vi.fn(() => [{ daneIdentyfikacyjne: true }]),
|
|
}));
|
|
vi.mock('./PodmiotUpowazniony', () => ({
|
|
generatePodmiotUpowazniony: vi.fn(() => [{ upowazniony: true }]),
|
|
}));
|
|
vi.mock('../../../shared/generators/common/functions', () => ({
|
|
getValue: vi.fn((val) => (val && val._text ? val._text : '')),
|
|
}));
|
|
|
|
describe(generatePodmioty.name, () => {
|
|
beforeEach(() => {
|
|
vi.clearAllMocks();
|
|
});
|
|
|
|
it('calls generatePodmiot1Podmiot1K when Podmiot1K exists', () => {
|
|
const invoice: Faktura = {
|
|
Podmiot1: {},
|
|
Podmiot2: {},
|
|
Fa: {
|
|
Podmiot1K: {},
|
|
Podmiot2K: [{}],
|
|
},
|
|
};
|
|
const result = generatePodmioty(invoice);
|
|
|
|
expect(result).toContainEqual(expect.arrayContaining([{ podmiot1K: true }]));
|
|
});
|
|
|
|
it('calls generatePodmiot1 when Podmiot1K missing', () => {
|
|
const invoice: Faktura = {
|
|
Podmiot1: {},
|
|
Podmiot2: {},
|
|
Fa: {
|
|
Podmiot2K: [{}],
|
|
},
|
|
};
|
|
const result = generatePodmioty(invoice);
|
|
|
|
expect(result).toContainEqual(expect.arrayContaining([{ podmiot1: true }]));
|
|
});
|
|
|
|
it('calls generatePodmiot2Podmiot2K when Podmiot2K available', () => {
|
|
const invoice: Faktura = {
|
|
Podmiot2: {},
|
|
Fa: {
|
|
Podmiot2K: [{}, {}],
|
|
},
|
|
};
|
|
const result = generatePodmioty(invoice);
|
|
|
|
expect(result).toContainEqual(expect.arrayContaining([{ podmiot2K: true }]));
|
|
});
|
|
|
|
it('renders Podmiot1 and Podmiot2 side by side if no Fa Podmiot1K or Podmiot2K', () => {
|
|
const invoice: Faktura = {
|
|
Podmiot1: {},
|
|
Podmiot2: {},
|
|
};
|
|
const result = generatePodmioty(invoice);
|
|
|
|
expect(result).toEqual(
|
|
expect.arrayContaining([
|
|
expect.arrayContaining([
|
|
expect.objectContaining({
|
|
columns: expect.any(Array),
|
|
}),
|
|
]),
|
|
])
|
|
);
|
|
});
|
|
|
|
it('calls generateDaneIdentyfikacyjneTPodmiot3Dto or generatePodmiot3 accordingly', () => {
|
|
const invoice: Faktura = {
|
|
Podmiot3: [{ Rola: { _text: '4' } }],
|
|
Fa: {
|
|
Podmiot2K: [{}, {}],
|
|
},
|
|
};
|
|
const result = generatePodmioty(invoice);
|
|
|
|
expect(result.some((e: any) => e.some((o: any) => o.daneIdentyfikacyjne || o.podmiot3))).toBe(true);
|
|
});
|
|
|
|
it('calls generatePodmiotUpowazniony last', () => {
|
|
const invoice: Faktura = {
|
|
PodmiotUpowazniony: {},
|
|
};
|
|
const result = generatePodmioty(invoice);
|
|
|
|
expect(result).toContainEqual(expect.arrayContaining([{ upowazniony: true }]));
|
|
});
|
|
});
|