gradido/dlt-connector/src/client/GradidoNode/input.schema.test.ts
2026-02-26 09:08:29 +01:00

63 lines
1.8 KiB
TypeScript

import { beforeAll, describe, expect, it } from 'bun:test'
import { v4 as uuidv4 } from 'uuid'
import * as v from 'valibot'
import {
HieroTransactionIdString,
hieroIdSchema,
hieroTransactionIdStringSchema,
Uuidv4,
uuidv4Schema,
} from '../../schemas/typeGuard.schema'
import { transactionIdentifierSchema } from './input.schema'
let communityId: Uuidv4
const uuidv4String = uuidv4()
let hieroTransactionId: HieroTransactionIdString
beforeAll(() => {
communityId = v.parse(uuidv4Schema, uuidv4String)
hieroTransactionId = v.parse(hieroTransactionIdStringSchema, '0.0.261-1755348116-1281621')
})
describe('transactionIdentifierSchema ', () => {
it('valid, transaction identified by transactionNr and topic', () => {
expect(
v.parse(transactionIdentifierSchema, {
transactionId: 1,
communityId,
}),
).toEqual({
transactionId: 1,
hieroTransactionId: undefined,
communityId,
})
})
it('valid, transaction identified by hieroTransactionId and topic', () => {
expect(
v.parse(transactionIdentifierSchema, {
hieroTransactionId: '0.0.261-1755348116-1281621',
communityId,
}),
).toEqual({
hieroTransactionId,
communityId,
})
})
it('invalid, missing communityId', () => {
expect(() =>
v.parse(transactionIdentifierSchema, {
transactionId: 1,
hieroTransactionId: '0.0.261-1755348116-1281621',
}),
).toThrowError(new Error('Invalid key: Expected "topic" but received undefined'))
})
it('invalid, transactionNr and iotaMessageId set', () => {
expect(() =>
v.parse(transactionIdentifierSchema, {
transactionId: 1,
hieroTransactionId: '0.0.261-1755348116-1281621',
communityId,
}),
).toThrowError(new Error('expect transactionNr or hieroTransactionId not both'))
})
})