Spaces:
Running
Running
/** | |
* Tests for the username-prefixes chat plugin. | |
* @author Annika | |
*/ | |
; | |
const assert = require('assert').strict; | |
const { PrefixManager } = require('../../../dist/server/chat-plugins/username-prefixes'); | |
const PREFIX_DURATION = 10 * 24 * 60 * 60 * 1000; | |
describe('PrefixManager', function () { | |
beforeEach(() => { | |
this.prefixManager = new PrefixManager(); | |
Config.forcedprefixes = []; | |
}); | |
it('Config.forcedprefixes should reflect prefix additions and removals', () => { | |
this.prefixManager.addPrefix('forcedpublic', 'privacy'); | |
this.prefixManager.addPrefix('nomodchat', 'modchat'); | |
assert(Config.forcedprefixes.find(x => x.prefix === 'forcedpublic' && x.type === 'privacy')); | |
assert(Config.forcedprefixes.find(x => x.prefix === 'nomodchat' && x.type === 'modchat')); | |
this.prefixManager.removePrefix('forcedpublic', 'privacy'); | |
this.prefixManager.removePrefix('nomodchat', 'modchat'); | |
assert(!Config.forcedprefixes.find(x => x.prefix === 'forcedpublic' && x.type === 'privacy')); | |
assert(!Config.forcedprefixes.find(x => x.prefix === 'nomodchat' && x.type === 'modchat')); | |
}); | |
it('should not overwrite manually specified prefixes', () => { | |
const time = Date.now() + PREFIX_DURATION; | |
Config.forcedprefixes = [{ prefix: 'manual', type: 'modchat', expireAt: time }]; | |
this.prefixManager.addPrefix('nomodchat', 'modchat'); | |
assert.deepEqual(Config.forcedprefixes, [ | |
{ prefix: 'manual', type: 'modchat', expireAt: time }, | |
{ prefix: 'nomodchat', type: 'modchat', expireAt: Config.forcedprefixes.find(x => x.prefix === 'nomodchat').expireAt }, | |
]); | |
}); | |
it('should correctly validate prefix types', () => { | |
assert.doesNotThrow(() => this.prefixManager.validateType('privacy')); | |
assert.doesNotThrow(() => this.prefixManager.validateType('modchat')); | |
assert.throws(() => this.prefixManager.validateType('gibberish')); | |
assert.throws(() => this.prefixManager.validateType('')); | |
}); | |
}); | |