8
0
Prechádzať zdrojové kódy

Remember about stopping fn execution after rejecting a promise.

Piotrek Koszuliński 10 rokov pred
rodič
commit
8a5e23a57d

+ 1 - 1
packages/ckeditor5-engine/src/ckeditor.js

@@ -49,7 +49,7 @@ CKEDITOR.define( [ 'editor', 'collection', 'promise', 'config' ], function( Edit
 					element = document.querySelector( element );
 
 					if ( !element ) {
-						reject( new Error( 'Element not found' ) );
+						return reject( new Error( 'Element not found' ) );
 					}
 				}
 

+ 7 - 0
packages/ckeditor5-engine/tests/ckeditor/ckeditor.js

@@ -13,6 +13,8 @@ var modules = bender.amd.require( 'ckeditor', 'editor', 'promise', 'config' );
 var content = document.getElementById( 'content' );
 var editorConfig = { plugins: 'creator-test' };
 
+bender.tools.createSinonSandbox();
+
 before( function() {
 	bender.tools.core.defineEditorCreatorMock( 'test' );
 } );
@@ -101,11 +103,16 @@ describe( 'create', function() {
 	it( 'should be rejected on element not found', function() {
 		var CKEDITOR = modules.ckeditor;
 
+		var addSpy = bender.sinon.spy( CKEDITOR.instances, 'add' );
+
 		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' );
+			// We need to make sure that create()'s execution is stopped.
+			// Assertion based on a real mistake we made that reject() wasn't followed by a return.
+			sinon.assert.notCalled( addSpy );
 		} );
 	} );
 } );