mirror of
https://github.com/n8n-io/n8n.git
synced 2026-06-04 02:37:46 +02:00
59 lines
2.8 KiB
TypeScript
59 lines
2.8 KiB
TypeScript
import { truncateBeforeLast, truncate } from './truncate';
|
||
|
||
describe('truncate', () => {
|
||
it('should truncate text to 30 chars by default', () => {
|
||
expect(truncate('This is a very long text that should be truncated')).toBe(
|
||
'This is a very long text that ...',
|
||
);
|
||
});
|
||
|
||
it('should truncate text to given length', () => {
|
||
expect(truncate('This is a very long text that should be truncated', 25)).toBe(
|
||
'This is a very long text ...',
|
||
);
|
||
});
|
||
});
|
||
|
||
describe(truncateBeforeLast, () => {
|
||
it('should return unmodified text if the length does not exceed max length', () => {
|
||
expect(truncateBeforeLast('I love nodemation', 25)).toBe('I love nodemation');
|
||
expect(truncateBeforeLast('I ❤️ nodemation', 25)).toBe('I ❤️ nodemation');
|
||
expect(truncateBeforeLast('Nodemation is cool', 25)).toBe('Nodemation is cool');
|
||
expect(truncateBeforeLast('Internationalization', 25)).toBe('Internationalization');
|
||
expect(truncateBeforeLast('I love 👨👩👧👦', 8)).toBe('I love 👨👩👧👦');
|
||
});
|
||
|
||
it('should remove chars just before the last word, as long as the last word is under 15 chars', () => {
|
||
expect(truncateBeforeLast('I love nodemation', 15)).toBe('I lo…nodemation');
|
||
expect(truncateBeforeLast('I love "nodemation"', 15)).toBe('I …"nodemation"');
|
||
expect(truncateBeforeLast('I ❤️ nodemation', 13)).toBe('I …nodemation');
|
||
expect(truncateBeforeLast('Nodemation is cool', 15)).toBe('Nodemation…cool');
|
||
expect(truncateBeforeLast('"Nodemation" is cool', 15)).toBe('"Nodematio…cool');
|
||
expect(truncateBeforeLast('Is it fun to automate boring stuff?', 15)).toBe('Is it fu…stuff?');
|
||
expect(truncateBeforeLast('Is internationalization fun?', 15)).toBe('Is interna…fun?');
|
||
expect(truncateBeforeLast('I love 👨👩👧👦', 7)).toBe('I lov…👨👩👧👦');
|
||
});
|
||
|
||
it('should fall through to fixed-suffix when last word is shorter than minLastWordLength', () => {
|
||
expect(truncateBeforeLast('Akhenaten - Wikipedia.pdf, page 3', 25, 11, 4)).toBe(
|
||
'Akhenaten - W…pdf, page 3',
|
||
);
|
||
expect(truncateBeforeLast('Akhenaten - Wikipedia.pdf, page 123', 25, 11, 4)).toBe(
|
||
'Akhenaten - W…f, page 123',
|
||
);
|
||
});
|
||
|
||
it('should preserve last 5 characters if the last word is longer than 15 characters', () => {
|
||
expect(truncateBeforeLast('I love internationalization', 25)).toBe('I love internationa…ation');
|
||
expect(truncateBeforeLast('I love "internationalization"', 25)).toBe(
|
||
'I love "internation…tion"',
|
||
);
|
||
expect(truncateBeforeLast('I "love" internationalization', 25)).toBe(
|
||
'I "love" internatio…ation',
|
||
);
|
||
expect(truncateBeforeLast('I ❤️ internationalization', 9)).toBe('I ❤️…ation');
|
||
expect(truncateBeforeLast('I ❤️ internationalization', 8)).toBe('I …ation');
|
||
expect(truncateBeforeLast('Internationalization', 15)).toBe('Internati…ation');
|
||
});
|
||
});
|