OverviewFilesCommitsIssuesDocsReleasesPeers

hyper-social / bridge-mastodon / test / router.test.js

78 lines · javascript ref:
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)
})