46 lines
1.5 KiB
JavaScript
46 lines
1.5 KiB
JavaScript
'use strict';
|
|
|
|
const assert = require('node:assert/strict');
|
|
const fs = require('node:fs');
|
|
const path = require('node:path');
|
|
const test = require('node:test');
|
|
const vm = require('node:vm');
|
|
const root = path.resolve(__dirname, '../..');
|
|
const runtime = fs.readFileSync(path.join(root, 'assets/js/runtime/main.js'), 'utf8');
|
|
|
|
test('video poster clicks play the same DPlayer instance and reveal its controls', () => {
|
|
const slide = {};
|
|
let played = 0;
|
|
let revealed = false;
|
|
let handler;
|
|
const start = runtime.indexOf("_win.bd.on('click', '.swiper-slide.slide-dplayer");
|
|
const end = runtime.indexOf('//视频列表图封面', start);
|
|
assert.ok(start > -1 && end > start);
|
|
vm.runInNewContext(runtime.slice(start, end), {
|
|
_win: { bd: { on(event, selector, callback) {
|
|
assert.equal(event, 'click');
|
|
assert.equal(selector, '.swiper-slide.slide-dplayer:not(.slide-dplayer-played) > *');
|
|
handler = callback;
|
|
} } },
|
|
jQuery(target) {
|
|
assert.equal(target, slide);
|
|
return {
|
|
find(selector) {
|
|
assert.equal(selector, '.new-dplayer');
|
|
return { data(key) {
|
|
assert.equal(key, 'dplayer');
|
|
return { play() { played++; } };
|
|
} };
|
|
},
|
|
parent() { return { addClass(name) {
|
|
assert.equal(name, 'slide-dplayer-played');
|
|
revealed = true;
|
|
} }; },
|
|
};
|
|
},
|
|
});
|
|
handler.call(slide);
|
|
assert.equal(played, 1);
|
|
assert.equal(revealed, true);
|
|
});
|