add source code
This commit is contained in:
102
src/lib-public/generate-invoice.spec.ts
Normal file
102
src/lib-public/generate-invoice.spec.ts
Normal file
@@ -0,0 +1,102 @@
|
||||
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
||||
import * as FA1Generator from './FA1-generator';
|
||||
import * as FA2Generator from './FA2-generator';
|
||||
import * as FA3Generator from './FA3-generator';
|
||||
import { generateInvoice } from './generate-invoice';
|
||||
import * as XMLParser from '../shared/XML-parser';
|
||||
import { AdditionalDataTypes } from './types/common.types';
|
||||
|
||||
describe('generateInvoice', () => {
|
||||
const mockBlob = new Blob(['mock pdf content'], { type: 'application/pdf' });
|
||||
|
||||
beforeEach(() => {
|
||||
vi.resetAllMocks();
|
||||
});
|
||||
|
||||
const additionalData: AdditionalDataTypes = {
|
||||
nrKSeF: 'testKSeF',
|
||||
qrCode: 'qrCodeValue',
|
||||
isMobile: false,
|
||||
};
|
||||
|
||||
it('should call generateFA1 and resolve with blob for version FA (1)', async () => {
|
||||
const fakeXml = {
|
||||
Faktura: {
|
||||
Naglowek: {
|
||||
KodFormularza: {
|
||||
_attributes: { kodSystemowy: 'FA (1)' },
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
vi.spyOn(XMLParser, 'parseXML').mockResolvedValue(fakeXml);
|
||||
|
||||
const getBlobMock = vi.fn().mockImplementation((cb) => cb(mockBlob));
|
||||
|
||||
vi.spyOn(FA1Generator, 'generateFA1').mockReturnValue({ getBlob: getBlobMock } as any);
|
||||
|
||||
const file = new File([], 'test.xml');
|
||||
|
||||
const result = await generateInvoice(file, additionalData, 'blob');
|
||||
|
||||
expect(result).toBe(mockBlob);
|
||||
expect(XMLParser.parseXML).toHaveBeenCalledWith(file);
|
||||
expect(FA1Generator.generateFA1).toHaveBeenCalledWith(fakeXml.Faktura, additionalData);
|
||||
expect(getBlobMock).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('should call generateFA2 and resolve with blob for version FA (2)', async () => {
|
||||
const fakeXml = {
|
||||
Faktura: {
|
||||
Naglowek: {
|
||||
KodFormularza: {
|
||||
_attributes: { kodSystemowy: 'FA (2)' },
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
vi.spyOn(XMLParser, 'parseXML').mockResolvedValue(fakeXml);
|
||||
|
||||
const getBlobMock = vi.fn().mockImplementation((cb) => cb(mockBlob));
|
||||
|
||||
vi.spyOn(FA2Generator, 'generateFA2').mockReturnValue({ getBlob: getBlobMock } as any);
|
||||
|
||||
const file = new File([], 'test.xml');
|
||||
|
||||
const result = await generateInvoice(file, additionalData, 'blob');
|
||||
|
||||
expect(result).toBe(mockBlob);
|
||||
expect(XMLParser.parseXML).toHaveBeenCalledWith(file);
|
||||
expect(FA2Generator.generateFA2).toHaveBeenCalledWith(fakeXml.Faktura, additionalData);
|
||||
expect(getBlobMock).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('should call generateFA3 and resolve with blob for version FA (3)', async () => {
|
||||
const fakeXml = {
|
||||
Faktura: {
|
||||
Naglowek: {
|
||||
KodFormularza: {
|
||||
_attributes: { kodSystemowy: 'FA (3)' },
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
vi.spyOn(XMLParser, 'parseXML').mockResolvedValue(fakeXml);
|
||||
|
||||
const getBlobMock = vi.fn().mockImplementation((cb) => cb(mockBlob));
|
||||
|
||||
vi.spyOn(FA3Generator, 'generateFA3').mockReturnValue({ getBlob: getBlobMock } as any);
|
||||
|
||||
const file = new File([], 'test.xml');
|
||||
|
||||
const result = await generateInvoice(file, additionalData, 'blob');
|
||||
|
||||
expect(result).toBe(mockBlob);
|
||||
expect(XMLParser.parseXML).toHaveBeenCalledWith(file);
|
||||
expect(FA3Generator.generateFA3).toHaveBeenCalledWith(fakeXml.Faktura, additionalData);
|
||||
expect(getBlobMock).toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user