@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>
47 lines (38 loc) • 1.45 kB
text/typescript
import { LINE_BREAK } from '../../../constants/characters';
import { RyuseiLight } from '../../../core/RyuseiLight/RyuseiLight';
import { Diff, CLASS_ADDED, CLASS_DELETED } from '../Diff';
import { LineNumbers, LINE_NUMBER_CLASS_NAME } from '../../LineNumbers/LineNumbers';
import { Gutter, GUTTER_ROW_CLASS_NAME } from '../../Gutter/Gutter';
describe( 'Diff', () => {
RyuseiLight.compose( { Diff, Gutter, LineNumbers } );
test( 'can add added/deleted classes to line numbers.', () => {
document.body.innerHTML = `<pre>
1
+ 2
+ 3
4
- 5
- 6
- 7
8
9
10
</pre>`;
const ryuseilight = new RyuseiLight( { diff: true, lineNumbers: true } );
ryuseilight.apply( 'pre' );
const added = document.querySelectorAll(
`.${ GUTTER_ROW_CLASS_NAME }.${ CLASS_ADDED } .${ LINE_NUMBER_CLASS_NAME }`
);
const removed = document.querySelectorAll(
`.${ GUTTER_ROW_CLASS_NAME }.${ CLASS_DELETED } .${ LINE_NUMBER_CLASS_NAME }`
);
expect( added.length ).toBe( 2 );
expect( added[ 0 ].textContent ).toBe( '2' );
expect( added[ 1 ].textContent ).toBe( '3' );
// Line numbers of removed lines should be empty (LINE_BREAK).
expect( removed.length ).toBe( 3 );
expect( removed[ 0 ].textContent ).toBe( LINE_BREAK );
expect( removed[ 1 ].textContent ).toBe( LINE_BREAK );
expect( removed[ 2 ].textContent ).toBe( LINE_BREAK );
} );
} );