Jelajahi Sumber

Tests: Updated tests for EditableUIView and InlineEditableUIView.

Aleksander Nowodzinski 9 tahun lalu
induk
melakukan
672dfd7edf

+ 41 - 44
packages/ckeditor5-ui/tests/editableui/editableuiview.js

@@ -7,7 +7,6 @@
 
 'use strict';
 
-import CKEditorError from '/ckeditor5/utils/ckeditorerror.js';
 import EditableUIView from '/ckeditor5/ui/editableui/editableuiview.js';
 import Model from '/ckeditor5/ui/model.js';
 import Locale from '/ckeditor5/utils/locale.js';
@@ -18,71 +17,69 @@ describe( 'EditableUIView', () => {
 	beforeEach( () => {
 		model = new Model( { isEditable: true, isFocused: false } );
 		locale = new Locale( 'en' );
-		view = new EditableUIView( model ,locale );
+		view = new EditableUIView( model, locale );
 		editableElement = document.createElement( 'div' );
 
 		return view.init();
 	} );
 
-	describe( 'setEditableElement', () => {
-		it( 'sets the editableElement property', () => {
-			view.setEditableElement( editableElement );
+	describe( 'constructor', () => {
+		it( 'renders element from template when no editableElement', () => {
+			view = new EditableUIView( model, locale );
+			view.init();
 
-			expect( view ).to.have.property( 'editableElement', editableElement );
+			expect( view.element ).to.equal( view.editableElement );
+			expect( view.element.classList.contains( 'ck-editor__editable' ) ).to.be.true;
 		} );
 
-		it( 'throws when trying to use it twice', () => {
-			view.setEditableElement( editableElement );
+		it( 'accepts editableElement as an argument', () => {
+			view = new EditableUIView( model, locale, editableElement );
+			view.init();
 
-			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' );
+			expect( view.element ).to.equal( editableElement );
+			expect( view.element ).to.equal( view.editableElement );
+			expect( view.element.classList.contains( 'ck-editor__editable' ) ).to.be.true;
 		} );
+	} );
 
-		it( 'sets the contentEditable attribute to model.isEditable', () => {
-			view.setEditableElement( editableElement );
-
-			expect( editableElement.classList.contains( 'ck-blurred' ) ).to.be.true;
+	describe( 'View bindings', () => {
+		describe( 'class', () => {
+			it( 'has initial value set', () => {
+				expect( view.element.classList.contains( 'ck-blurred' ) ).to.be.true;
+				expect( view.element.classList.contains( 'ck-focused' ) ).to.be.false;
+			} );
 
-			model.isFocused = true;
+			it( 'reacts on model.isFocused', () => {
+				model.isFocused = true;
 
-			expect( editableElement.classList.contains( 'ck-focused' ) ).to.be.true;
+				expect( view.element.classList.contains( 'ck-blurred' ) ).to.be.false;
+				expect( view.element.classList.contains( 'ck-focused' ) ).to.be.true;
+			} );
 		} );
 
-		it( 'sets proper accessibility role on the editableElement', () => {
-			view.setEditableElement( editableElement );
-
-			expect( editableElement.attributes.getNamedItem( 'role' ).value ).to.equal( 'textbox' );
-		} );
+		describe( 'contenteditable', () => {
+			it( 'has initial value set', () => {
+				expect( view.element.attributes.getNamedItem( 'contenteditable' ).value ).to.equal( 'true' );
+			} );
 
-		it( 'sets proper ARIA label on the editableElement', () => {
-			view.setEditableElement( editableElement );
+			it( 'reacts on model.isEditable', () => {
+				model.isEditable = false;
 
-			expect( editableElement.attributes.getNamedItem( 'aria-label' ).value ).to.be.a( 'string' );
+				expect( view.element.attributes.getNamedItem( 'contenteditable' ).value ).to.equal( 'false' );
+			} );
 		} );
+	} );
 
-		it( 'sets proper title on the editableElement', () => {
-			view.setEditableElement( editableElement );
+	describe( 'destroy', () => {
+		it( 'updates contentEditable property of editableElement', () => {
+			view = new EditableUIView( model, locale, editableElement );
+			view.init();
 
-			expect( editableElement.attributes.getNamedItem( 'title' ).value ).to.be.a( 'string' );
-		} );
+			expect( view.editableElement.contentEditable ).to.equal( 'true' );
 
-		it( 'sets proper class name of the editableElement', () => {
-			view.setEditableElement( editableElement );
+			view.destroy();
 
-			expect( editableElement.classList.contains( 'ck-editor__editable' ) ).to.be.true;
+			expect( view.editableElement.contentEditable ).to.equal( 'false' );
 		} );
 	} );
 } );

+ 12 - 22
packages/ckeditor5-ui/tests/editableui/inline/inlineeditableuiview.js

@@ -33,40 +33,30 @@ describe( 'InlineEditableUIView', () => {
 		} );
 
 		it( 'accepts editableElement', () => {
-			view = new InlineEditableUIView( null, null, editableElement );
+			view = new InlineEditableUIView( model, locale, editableElement );
 
 			expect( view.element ).to.equal( editableElement );
 		} );
 
-		it( 'accepts editableElement and does not render template', () => {
-			view = new InlineEditableUIView( null, null, editableElement );
-
-			expect( view.templete ).to.be.undefined;
-			expect( view.element ).to.equal( editableElement );
-		} );
-
 		it( 'creates view#element from template when no editableElement provided', () => {
 			expect( view.template ).to.be.an( 'object' );
 		} );
-	} );
 
-	describe( 'init', () => {
-		it( 'calls setEditableElement', () => {
-			const element = view.element;
-
-			expect( element ).to.equal( view.editableElement );
-			expect( element.classList.contains( 'ck-editor__editable' ) ).to.be.true;
-			expect( element.classList.contains( 'ck-editor__editable_inline' ) ).to.be.true;
+		it( 'sets proper accessibility role on the editableElement', () => {
+			expect( view.element.attributes.getNamedItem( 'role' ).value ).to.equal( 'textbox' );
 		} );
-	} );
 
-	describe( 'destroy', () => {
-		it( 'disables contenteditability of the view element', () => {
-			expect( view.editableElement.contentEditable ).to.equal( 'true' );
+		it( 'sets proper ARIA label on the editableElement', () => {
+			expect( view.element.attributes.getNamedItem( 'aria-label' ).value ).to.be.a( 'string' );
+		} );
 
-			view.destroy();
+		it( 'sets proper title on the editableElement', () => {
+			expect( view.element.attributes.getNamedItem( 'title' ).value ).to.be.a( 'string' );
+		} );
 
-			expect( view.editableElement.contentEditable ).to.equal( 'false' );
+		it( 'sets proper class name of the editableElement', () => {
+			expect( view.element.classList.contains( 'ck-editor__editable' ) ).to.be.true;
+			expect( view.element.classList.contains( 'ck-editor__editable_inline' ) ).to.be.true;
 		} );
 	} );
 } );