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(); + }); +});