tests for plugins
This commit is contained in:
		
							
								
								
									
										92
									
								
								test/test-plugins.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										92
									
								
								test/test-plugins.html
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,92 @@ | ||||
| <!doctype html> | ||||
| <html lang="en"> | ||||
|  | ||||
| 	<head> | ||||
| 		<meta charset="utf-8"> | ||||
|  | ||||
| 		<title>reveal.js - Test Plugins</title> | ||||
|  | ||||
| 		<link rel="stylesheet" href="../css/reveal.css"> | ||||
| 		<link rel="stylesheet" href="qunit-2.5.0.css"> | ||||
| 	</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="../js/reveal.js"></script> | ||||
| 		<script src="qunit-2.5.0.js"></script> | ||||
|  | ||||
| 		<script> | ||||
|  | ||||
| 			QUnit.module( 'Plugins' ); | ||||
|  | ||||
| 			var initCounter = { PluginB: 0, PluginC: 0, PluginD: 0 }; | ||||
|  | ||||
| 			// Plugin with no init method | ||||
| 			var PluginA = {}; | ||||
|  | ||||
| 			// Plugin with init method | ||||
| 			var PluginB = { init: function() { | ||||
| 				initCounter['PluginB'] += 1; | ||||
| 			} }; | ||||
|  | ||||
| 			// Async plugin with init method | ||||
| 			var PluginC = { init: function() { | ||||
| 				return new Promise(function( resolve ) { | ||||
| 					setTimeout( () => { | ||||
| 						initCounter['PluginC'] += 1; | ||||
| 						resolve(); | ||||
| 					}, 1000 ); | ||||
| 				}); | ||||
| 			} }; | ||||
|  | ||||
| 			// Plugin initialized after reveal.js is ready | ||||
| 			var PluginD = { init: function() { | ||||
| 				initCounter['PluginD'] += 1; | ||||
| 			} }; | ||||
|  | ||||
| 			Reveal.registerPlugin( 'PluginA', PluginA ); | ||||
| 			Reveal.registerPlugin( 'PluginB', PluginB ); | ||||
| 			Reveal.registerPlugin( 'PluginC', PluginC ); | ||||
|  | ||||
| 			Reveal.initialize(); | ||||
|  | ||||
| 			QUnit.test( 'Can initialize synchronously', function( assert ) { | ||||
| 				assert.strictEqual( initCounter['PluginB'], 1 ); | ||||
|  | ||||
| 				Reveal.registerPlugin( 'PluginB', PluginB ); | ||||
|  | ||||
| 				assert.strictEqual( initCounter['PluginB'], 1, 'prevents duplicate registration' ); | ||||
| 			}); | ||||
|  | ||||
| 			QUnit.test( 'Can initialie asynchronously', function( assert ) { | ||||
| 				assert.expect( 3 ); | ||||
| 				var done = assert.async( 2 ); | ||||
|  | ||||
| 				assert.strictEqual( initCounter['PluginC'], 0, 'async plugin not immediately initialized' ); | ||||
|  | ||||
| 				Reveal.addEventListener( 'ready', function() { | ||||
| 					assert.strictEqual( initCounter['PluginC'], 1, 'finsihed initializing when reveal.js dispatches "ready"' ); | ||||
| 					done(); | ||||
|  | ||||
| 					Reveal.registerPlugin( 'PluginD', PluginD ); | ||||
| 					assert.strictEqual( initCounter['PluginD'], 1, 'plugin registered after reveal.js is ready still initiailizes' ); | ||||
| 					done(); | ||||
| 				}); | ||||
| 			} ); | ||||
| 		</script> | ||||
|  | ||||
| 	</body> | ||||
| </html> | ||||
		Reference in New Issue
	
	Block a user