import test from 'brittle'
import { Router } from '../lib/router.js'
test('Router - route to Keet', (t) => {
let received = null
const router = new Router({
onKeetMessage: (author, text) => { received = { author, text } }
})
const ok = router.routeToKeet('alice', 'hello')
t.ok(ok)
t.is(received.author, 'alice')
t.is(received.text, 'hello')
})
test('Router - route to external', (t) => {
let received = null
const router = new Router({
onExternalMessage: (author, text) => { received = { author, text } }
})
const ok = router.routeToExternal('bob', 'world')
t.ok(ok)
t.is(received.author, 'bob')
t.is(received.text, 'world')
})
test('Router - dedup identical messages', (t) => {
let count = 0
const router = new Router({
onKeetMessage: () => { count++ }
})
router.routeToKeet('alice', 'hello')
router.routeToKeet('alice', 'hello')
router.routeToKeet('alice', 'hello')
t.is(count, 1)
})
test('Router - different messages not deduped', (t) => {
let count = 0
const router = new Router({
onKeetMessage: () => { count++ }
})
router.routeToKeet('alice', 'msg 1')
router.routeToKeet('alice', 'msg 2')
router.routeToKeet('bob', 'msg 1')
t.is(count, 3)
})
test('Router - cross-direction dedup', (t) => {
let keetCount = 0
let extCount = 0
const router = new Router({
onKeetMessage: () => { keetCount++ },
onExternalMessage: () => { extCount++ }
})
router.routeToKeet('alice', 'echo test')
router.routeToExternal('alice', 'echo test')
t.is(keetCount, 1)
t.is(extCount, 0) // blocked by dedup
})
test('Router - seenCount and clearSeen', (t) => {
const router = new Router()
router.routeToKeet('a', '1')
router.routeToKeet('b', '2')
t.is(router.seenCount, 2)
router.clearSeen()
t.is(router.seenCount, 0)
})