First commit

This commit is contained in:
2025-10-08 11:12:59 -04:00
commit b0605a28a9
820 changed files with 100317 additions and 0 deletions

View File

@ -0,0 +1,82 @@
'use strict'
const { test } = require('tap')
const enqueue = require('../../../../lib/client/request-queue/enqueue')
test('rejects new requests if size is exceeded', async t => {
const q = { _queue: { size: 5 }, size: 5 }
const result = enqueue.call(q, 'foo', 'bar', {}, {})
t.notOk(result)
})
test('rejects new requests if queue is frozen', async t => {
const q = { _queue: { size: 0 }, size: 5, _frozen: true }
const result = enqueue.call(q, 'foo', 'bar', {}, {})
t.notOk(result)
})
test('adds a request and returns if no timeout', async t => {
const q = {
_queue: {
size: 0,
add (obj) {
t.same(obj, {
message: 'foo',
expect: 'bar',
emitter: 'baz',
cb: 'bif'
})
}
},
_frozen: false,
timeout: 0
}
const result = enqueue.call(q, 'foo', 'bar', 'baz', 'bif')
t.ok(result)
})
test('adds a request and returns timer not set', async t => {
const q = {
_queue: {
size: 0,
add (obj) {
t.same(obj, {
message: 'foo',
expect: 'bar',
emitter: 'baz',
cb: 'bif'
})
}
},
_frozen: false,
timeout: 100,
_timer: null
}
const result = enqueue.call(q, 'foo', 'bar', 'baz', 'bif')
t.ok(result)
})
test('adds a request, returns true, and clears queue', t => {
// Must not be an async test due to an internal `setTimeout`
t.plan(4)
const q = {
_queue: {
size: 0,
add (obj) {
t.same(obj, {
message: 'foo',
expect: 'bar',
emitter: 'baz',
cb: 'bif'
})
}
},
_frozen: false,
timeout: 5,
_timer: 123,
freeze () { t.pass() },
purge () { t.pass() }
}
const result = enqueue.call(q, 'foo', 'bar', 'baz', 'bif')
t.ok(result)
})

View File

@ -0,0 +1,51 @@
'use strict'
const { test } = require('tap')
const flush = require('../../../../lib/client/request-queue/flush')
test('clears timer', async t => {
t.plan(2)
const q = {
_timer: 123,
_queue: {
values () {
return []
},
clear () {
t.pass()
}
}
}
flush.call(q)
t.equal(q._timer, null)
})
test('invokes callback with parameters', async t => {
t.plan(6)
const req = {
message: 'foo',
expect: 'bar',
emitter: 'baz',
cb: theCB
}
const q = {
_timer: 123,
_queue: {
values () {
return [req]
},
clear () {
t.pass()
}
}
}
flush.call(q, (message, expect, emitter, cb) => {
t.equal(message, 'foo')
t.equal(expect, 'bar')
t.equal(emitter, 'baz')
t.equal(cb, theCB)
})
t.equal(q._timer, null)
function theCB () {}
})

View File

@ -0,0 +1,18 @@
'use strict'
const { test } = require('tap')
const purge = require('../../../../lib/client/request-queue/purge')
test('flushes the queue with timeout errors', async t => {
t.plan(3)
const q = {
flush (func) {
func('a', 'b', 'c', (err) => {
t.ok(err)
t.equal(err.name, 'TimeoutError')
t.equal(err.message, 'request queue timeout')
})
}
}
purge.call(q)
})