1
0
Fork 0
why-cant-we-deploy-today/test/test-plugins.html

126 lines
3.2 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>reveal.js - Test Plugins</title>
<link rel="stylesheet" href="../dist/reveal.css" />
<link rel="stylesheet" href="../node_modules/qunit/qunit/qunit.css" />
<script src="../node_modules/qunit/qunit/qunit.js"></script>
</head>
<body style="overflow: auto">
<div id="qunit"></div>
<div id="qunit-fixture"></div>
<div class="reveal" style="display: none">
<div class="slides">
<section>Slide content</section>
</div>
</div>
<script src="../dist/reveal.js"></script>
<script>
QUnit.config.testTimeout = 30000;
QUnit.module("Plugins");
var initCounter = { PluginB: 0, PluginC: 0, PluginD: 0 };
// Plugin with no init method
var PluginA = { id: "PluginA" };
// Plugin with init method
var PluginB = {
id: "PluginB",
init: function () {
initCounter["PluginB"] += 1;
},
};
// Async plugin with init method
var PluginC = {
id: "PluginC",
init: function () {
return new Promise(function (resolve) {
setTimeout(() => {
initCounter["PluginC"] += 1;
resolve();
}, 1000);
});
},
};
// Plugin initialized after reveal.js is ready
var PluginD = {
id: "PluginD",
init: function () {
initCounter["PluginD"] += 1;
},
};
var PluginE = { id: "PluginE" };
var reveal = new Reveal(document.querySelector(".reveal"), {
plugins: [PluginA],
});
reveal.registerPlugin(PluginB);
reveal.registerPlugin(PluginC);
reveal.initialize();
QUnit.test("Can initialize synchronously", function (assert) {
assert.strictEqual(initCounter["PluginB"], 1);
reveal.registerPlugin(PluginB);
assert.strictEqual(
initCounter["PluginB"],
1,
"prevents duplicate registration"
);
});
QUnit.test("Can initialize asynchronously", function (assert) {
assert.expect(3);
var done = assert.async(2);
assert.strictEqual(
initCounter["PluginC"],
0,
"async plugin not immediately initialized"
);
reveal.on("ready", function () {
assert.strictEqual(
initCounter["PluginC"],
1,
'finsihed initializing when reveal.js dispatches "ready"'
);
done();
reveal.registerPlugin(PluginD);
assert.strictEqual(
initCounter["PluginD"],
1,
"plugin registered after reveal.js is ready still initiailizes"
);
done();
});
});
QUnit.test("Can check if plugin is registered", function (assert) {
assert.strictEqual(reveal.hasPlugin("PluginA"), true);
assert.strictEqual(reveal.hasPlugin("PluginE"), false);
reveal.registerPlugin(PluginE);
assert.strictEqual(reveal.hasPlugin("PluginE"), true);
});
QUnit.test("Can retrieve plugin instance", function (assert) {
assert.strictEqual(reveal.getPlugin("PluginB"), PluginB);
});
</script>
</body>
</html>