schlechtenburg/packages/rich-text/lib/test/remove-format.test.ts

72 lines
1.4 KiB
TypeScript
Raw Normal View History

2024-10-08 07:15:26 +00:00
import { describe, expect, it } from 'vitest'
import deepFreeze from 'deep-freeze';
import { removeFormat } from '../remove-format';
import { getSparseArrayLength } from './helpers';
describe( 'removeFormat', () => {
const strong = { type: 'strong' };
const em = { type: 'em' };
it( 'should remove format', () => {
const record = {
formats: [
,
,
,
[ strong ],
[ em, strong ],
[ em, strong ],
[ em ],
,
,
,
,
,
,
],
text: 'one two three',
};
const expected = {
formats: [ , , , , [ em ], [ em ], [ em ], , , , , , , ],
activeFormats: [],
text: 'one two three',
};
const result = removeFormat( deepFreeze( record ), 'strong', 3, 6 );
expect( result ).toEqual( expected );
expect( result ).not.toBe( record );
expect( getSparseArrayLength( result.formats ) ).toBe( 3 );
} );
it( 'should remove format for collased selection', () => {
const record = {
formats: [
,
,
,
[ strong ],
[ em, strong ],
[ em, strong ],
[ em ],
,
,
,
,
,
,
],
text: 'one two three',
};
const expected = {
formats: [ , , , , [ em ], [ em ], [ em ], , , , , , , ],
activeFormats: [],
text: 'one two three',
};
const result = removeFormat( deepFreeze( record ), 'strong', 4, 4 );
expect( result ).toEqual( expected );
expect( result ).not.toBe( record );
expect( getSparseArrayLength( result.formats ) ).toBe( 3 );
} );
} );