| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- /**
- * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
- */
- import testUtils from '@ckeditor/ckeditor5-core/tests/_utils/utils';
- import ContentNormalizer from '../src/contentnormalizer';
- import { createDataTransfer } from './_utils/utils';
- import UpcastWriter from '@ckeditor/ckeditor5-engine/src/view/upcastwriter';
- describe( 'ContentNormalizer', () => {
- let normalizer, sinonTrigger;
- const templateData = {
- dataTransfer: createDataTransfer( {
- 'text/html': 'test data'
- } )
- };
- testUtils.createSinonSandbox();
- beforeEach( () => {
- sinonTrigger = sinon.fake.returns( true );
- normalizer = new ContentNormalizer( sinonTrigger );
- } );
- describe( 'constructor()', () => {
- it( 'should have assigned activation trigger', () => {
- expect( normalizer._activationTrigger ).to.be.a( 'function' );
- expect( normalizer._activationTrigger ).to.equal( sinonTrigger );
- } );
- } );
- describe( 'transform()', () => {
- let data;
- beforeEach( () => {
- data = Object.assign( {}, templateData );
- } );
- describe( 'valid data', () => {
- it( 'should mark data as transformed', () => {
- expect( data.isTransformedWithPasteFromOffice ).to.be.undefined;
- normalizer.transform( data );
- expect( data.isTransformedWithPasteFromOffice ).to.be.true;
- } );
- it( 'should call for activation trigger to check input data', () => {
- sinon.assert.notCalled( sinonTrigger );
- normalizer.transform( data );
- sinon.assert.calledOnce( sinonTrigger );
- sinon.assert.calledWith( sinonTrigger, 'test data' );
- } );
- it( 'should execute filters over data', () => {
- const filter = sinon.fake();
- const writer = new UpcastWriter();
- const documentFragment = writer.createDocumentFragment();
- data.content = documentFragment;
- normalizer.addFilter( filter );
- normalizer.transform( data );
- sinon.assert.calledOnce( filter );
- sinon.assert.calledWithMatch( filter, {
- documentFragment,
- data,
- writer: sinon.match.instanceOf( UpcastWriter )
- } );
- } );
- it( 'should not process again already transformed data', () => {
- const filter = sinon.fake();
- // Filters should not be executed
- data.isTransformedWithPasteFromOffice = true;
- normalizer.addFilter( filter );
- normalizer.transform( data );
- sinon.assert.notCalled( filter );
- } );
- } );
- describe( 'invalid data', () => {
- let normalizer, sinonTrigger;
- beforeEach( () => {
- sinonTrigger = sinon.fake.returns( false );
- normalizer = new ContentNormalizer( sinonTrigger );
- } );
- it( 'should not change data content', () => {
- normalizer.transform( data );
- expect( data.isTransformedWithPasteFromOffice ).to.be.undefined;
- expect( data ).to.deep.equal( templateData );
- } );
- it( 'should not fire any filter', () => {
- const filter = sinon.fake();
- normalizer.addFilter( filter );
- normalizer.transform( data );
- expect( normalizer._filters.size ).to.equal( 1 );
- sinon.assert.notCalled( filter );
- } );
- } );
- } );
- describe( 'addFilter()', () => {
- let filter;
- beforeEach( () => {
- filter = () => {};
- normalizer.addFilter( filter );
- } );
- it( 'should add filter to fullContentFilters set', () => {
- expect( normalizer._filters.size ).to.equal( 1 );
- const firstFilter = [ ...normalizer._filters ][ 0 ];
- expect( firstFilter ).to.equal( filter );
- } );
- } );
- } );
|