From 5c9b6eb078372a85ba65bcbe8e77a453eb9a380d Mon Sep 17 00:00:00 2001 From: "F. Eugene Aumson" Date: Wed, 16 Sep 2020 19:11:24 -0400 Subject: [PATCH] Add tests of class RfqMakerBlacklist Addresses review comment https://github.com/0xProject/0x-monorepo/pull/2706#pullrequestreview-489852363 --- .../test/rfq_maker_blacklist_test.ts | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 packages/asset-swapper/test/rfq_maker_blacklist_test.ts diff --git a/packages/asset-swapper/test/rfq_maker_blacklist_test.ts b/packages/asset-swapper/test/rfq_maker_blacklist_test.ts new file mode 100644 index 0000000000..50a1f5d01d --- /dev/null +++ b/packages/asset-swapper/test/rfq_maker_blacklist_test.ts @@ -0,0 +1,40 @@ +import * as chai from 'chai'; +import 'mocha'; + +import { constants } from '../src/constants'; +import { RfqMakerBlacklist } from '../src/utils/rfq_maker_blacklist'; + +import { chaiSetup } from './utils/chai_setup'; + +chaiSetup.configure(); +const expect = chai.expect; + +describe('RfqMakerBlacklist', () => { + it('does blacklist', async () => { + const blacklistDurationMinutes = 1; + const timeoutStreakThreshold = 3; + const blacklist = new RfqMakerBlacklist(blacklistDurationMinutes, timeoutStreakThreshold); + blacklist.logTimeoutOrLackThereof('makerA', true); + blacklist.logTimeoutOrLackThereof('makerA', true); + expect(blacklist.isMakerBlacklisted('makerA')).to.be.false(); + blacklist.logTimeoutOrLackThereof('makerA', true); + const sleepTimeMs = 10; + await new Promise(r => { + setTimeout(r, sleepTimeMs); + }); + expect(blacklist.isMakerBlacklisted('makerA')).to.be.true(); + }); + it('does unblacklist', async () => { + const blacklistDurationMinutes = 0.1; + const timeoutStreakThreshold = 3; + const blacklist = new RfqMakerBlacklist(blacklistDurationMinutes, timeoutStreakThreshold); + blacklist.logTimeoutOrLackThereof('makerA', true); + blacklist.logTimeoutOrLackThereof('makerA', true); + blacklist.logTimeoutOrLackThereof('makerA', true); + expect(blacklist.isMakerBlacklisted('makerA')).to.be.true(); + await new Promise(r => { + setTimeout(r, blacklistDurationMinutes * constants.ONE_MINUTE_MS); + }); + expect(blacklist.isMakerBlacklisted('makerA')).to.be.false(); + }); +});