@ryusei/light
Version:
<div align="center"> <a href="https://light.ryuseijs.com"> <img alt="RyuseiLight" src="https://light.ryuseijs.com/images/svg/logo.svg" width="70"> </a>
86 lines (69 loc) • 2.31 kB
text/typescript
import { RyuseiLight } from '../../../core/RyuseiLight/RyuseiLight';
import { Diff, CLASS_ADDED, CLASS_DELETED } from '../Diff';
describe( 'Diff', () => {
RyuseiLight.compose( { Diff } );
test( 'can add added/deleted classes to lines with +/-.', () => {
document.body.innerHTML = `<pre>
1
+ 2
+ 3
4
- 5
- 6
- 7
8
9
10
</pre>`;
const ryuseilight = new RyuseiLight( { diff: true } );
ryuseilight.apply( 'pre' );
const added = document.getElementsByClassName( CLASS_ADDED );
const removed = document.getElementsByClassName( CLASS_DELETED );
expect( added.length ).toBe( 2 );
expect( added[ 0 ].textContent.trim() ).toBe( '2' );
expect( added[ 1 ].textContent.trim() ).toBe( '3' );
expect( removed.length ).toBe( 3 );
expect( removed[ 0 ].textContent.trim() ).toBe( '5' );
expect( removed[ 1 ].textContent.trim() ).toBe( '6' );
expect( removed[ 2 ].textContent.trim() ).toBe( '7' );
} );
test( 'should respect specified symbols.', () => {
document.body.innerHTML = `<pre>
1
> 2
> 3
4
< 5
< 6
< 7
8
9
10
</pre>`;
const ryuseilight = new RyuseiLight( { diff: { addedSymbol: '>', deletedSymbol: '<' } } );
ryuseilight.apply( 'pre' );
const added = document.getElementsByClassName( CLASS_ADDED );
const removed = document.getElementsByClassName( CLASS_DELETED );
expect( added.length ).toBe( 2 );
expect( added[ 0 ].textContent.trim() ).toBe( '2' );
expect( added[ 1 ].textContent.trim() ).toBe( '3' );
expect( removed.length ).toBe( 3 );
expect( removed[ 0 ].textContent.trim() ).toBe( '5' );
expect( removed[ 1 ].textContent.trim() ).toBe( '6' );
expect( removed[ 2 ].textContent.trim() ).toBe( '7' );
} );
test( 'should remove symbols if required.', () => {
document.body.innerHTML = `<pre>
1
+ 2
+ 3
4
</pre>`;
const ryuseilight = new RyuseiLight( { diff: { removeSymbols: true } } );
ryuseilight.apply( 'pre' );
const added = document.getElementsByClassName( CLASS_ADDED );
expect( added.length ).toBe( 2 );
expect( added[ 0 ].textContent ).toBe( ' 2' );
expect( added[ 1 ].textContent ).toBe( ' 3' );
} );
} );