UNPKG

@hexadrop/query

Version:

Hexagonal architecture utils library

80 lines (62 loc) 1.92 kB
import { describe, expect, test } from 'bun:test'; import BunMockQueryBus from './bus.mock-bun'; import Query from './query'; class Query1Response { constructor(public readonly foo: string) {} } class Query1 extends Query<Query1Response> { static override QUERY_NAME = 'Query1'; constructor(id: string) { super(Query1.QUERY_NAME, id); } get response(): typeof Query1Response { return Query1Response; } } class Query2Response { constructor(public readonly bar: string) {} } class Query2 extends Query<Query2Response> { static override QUERY_NAME = 'Query2'; constructor(id: string) { super(Query2.QUERY_NAME, id); } get response(): typeof Query2Response { return Query2Response; } } describe('BunMockQueryBus', () => { describe('assertAskedQueries()', () => { test('should works as expected', async () => { const query1 = new Query1('1'); const query2 = new Query2('2'); const bus = new BunMockQueryBus(); await bus.ask(query1); await bus.ask(query2); expect(() => bus.assertLastAskedQuery(query1)).toThrow(); expect(() => bus.assertAskedQueries(query1, query2)).not.toThrow(); }); }); describe('assertLastAskedQuery()', () => { test('should works as expected', async () => { const query1 = new Query1('1'); const query2 = new Query2('2'); const bus = new BunMockQueryBus(); await bus.ask(query1); await bus.ask(query2); expect(() => bus.assertLastAskedQuery(query1)).toThrow(); expect(() => bus.assertLastAskedQuery(query2)).not.toThrow(); }); }); describe('assertNotAskedQuery()', () => { test('should works as expected', async () => { const query1 = new Query1('1'); const query2 = new Query2('2'); const bus = new BunMockQueryBus(); expect(() => bus.assertNotAskedQuery()).not.toThrow(); await bus.ask(query1); await bus.ask(query2); expect(() => bus.assertNotAskedQuery()).toThrow(); }); }); });