@ocap/types
Version:
Typescript definitions generated from protobuf
77 lines (69 loc) • 2.36 kB
text/typescript
// core/types/tests/interfaces-reexport.spec.ts
// Tests for interfaces that extend/re-export Proto types
import { describe, expect, test } from 'bun:test';
// Import from interfaces (user perspective)
import type { IStateContext } from '../interfaces';
// Import from Proto
import type { TMultisig } from '../lib/type_pb';
describe('interfaces extending Proto types', () => {
describe('IStateContext extends TStateContext', () => {
test('IStateContext should have genesisTx and renaissanceTx from TStateContext', () => {
const context: IStateContext = {
genesisTx: 'tx1',
renaissanceTx: 'tx2',
};
expect(context.genesisTx).toBe('tx1');
expect(context.renaissanceTx).toBe('tx2');
});
test('IStateContext should accept string timestamps', () => {
const context: IStateContext = {
genesisTx: 'tx1',
renaissanceTx: 'tx2',
genesisTime: '2024-01-01T00:00:00Z',
renaissanceTime: '2024-01-02T00:00:00Z',
};
expect(context.genesisTime).toBe('2024-01-01T00:00:00Z');
});
test('IStateContext should accept Date timestamps', () => {
const now = new Date();
const context: IStateContext = {
genesisTx: 'tx1',
renaissanceTx: 'tx2',
genesisTime: now,
renaissanceTime: now,
};
expect(context.genesisTime).toBe(now);
});
test('IStateContext should accept number timestamps', () => {
const ts = Date.now();
const context: IStateContext = {
genesisTx: 'tx1',
renaissanceTx: 'tx2',
genesisTime: ts,
renaissanceTime: ts,
};
expect(context.genesisTime).toBe(ts);
});
});
describe('TMultisig from Proto', () => {
test('TMultisig should accept Uint8Array pk/signature', () => {
const proto: TMultisig = {
signer: 'z123',
pk: new Uint8Array([1, 2, 3]),
signature: new Uint8Array([4, 5, 6]),
delegator: 'z456',
data: { typeUrl: '', value: new Uint8Array() },
};
expect(proto.signer).toBe('z123');
});
test('TMultisig should work with string pk/signature', () => {
const proto: TMultisig = {
signer: 'z123',
pk: 'base64pk',
signature: 'base64sig',
delegator: '',
};
expect(proto.pk).toBe('base64pk');
});
});
});