UNPKG

@ocap/types

Version:
77 lines (69 loc) 2.36 kB
// 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'); }); }); });