All files / blong-gogo/src Watch.test.ts

0% Statements 0/51
0% Branches 0/1
0% Functions 0/1
0% Lines 0/51

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52                                                                                                       
import {test} from 'tap';

import {affectedNamespaces} from './Watch.ts';

// ---------------------------------------------------------------------------
// affectedNamespaces
// ---------------------------------------------------------------------------

test('affectedNamespaces — exact key match', async t => {
    const diff = new Map([['payment.adapter.db', {prev: 1, next: 2}]]);
    const ports = ['payment.adapter.db', 'user.adapter.db'];
    const affected = affectedNamespaces(diff, ports);
    t.ok(affected.has('payment.adapter.db'), 'exact match detected');
    t.notOk(affected.has('user.adapter.db'), 'unrelated port excluded');
});

test('affectedNamespaces — prefix match', async t => {
    const diff = new Map([['payment.adapter.db.host', {prev: 'a', next: 'b'}]]);
    const ports = ['payment.adapter.db', 'user.adapter.db'];
    const affected = affectedNamespaces(diff, ports);
    t.ok(affected.has('payment.adapter.db'), 'prefix match detected');
    t.notOk(affected.has('user.adapter.db'), 'unrelated port excluded');
});

test('affectedNamespaces — no match returns empty set', async t => {
    const diff = new Map([['unrelated.key', {prev: 1, next: 2}]]);
    const ports = ['payment.adapter.db'];
    const affected = affectedNamespaces(diff, ports);
    t.equal(affected.size, 0, 'no affected ports');
});

test('affectedNamespaces — multiple ports can be affected', async t => {
    const diff = new Map([
        ['payment.adapter.db.host', {prev: 'old', next: 'new'}],
        ['user.adapter.db.port', {prev: 3306, next: 5432}],
    ]);
    const ports = ['payment.adapter.db', 'user.adapter.db', 'audit.adapter.kafka'];
    const affected = affectedNamespaces(diff, ports);
    t.equal(affected.size, 2, 'two ports affected');
    t.ok(affected.has('payment.adapter.db'));
    t.ok(affected.has('user.adapter.db'));
    t.notOk(affected.has('audit.adapter.kafka'));
});

test('affectedNamespaces — partial name prefix does not match', async t => {
    // 'payment.adapter.db2' should NOT match port 'payment.adapter.db'
    const diff = new Map([['payment.adapter.db2.host', {prev: 'a', next: 'b'}]]);
    const ports = ['payment.adapter.db'];
    const affected = affectedNamespaces(diff, ports);
    t.equal(affected.size, 0, 'partial-name prefix should not match');
});