add source code
This commit is contained in:
125
src/lib-public/generators/FA2/Podmioty.spec.ts
Normal file
125
src/lib-public/generators/FA2/Podmioty.spec.ts
Normal file
@@ -0,0 +1,125 @@
|
||||
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
||||
import { generatePodmioty } from './Podmioty';
|
||||
import type { Faktura } from '../../types/fa2.types';
|
||||
import { createSection } from '../../../shared/PDF-functions';
|
||||
import { generatePodmiot1 } from './Podmiot1';
|
||||
import { generatePodmiot1Podmiot1K } from './Podmiot1Podmiot1K';
|
||||
import { generatePodmiot2 } from './Podmiot2';
|
||||
import { generatePodmiot2Podmiot2K } from './Podmiot2Podmiot2k';
|
||||
import { generatePodmiot3 } from './Podmiot3';
|
||||
import { generateDaneIdentyfikacyjneTPodmiot3Dto } from './Podmiot3Podmiot2k';
|
||||
import { generatePodmiotUpowazniony } from './PodmiotUpowazniony';
|
||||
|
||||
vi.mock('../../../shared/PDF-functions', () => ({
|
||||
createSection: vi.fn((content: any, flag: boolean) => ({ content, flag })),
|
||||
getTable: vi.fn((data: any) => data || []),
|
||||
getValue: vi.fn((val: any) => val?._text ?? val),
|
||||
}));
|
||||
|
||||
vi.mock('./Podmiot1', () => ({
|
||||
generatePodmiot1: vi.fn((data: any) => ({ text: 'Podmiot1 content' })),
|
||||
}));
|
||||
|
||||
vi.mock('./Podmiot1Podmiot1K', () => ({
|
||||
generatePodmiot1Podmiot1K: vi.fn((podmiot1: any, podmiot1K: any) => ({ text: 'Podmiot1K content' })),
|
||||
}));
|
||||
|
||||
vi.mock('./Podmiot2', () => ({
|
||||
generatePodmiot2: vi.fn((data: any) => ({ text: 'Podmiot2 content' })),
|
||||
}));
|
||||
|
||||
vi.mock('./Podmiot2Podmiot2k', () => ({
|
||||
generatePodmiot2Podmiot2K: vi.fn((podmiot2: any, podmiot2K: any) => ({ text: 'Podmiot2K content' })),
|
||||
}));
|
||||
|
||||
vi.mock('./Podmiot3', () => ({
|
||||
generatePodmiot3: vi.fn((data: any, idx: number) => ({ text: `Podmiot3 content ${idx}` })),
|
||||
}));
|
||||
|
||||
vi.mock('./Podmiot3Podmiot2k', () => ({
|
||||
generateDaneIdentyfikacyjneTPodmiot3Dto: vi.fn((data: any, idx: number) => ({
|
||||
text: `DaneIdentyfikacyjne Podmiot3 ${idx}`,
|
||||
})),
|
||||
}));
|
||||
|
||||
vi.mock('./PodmiotUpowazniony', () => ({
|
||||
generatePodmiotUpowazniony: vi.fn(() => ({ text: 'PodmiotUpowazniony content' })),
|
||||
}));
|
||||
|
||||
describe(generatePodmioty.name, () => {
|
||||
const baseInvoice: any = {
|
||||
Fa: {
|
||||
Podmiot1K: [{ _text: 'P1K1' }],
|
||||
Podmiot2K: [{ _text: 'P2K1' }],
|
||||
},
|
||||
Podmiot1: { _text: 'P1' },
|
||||
Podmiot2: { _text: 'P2' },
|
||||
Podmiot3: [{ Rola: { _text: '4' } }],
|
||||
PodmiotUpowazniony: { _text: 'PU' },
|
||||
} as any;
|
||||
|
||||
beforeEach(() => {
|
||||
vi.clearAllMocks();
|
||||
});
|
||||
|
||||
it('creates section with all podmioty when Podmiot1K and Podmiot2K are present', () => {
|
||||
const result = generatePodmioty(baseInvoice) as any;
|
||||
const content = result.content;
|
||||
|
||||
expect(generatePodmiot1Podmiot1K).toHaveBeenCalledWith(baseInvoice.Podmiot1, baseInvoice.Fa.Podmiot1K);
|
||||
expect(generatePodmiot2Podmiot2K).toHaveBeenCalledWith(baseInvoice.Podmiot2, baseInvoice.Fa.Podmiot2K[0]);
|
||||
expect(generatePodmiot3).toHaveBeenCalled();
|
||||
expect(generateDaneIdentyfikacyjneTPodmiot3Dto).not.toHaveBeenCalled();
|
||||
expect(generatePodmiotUpowazniony).toHaveBeenCalledWith(baseInvoice.PodmiotUpowazniony);
|
||||
expect(createSection).toHaveBeenCalled();
|
||||
expect(result.flag).toBe(true);
|
||||
expect(content).toHaveLength(4);
|
||||
expect(content[0]).toEqual({ text: 'Podmiot1K content' });
|
||||
expect(content[1]).toEqual({ text: 'Podmiot2K content' });
|
||||
expect(content[2]).toEqual({ text: 'Podmiot3 content 0' });
|
||||
expect(content[3]).toEqual({ text: 'PodmiotUpowazniony content' });
|
||||
});
|
||||
|
||||
it('calls generatePodmiot1 and generatePodmiot2 when no Podmiot1K and Podmiot2K', () => {
|
||||
const invoice: Faktura = { Podmiot1: {}, Podmiot2: {} } as any;
|
||||
const result = generatePodmioty(invoice) as any;
|
||||
|
||||
expect(generatePodmiot1).toHaveBeenCalledWith(invoice.Podmiot1);
|
||||
expect(generatePodmiot2).toHaveBeenCalledWith(invoice.Podmiot2);
|
||||
expect(result.flag).toBe(true);
|
||||
expect(result.content[0].length).toBeGreaterThan(0);
|
||||
expect(result.content[1].text).toEqual('PodmiotUpowazniony content');
|
||||
});
|
||||
|
||||
it('handles Podmiot3 with podmiot2KDto mapping', () => {
|
||||
const invoice: Faktura = {
|
||||
Fa: { Podmiot2K: [{ _text: 'P2K1' }, { _text: 'P2K2' }] },
|
||||
Podmiot3: [{ Rola: { _text: '4' } }, { Rola: { _text: '3' } }],
|
||||
Podmiot2: {},
|
||||
} as any;
|
||||
const result = generatePodmioty(invoice) as any;
|
||||
const content = result.content;
|
||||
|
||||
expect(generateDaneIdentyfikacyjneTPodmiot3Dto).toHaveBeenCalled();
|
||||
expect(generatePodmiot3).toHaveBeenCalled();
|
||||
expect(result.flag).toBe(true);
|
||||
expect(content).toHaveLength(6);
|
||||
expect(content[0]).toEqual({ text: 'Podmiot2K content' });
|
||||
expect(content[1]).toEqual({ text: 'Podmiot2K content' });
|
||||
expect(content[2]).toEqual({ text: 'DaneIdentyfikacyjne Podmiot3 0' });
|
||||
expect(content[3]).toEqual({ text: '', margin: [0, 8, 0, 0] });
|
||||
expect(content[4]).toEqual({ text: 'Podmiot3 content 1' });
|
||||
expect(content[5]).toEqual({ text: 'PodmiotUpowazniony content' });
|
||||
});
|
||||
|
||||
it('handles empty Podmiot3 gracefully', () => {
|
||||
const invoice: Faktura = { Fa: {}, Podmiot1: {}, Podmiot2: {}, Podmiot3: [] } as any;
|
||||
const result = generatePodmioty(invoice) as any;
|
||||
|
||||
expect(result.content).toBeDefined();
|
||||
expect(generatePodmiotUpowazniony).toHaveBeenCalled();
|
||||
expect(result.flag).toBe(true);
|
||||
expect(result.content[0].length).toBeGreaterThan(0);
|
||||
expect(result.content[1].text).toEqual('PodmiotUpowazniony content');
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user