8
0
Просмотр исходного кода

Merge pull request #15 from cksource/t/9

t/9: Introduced the Editor class, CKEDITOR.create and CKEDITOR.instances.
Piotrek Reinmar Koszuliński 11 лет назад
Родитель
Сommit
4734241dc1

+ 2 - 0
packages/ckeditor5-utils/tests/ckeditor/ckeditor.html

@@ -0,0 +1,2 @@
+<div id="content"></div>
+<div class="editor"></div>

+ 97 - 0
packages/ckeditor5-utils/tests/ckeditor/ckeditor.js

@@ -0,0 +1,97 @@
+/**
+ * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
+ * For licensing, see LICENSE.md.
+ */
+
+/* globals describe, it, expect, beforeEach, document */
+
+'use strict';
+
+var modules = bender.amd.require( 'ckeditor', 'editor', 'promise' );
+
+var content = document.getElementById( 'content' );
+
+beforeEach( function() {
+	var CKEDITOR = modules.ckeditor;
+
+	// Destroy all editor instances.
+	while ( CKEDITOR.instances.length ) {
+		CKEDITOR.instances.get( 0 ).destroy();
+	}
+} );
+
+describe( 'create', function() {
+	it( 'should return a promise', function() {
+		var CKEDITOR = modules.ckeditor;
+		var Promise = modules.promise;
+
+		expect( CKEDITOR.create( content ) ).to.be.instanceof( Promise );
+	} );
+
+	it( 'should create a new editor instance', function() {
+		var CKEDITOR = modules.ckeditor;
+		var Editor = modules.editor;
+
+		return CKEDITOR.create( content ).then( function( editor ) {
+			expect( editor ).to.be.instanceof( Editor );
+			expect( editor.element ).to.equal( content );
+		} );
+	} );
+
+	it( 'should create a new editor instance (using a selector)', function() {
+		var CKEDITOR = modules.ckeditor;
+		var Editor = modules.editor;
+
+		return CKEDITOR.create( '.editor' ).then( function( editor ) {
+			expect( editor ).to.be.instanceof( Editor );
+			expect( editor.element ).to.equal( document.querySelector( '.editor' ) );
+		} );
+	} );
+
+	it( 'should add the editor to the `instances` collection', function() {
+		var CKEDITOR = modules.ckeditor;
+
+		return CKEDITOR.create( content ).then( function( editor ) {
+			expect( CKEDITOR.instances ).to.have.length( 1 );
+			expect( CKEDITOR.instances.get( 0 ) ).to.equal( editor );
+		} );
+	} );
+
+	it( 'should remove the editor from the `instances` collection on `destroy` event', function() {
+		var CKEDITOR = modules.ckeditor;
+		var editor1, editor2;
+
+		// Create the first editor.
+		return CKEDITOR.create( content ).then( function( editor ) {
+			editor1 = editor;
+
+			// Create the second editor.
+			return CKEDITOR.create( '.editor' ).then( function( editor ) {
+				editor2 = editor;
+
+				// It should have 2 editors.
+				expect( CKEDITOR.instances ).to.have.length( 2 );
+
+				// Destroy one of them.
+				editor1.destroy();
+
+				// It should have 1 editor now.
+				expect( CKEDITOR.instances ).to.have.length( 1 );
+
+				// Ensure that the remaining is the right one.
+				expect( CKEDITOR.instances.get( 0 ) ).to.equal( editor2 );
+			} );
+		} );
+	} );
+
+	it( 'should be rejected on element not found', function() {
+		var CKEDITOR = modules.ckeditor;
+
+		return CKEDITOR.create( '.undefined' ).then( function() {
+			throw new Error( 'It should not enter this function' );
+		} ).catch( function( error ) {
+			expect( error ).to.be.instanceof( Error );
+			expect( error.message ).to.equal( 'Element not found' );
+		} );
+	} );
+} );