77 lines
2.2 KiB
JavaScript
77 lines
2.2 KiB
JavaScript
|
const VoteskipModule = require('../../lib/channel/voteskip');
|
||
|
const assert = require('assert');
|
||
|
|
||
|
describe('VoteskipModule', () => {
|
||
|
describe('#update', () => {
|
||
|
let fakeUser = {
|
||
|
socket: {
|
||
|
emit() {
|
||
|
|
||
|
}
|
||
|
},
|
||
|
is() {
|
||
|
return false
|
||
|
}
|
||
|
};
|
||
|
let fakeChannel = {
|
||
|
logger: {
|
||
|
log() {
|
||
|
|
||
|
}
|
||
|
},
|
||
|
modules: {
|
||
|
permissions: {
|
||
|
canSeeVoteskipResults() {
|
||
|
return true;
|
||
|
},
|
||
|
canVoteskip() {
|
||
|
return true;
|
||
|
}
|
||
|
},
|
||
|
options: {
|
||
|
get(key) {
|
||
|
if (key === 'voteskip_ratio') {
|
||
|
return 0.5;
|
||
|
} else if (key === 'allow_voteskip') {
|
||
|
return true;
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
playlist: {
|
||
|
meta: {
|
||
|
count: 1
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
users: [fakeUser]
|
||
|
};
|
||
|
|
||
|
let voteskipModule = new VoteskipModule(fakeChannel);
|
||
|
|
||
|
it('resets the vote before changing to the next video', () => {
|
||
|
let reset = false, playNext = false;
|
||
|
fakeChannel.modules.playlist._playNext = () => {
|
||
|
if (!reset) {
|
||
|
assert(false, 'Expected voteskip reset prior to playlist._playNext');
|
||
|
}
|
||
|
|
||
|
playNext = true;
|
||
|
};
|
||
|
fakeUser.socket.emit = (event, data) => {
|
||
|
if (event === 'voteskip') {
|
||
|
assert.deepEqual(data, { count: 0, need: 0 });
|
||
|
reset = true;
|
||
|
}
|
||
|
};
|
||
|
|
||
|
voteskipModule.poll = {
|
||
|
counts: [1]
|
||
|
};
|
||
|
voteskipModule.update();
|
||
|
assert.equal(voteskipModule.poll, false, 'Expected voteskip poll to be reset to false');
|
||
|
assert(reset, 'Expected voteskip to be reset');
|
||
|
assert(playNext, 'Expected playlist to be advanced');
|
||
|
});
|
||
|
});
|
||
|
});
|