add source code
This commit is contained in:
@@ -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);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user