1
0
mirror of https://github.com/oceanprotocol-archive/squid-js.git synced 2024-02-02 15:31:51 +01:00
squid-js/test/keeper/EventHandler.test.ts

91 lines
2.6 KiB
TypeScript
Raw Normal View History

2019-06-20 00:20:09 +02:00
import { assert, expect, spy, use } from 'chai'
import * as spies from 'chai-spies'
import { EventHandler } from '../../src/keeper/EventHandler'
import { Ocean } from '../../src/ocean/Ocean'
import config from '../config'
use(spies)
2019-06-20 00:20:09 +02:00
describe('EventHandler', () => {
let ocean: Ocean
let eventHandler: EventHandler
before(async () => {
ocean = await Ocean.getInstance(config)
2019-03-21 03:17:36 +01:00
eventHandler = new EventHandler((ocean as any).instanceConfig)
})
afterEach(() => {
spy.restore()
})
2019-06-20 00:20:09 +02:00
describe('#subscribe()', () => {
it('should subscribe to an event', async () => {
const countBefore = eventHandler.count
2019-03-21 03:17:36 +01:00
const subscription = eventHandler.subscribe(() => null)
assert.isDefined(subscription)
const countAfter = eventHandler.count
2019-06-20 00:20:09 +02:00
assert.equal(
countBefore + 1,
countAfter,
'The event seems not added.'
)
2019-03-21 03:17:36 +01:00
subscription.unsubscribe()
})
2019-06-20 00:20:09 +02:00
it('should unsubscribe using the subscription', async () => {
const countBefore = eventHandler.count
2019-03-21 03:17:36 +01:00
const subscription = eventHandler.subscribe(() => null)
assert.isDefined(subscription)
subscription.unsubscribe()
const countAfter = eventHandler.count
2019-06-20 00:20:09 +02:00
assert.equal(countBefore, countAfter, 'The event seems not added.')
})
})
2019-06-20 00:20:09 +02:00
describe('#unsubscribe()', () => {
it('should unsubscribe from an event', async () => {
const countBefore = eventHandler.count
2019-03-21 03:17:36 +01:00
const callback = () => null
eventHandler.subscribe(callback)
eventHandler.unsubscribe(callback)
const countAfter = eventHandler.count
2019-06-20 00:20:09 +02:00
assert.equal(
countBefore,
countAfter,
'The event seems not removed.'
)
})
})
2019-06-20 00:20:09 +02:00
describe('#checkBlock()', () => {
it('should call the callback on each new block', async () => {
let blockNumber = 100000000000
const callbackSpy = spy()
2019-06-20 00:20:09 +02:00
spy.on((ocean as any).web3.eth, 'getBlockNumber', () => blockNumber)
const subscription = eventHandler.subscribe(callbackSpy)
2019-06-20 00:20:09 +02:00
await new Promise(_ => setTimeout(_, 300))
expect(callbackSpy).not.to.has.been.called()
blockNumber++
2019-06-20 00:20:09 +02:00
await new Promise(_ => setTimeout(_, 300))
expect(callbackSpy).to.has.been.called.with(blockNumber)
2019-03-21 03:17:36 +01:00
subscription.unsubscribe()
})
})
})