UNPKG

@facturacr/atv-sdk

Version:

Librería (SDK) de Javascript/NodeJS para acceder al API de Administración Tributaria Virtual (ATV) del Ministerio de Hacienda.

60 lines (56 loc) 2.38 kB
import fs from 'fs' import { ATV } from '@src/ATV' import 'jest-xml-matcher' import { createDocumentInputExample } from '@test/stubs/createDocument.data' const fakePem = fs.readFileSync('__tests__/stubs/dummyKeys/client-identity.p12', 'binary') const fakePassword = '1234' const expectXml = fs.readFileSync('__tests__/stubs/commonExpectedXml.xml', 'utf-8') describe('Create Document (Invoice)', () => { beforeAll(() => { jest.useFakeTimers() jest.setSystemTime(new Date(2024, 3, 1, 0, 0, 0, 0)) }) it('should create document and generate a correct command', async () => { const atv = new ATV({}, 'stg') const createdDoc = await atv.createDocumentCommand({ document: createDocumentInputExample, token: 'fake-token', signatureOptions: { buffer: fakePem, password: fakePassword } }) expect(createdDoc.command).toMatchObject({ url: 'https://api-sandbox.comprobanteselectronicos.go.cr/recepcion/v1/recepcion', method: 'post' }) expect(createdDoc.command.data).toMatchObject({ clave: '50601042400020692014200100001010000000002100000001', fecha: '2024-04-01T00:00:00.000Z', emisor: { tipoIdentificacion: createDocumentInputExample.emitter.identifier.type, numeroIdentificacion: createDocumentInputExample.emitter.identifier.id }, receptor: { tipoIdentificacion: createDocumentInputExample.receiver.identifier.type, numeroIdentificacion: createDocumentInputExample.receiver.identifier.id } }) expect(createdDoc.command.data.comprobanteXml).toBeDefined() expect(createdDoc.extraData.xml).toBeDefined() }) it('should create document and match to snapshot', async () => { const atv = new ATV({}, 'stg') // @ts-ignore just for testing const createdDoc = await atv.createDocumentCommand({ document: createDocumentInputExample, token: 'fake-token', signatureOptions: undefined }) expect(createdDoc.command.data.comprobanteXml).toMatchSnapshot() }) it('should create document and generate a correct xml', async () => { const atv = new ATV({}, 'stg') // @ts-ignore just for testing const createdDoc = await atv.createDocumentCommand({ document: createDocumentInputExample, token: 'fake-token', signatureOptions: undefined }) expect(createdDoc.extraData.xml).toEqualXML(expectXml) }) })