Files
react-native/Libraries/Utilities/__tests__/truncate-test.js
T
James Ide 0ee5f68929 Migrate "Libraries" from Haste to standard path-based requires (sans vendor & renderers) (#24749)
Summary:
This is the next step in moving RN towards standard path-based requires. All the requires in `Libraries` have been rewritten to use relative requires with a few exceptions, namely, `vendor` and `Renderer/oss` since those need to be changed upstream. This commit uses relative requires instead of `react-native/...` so that if Facebook were to stop syncing out certain folders and therefore remove code from the react-native package, internal code at Facebook would not need to change.

See the umbrella issue at https://github.com/facebook/react-native/issues/24316 for more detail.

[General] [Changed] - Migrate "Libraries" from Haste to standard path-based requires
Pull Request resolved: https://github.com/facebook/react-native/pull/24749

Differential Revision: D15258017

Pulled By: cpojer

fbshipit-source-id: a1f480ea36c05c659b6f37c8f02f6f9216d5a323
2019-05-08 08:48:59 -07:00

66 lines
1.9 KiB
JavaScript

/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @format
* @emails oncall+react_native
*/
'use strict';
describe('truncate', () => {
const truncate = require('../truncate');
it('should truncate', () => {
expect(truncate('Hello, world.', 5)).toBe('He...');
});
it('should not truncate', () => {
expect(truncate('Hello, world.', 50)).toBe('Hello, world.');
});
it('should not truncate more than minDelta chars.', () => {
expect(truncate('Hello, world.', 7, {minDelta: 10})).toBe('Hello, world.');
expect(truncate('Hello, world.', 7, {minDelta: 9})).toBe('Hell...');
});
it('should break in the middle of words', () => {
expect(
truncate('Hello, world. How are you?', 18, {breakOnWords: false}),
).toBe('Hello, world. H...');
expect(
truncate('Hello, world.\nHow are you?', 18, {breakOnWords: false}),
).toBe('Hello, world.\nHo...');
});
it('should add another character if the truncations happens in the middle of a wide char', () => {
expect(
truncate('Hello, world. āA weird character', 18, {breakOnWords: false}),
).toBe('Hello, world. āA...');
});
it('should break at word boundaries', () => {
expect(
truncate('Hello, world. How are you?', 18, {breakOnWords: true}),
).toBe('Hello, world....');
expect(
truncate('Hello, world.\nHow are you?', 18, {breakOnWords: true}),
).toBe('Hello, world....');
});
it('should uses custom elipses', () => {
expect(truncate('Hello, world.', 9, {elipsis: '&middot'})).toBe(
'He&middot',
);
});
it("shouldn't barf with weird input", () => {
expect(truncate('Hello, world.', 0)).toBe('Hello,...');
expect(truncate('Hello, world.', -132)).toBe('...');
expect(truncate('', 0)).toBe('');
expect(truncate(null, 0)).toBe(null);
});
});