Browse Source

Added tests for the EditableView.

Piotrek Koszuliński 9 years ago
parent
commit
3269153c51

+ 2 - 0
packages/ckeditor5-engine/tests/creator/creator.js

@@ -3,6 +3,8 @@
  * For licensing, see LICENSE.md.
  */
 
+/* bender-tags: creator */
+
 'use strict';
 
 import testUtils from '/tests/_utils/utils.js';

+ 2 - 0
packages/ckeditor5-engine/tests/editable/editable.js

@@ -3,6 +3,8 @@
  * For licensing, see LICENSE.md.
  */
 
+/* bender-tags: editable */
+
 'use strict';
 
 import Editor from '/ckeditor5/core/editor.js';

+ 66 - 0
packages/ckeditor5-engine/tests/editable/editableview.js

@@ -0,0 +1,66 @@
+/**
+ * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved.
+ * For licensing, see LICENSE.md.
+ */
+
+/* bender-tags: editable */
+
+'use strict';
+
+import CKEditorError from '/ckeditor5/core/ckeditorerror.js';
+import EditableView from '/ckeditor5/core/editable/editableview.js';
+import Model from '/ckeditor5/core/ui/model.js';
+
+describe( 'EditableView', () => {
+	let model, view, editableElement;
+
+	beforeEach( () => {
+		model = new Model( { isEditable: true, isFocused: false } );
+		view = new EditableView( model );
+		editableElement = document.createElement( 'div' );
+
+		return view.init();
+	} );
+
+	describe( 'setEditableElement', () => {
+		it( 'sets the editableElement property', () => {
+			view.setEditableElement( editableElement );
+
+			expect( view ).to.have.property( 'editableElement', editableElement );
+		} );
+
+		it( 'throws when trying to use it twice', () => {
+			view.setEditableElement( editableElement );
+
+			expect( view ).to.have.property( 'editableElement', editableElement );
+
+			expect( () => {
+				view.setEditableElement( editableElement );
+			} ).to.throw( CKEditorError, /^editableview-cannot-override-editableelement/ );
+		} );
+
+		it( 'sets the contentEditable attribute to model.isEditable', () => {
+			view.setEditableElement( editableElement );
+
+			expect( editableElement.contentEditable ).to.equal( 'true' );
+
+			model.isEditable = false;
+
+			expect( editableElement.contentEditable ).to.equal( 'false' );
+		} );
+
+		it( 'sets the model.isFocused based on element#focus and element#blur events', () => {
+			view.setEditableElement( editableElement );
+
+			expect( model.isFocused ).to.equal( false );
+
+			editableElement.dispatchEvent( new Event( 'focus' ) );
+
+			expect( model.isFocused ).to.equal( true );
+
+			editableElement.dispatchEvent( new Event( 'blur' ) );
+
+			expect( model.isFocused ).to.equal( false );
+		} );
+	} );
+} );

+ 2 - 0
packages/ckeditor5-engine/tests/editor/creator.js

@@ -5,6 +5,8 @@
 
 'use strict';
 
+/* bender-tags: editor, creator */
+
 import amdUtils from '/tests/_utils/amd.js';
 import testUtils from '/tests/_utils/utils.js';
 import coreTestUtils from '/tests/core/_utils/utils.js';

+ 2 - 0
packages/ckeditor5-engine/tests/editor/editor.js

@@ -5,6 +5,8 @@
 
 'use strict';
 
+/* bender-tags: editor */
+
 import amdUtils from '/tests/_utils/amd.js';
 import coreTestUtils from '/tests/core/_utils/utils.js';
 import Editor from '/ckeditor5/core/editor.js';