Procházet zdrojové kódy

Added some tests to ViewConsumable.

Szymon Kupś před 9 roky
rodič
revize
aab6a20a8c

+ 23 - 0
packages/ckeditor5-engine/tests/treecontroller/viewconsumable.js

@@ -126,31 +126,54 @@ describe( 'ViewConsumable', () => {
 			expect( viewConsumable.test( { element: el, class: 'foobar' } ) ).to.be.true;
 			expect( viewConsumable.test( { element: el, style: 'color' } ) ).to.be.true;
 			expect( viewConsumable.test( { element: el, attribute: 'href', class: 'foobar', style: 'color' } ) ).to.be.true;
+			expect( viewConsumable.test( { element: el, attribute: 'href', class: 'baz' } ) ).to.be.null;
 			expect( viewConsumable.test( el ) ).to.be.null;
+
+			viewConsumable.consume( { element: el, style: 'color' } );
+			expect( viewConsumable.test( { element: el, attribute: 'href', style: 'color' } ) ).to.be.false;
 		} );
 
 		it( 'should allow to test multiple attributes in one call', () => {
 			viewConsumable.add( { element: el, attribute: [ 'href', 'title', 'target' ] } );
 
 			expect( viewConsumable.test( { element: el, attribute: [ 'href', 'title', 'target' ] } ) ).to.be.true;
+			expect( viewConsumable.test( { element: el, attribute: [ 'href', 'title', 'alt' ] } ) ).to.be.null;
+
+			viewConsumable.consume( { element: el, attribute: 'target' } );
+			expect( viewConsumable.test( { element: el, attribute: [ 'href', 'title', 'target' ] } ) ).to.be.false;
 		} );
 
 		it( 'should allow to test multiple classes in one call', () => {
 			viewConsumable.add( { element: el, class: [ 'foo', 'bar', 'baz' ] } );
 
 			expect( viewConsumable.test( { element: el, class: [ 'foo', 'bar', 'baz' ] } ) ).to.be.true;
+			expect( viewConsumable.test( { element: el, class: [ 'foo', 'bar', 'qux' ] } ) ).to.be.null;
+
+			viewConsumable.consume( { element: el, class: 'bar' } );
+			expect( viewConsumable.test( { element: el, class: [ 'foo', 'bar', 'baz' ] } ) ).to.be.false;
 		} );
 
 		it( 'should allow to test multiple styles in one call', () => {
 			viewConsumable.add( { element: el, style: [ 'color', 'position', 'top' ] } );
 
 			expect( viewConsumable.test( { element: el, style: [ 'color', 'position', 'top' ] } ) ).to.be.true;
+			expect( viewConsumable.test( { element: el, style: [ 'color', 'position', 'left' ] } ) ).to.be.null;
+
+			viewConsumable.consume( { element: el, style: 'top' } );
+			expect( viewConsumable.test( { element: el, style: [ 'color', 'position', 'top' ] } ) ).to.be.false;
 		} );
 
 		it( 'should allow to test with multiple parameters', () => {
 			viewConsumable.add( el, { element: el, class: 'foobar' }, { element: el, 'style': 'red' } );
 
 			expect( viewConsumable.test( el, { element: el, style: 'red' }, { element: el, class: 'foobar' } ) ).to.be.true;
+			expect( viewConsumable.test( el, { element: el, style: 'red' }, { element: el, class: 'baz' } ) ).to.be.null;
+
+			const el2 = new ViewElement( 'p' );
+			viewConsumable.add( { element: el2, attribute: 'title' } );
+			expect( viewConsumable.test( el, { element: el2, attribute: 'title' } ) ).to.be.true;
+			viewConsumable.consume( { element: el2, attribute: 'title' } );
+			expect( viewConsumable.test( el, { element: el2, attribute: 'title' } ) ).to.be.false;
 		} );
 
 		it( 'should return null if not consumable', () => {