mirror of
https://github.com/fluencelabs/js-libp2p-interfaces
synced 2025-05-03 21:32:29 +00:00
70 lines
1.5 KiB
JavaScript
70 lines
1.5 KiB
JavaScript
|
/* eslint-env mocha */
|
||
|
'use strict'
|
||
|
|
||
|
const chai = require('chai')
|
||
|
const { expect } = chai
|
||
|
const sinon = require('sinon')
|
||
|
|
||
|
const uint8ArrayFromString = require('uint8arrays/from-string')
|
||
|
|
||
|
const topic = 'foo'
|
||
|
const data = uint8ArrayFromString('bar')
|
||
|
const shouldNotHappen = (_) => expect.fail()
|
||
|
|
||
|
module.exports = (common) => {
|
||
|
describe('emit self', () => {
|
||
|
let pubsub
|
||
|
|
||
|
describe('enabled', () => {
|
||
|
before(async () => {
|
||
|
[pubsub] = await common.setup(1, { emitSelf: true })
|
||
|
})
|
||
|
|
||
|
before(() => {
|
||
|
pubsub.start()
|
||
|
pubsub.subscribe(topic)
|
||
|
})
|
||
|
|
||
|
after(async () => {
|
||
|
sinon.restore()
|
||
|
pubsub && pubsub.stop()
|
||
|
await common.teardown()
|
||
|
})
|
||
|
|
||
|
it('should emit to self on publish', () => {
|
||
|
const promise = new Promise((resolve) => pubsub.once(topic, resolve))
|
||
|
|
||
|
pubsub.publish(topic, data)
|
||
|
|
||
|
return promise
|
||
|
})
|
||
|
})
|
||
|
|
||
|
describe('disabled', () => {
|
||
|
before(async () => {
|
||
|
[pubsub] = await common.setup(1, { emitSelf: false })
|
||
|
})
|
||
|
|
||
|
before(() => {
|
||
|
pubsub.start()
|
||
|
pubsub.subscribe(topic)
|
||
|
})
|
||
|
|
||
|
after(async () => {
|
||
|
sinon.restore()
|
||
|
pubsub && pubsub.stop()
|
||
|
await common.teardown()
|
||
|
})
|
||
|
|
||
|
it('should not emit to self on publish', () => {
|
||
|
pubsub.once(topic, (m) => shouldNotHappen)
|
||
|
|
||
|
pubsub.publish(topic, data)
|
||
|
|
||
|
// Wait 1 second to guarantee that self is not noticed
|
||
|
return new Promise((resolve) => setTimeout(() => resolve(), 1000))
|
||
|
})
|
||
|
})
|
||
|
})
|
||
|
}
|