Files
wordpress-theme-aksrt/tests/widget-system/header-multifunction-runtime.test.cjs
T

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);
});