add source code

This commit is contained in:
Michał Chudy
2025-11-14 15:51:00 +01:00
parent df0ef23857
commit b9972746aa
223 changed files with 24651 additions and 46774 deletions

View File

@@ -0,0 +1,95 @@
import { beforeEach, describe, expect, it, vi } from 'vitest';
import { Fa, Faktura, FP } from '../../types/fa1.types';
import { generatePodsumowanieStawekPodatkuVat, getSummaryTaxRate } from './PodsumowanieStawekPodatkuVat';
vi.mock('../../../shared/PDF-functions', () => ({
createHeader: vi.fn((label) => [{ text: `HEADER:${label}` }]),
createSection: vi.fn((input) => input),
formatText: vi.fn((text, style) => ({ text, style })),
getValue: vi.fn((val) =>
val && val._text ? (typeof val._text === 'string' ? val._text : val._text.toString()) : ''
),
hasValue: vi.fn((val) => !!(val && val._text)),
getNumberRounded: vi.fn((val) => (typeof val === 'number' ? val : parseFloat(val?._text ?? '0') || 0)),
}));
describe('generatePodsumowanieStawekPodatkuVat', () => {
beforeEach(() => vi.clearAllMocks());
it('returns empty array if no relevant Fa data', () => {
const faktura: Faktura = { Fa: {} as Fa };
expect(generatePodsumowanieStawekPodatkuVat(faktura)).toEqual([]);
});
it('creates table with header and data rows', () => {
const fa: Fa = {
P_13_1: { _text: '100' },
P_14_1: { _text: '23' },
P_14_1W: { _text: '23' },
};
const faktura: Faktura = { Fa: fa };
const result: any = generatePodsumowanieStawekPodatkuVat(faktura);
expect(result.some((r: any) => r.table && r.table.body)).toBeTruthy();
expect(result[0].text).toContain('Podsumowanie stawek podatku'); // header present
});
});
describe('getSummaryTaxRate', () => {
beforeEach(() => vi.clearAllMocks());
it('returns empty summarization if no values', () => {
const fa: Fa = {};
expect(getSummaryTaxRate(fa)).toEqual([]);
});
it('returns correct summary entries for each tax rate', () => {
const floatText = (num: number): FP => ({ _text: num.toString() });
const fa: Fa = {
P_13_1: floatText(100),
P_14_1: floatText(23),
P_14_1W: floatText(23),
P_13_2: floatText(200),
P_14_2: floatText(16),
P_14_2W: floatText(16),
P_13_3: floatText(300),
P_14_3: floatText(15),
P_14_3W: floatText(15),
P_13_4: floatText(400),
P_14_4: floatText(12),
P_14_4W: floatText(12),
P_13_5: floatText(500),
P_14_5: floatText(0),
P_13_7: floatText(600),
};
const summary = getSummaryTaxRate(fa);
expect(summary.length).toBe(6);
expect(summary[0]).toMatchObject({
no: 1,
taxRateString: '23% lub 22%',
net: '100.00',
tax: '23.00',
taxPLN: '23.00',
gross: '123.00',
});
expect(summary[1].taxRateString).toBe('8% lub 7%');
expect(summary[4].taxRateString).toBe('');
expect(summary[5].taxRateString).toBe('zwolnione z opodatkowania');
});
it('includes only tax rates with non-zero values', () => {
const fa: Fa = {
P_13_1: { _text: '0' },
P_14_1: { _text: '0' },
P_14_1W: { _text: '0' },
};
expect(getSummaryTaxRate(fa)).toHaveLength(0);
});
});