'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 () {}
})