Page MenuHomePhabricator

D4328.diff
No OneTemporary

D4328.diff

diff --git a/lib/utils/text-utils.js b/lib/utils/text-utils.js
--- a/lib/utils/text-utils.js
+++ b/lib/utils/text-utils.js
@@ -24,8 +24,10 @@
function trimText(text: string, maxLength: number): string {
if (text.length <= maxLength) {
return text;
+ } else if (maxLength <= 3) {
+ return text.substring(0, maxLength);
}
- return text.substr(0, maxLength - 3) + '...';
+ return `${text.substring(0, maxLength - 3)}...`;
}
function pluralizeAndTrim(
diff --git a/lib/utils/text-utils.test.js b/lib/utils/text-utils.test.js
--- a/lib/utils/text-utils.test.js
+++ b/lib/utils/text-utils.test.js
@@ -1,6 +1,6 @@
// @flow
-import { pluralize } from './text-utils.js';
+import { pluralize, trimText } from './text-utils.js';
describe('pluralize(nouns, maxNumberOfNouns)', () => {
it('should return an empty string when no words are given', () => {
@@ -49,3 +49,68 @@
);
});
});
+
+describe('trimText(text, maxLength)', () => {
+ it('should return the original text when the text is shorter than maxLength', () => {
+ expect(trimText('a', 2)).toBe('a');
+ expect(trimText('a', 3)).toBe('a');
+ expect(trimText('a', 4)).toBe('a');
+
+ expect(trimText('ab', 3)).toBe('ab');
+ expect(trimText('ab', 4)).toBe('ab');
+
+ expect(trimText('abc', 4)).toBe('abc');
+
+ expect(trimText('the quick brown fox jumps', 400)).toBe(
+ 'the quick brown fox jumps',
+ );
+ });
+
+ it('should return the original text when the text length is equal to maxLength', () => {
+ expect(trimText('a', 1)).toBe('a');
+ expect(trimText('ab', 2)).toBe('ab');
+ expect(trimText('abc', 3)).toBe('abc');
+
+ expect(trimText('the quick brown fox jumps', 25)).toBe(
+ 'the quick brown fox jumps',
+ );
+ });
+
+ it('should return the first maxLength characters of the text when (maxLength <= 3)', () => {
+ expect(trimText('the quick brown fox jumps', 0)).toBe('');
+ expect(trimText('the quick brown fox jumps', 1)).toBe('t');
+ expect(trimText('the quick brown fox jumps', 2)).toBe('th');
+ expect(trimText('the quick brown fox jumps', 3)).toBe('the');
+ });
+
+ it('should return ellipsized text when (text.length > maxLength) && (maxLength > 3)', () => {
+ expect(trimText('the quick brown fox jumps', 4)).toBe('t...');
+ expect(trimText('the quick brown fox jumps', 5)).toBe('th...');
+ expect(trimText('the quick brown fox jumps', 6)).toBe('the...');
+ expect(trimText('the quick brown fox jumps', 7)).toBe('the ...');
+ expect(trimText('the quick brown fox jumps', 8)).toBe('the q...');
+ expect(trimText('the quick brown fox jumps', 9)).toBe('the qu...');
+ });
+
+ it("shouldn't return a string longer than maxLength", () => {
+ expect(trimText('', 0).length).toBeLessThanOrEqual(0);
+ expect(trimText('a', 0).length).toBeLessThanOrEqual(0);
+ expect(trimText('ab', 0).length).toBeLessThanOrEqual(0);
+ expect(trimText('abc', 0).length).toBeLessThanOrEqual(0);
+
+ expect(trimText('', 1).length).toBeLessThanOrEqual(1);
+ expect(trimText('a', 1).length).toBeLessThanOrEqual(1);
+ expect(trimText('ab', 1).length).toBeLessThanOrEqual(1);
+ expect(trimText('abc', 1).length).toBeLessThanOrEqual(1);
+
+ expect(trimText('', 2).length).toBeLessThanOrEqual(2);
+ expect(trimText('a', 2).length).toBeLessThanOrEqual(2);
+ expect(trimText('ab', 2).length).toBeLessThanOrEqual(2);
+ expect(trimText('abc', 2).length).toBeLessThanOrEqual(2);
+
+ expect(trimText('', 3).length).toBeLessThanOrEqual(3);
+ expect(trimText('a', 3).length).toBeLessThanOrEqual(3);
+ expect(trimText('ab', 3).length).toBeLessThanOrEqual(3);
+ expect(trimText('abc', 3).length).toBeLessThanOrEqual(3);
+ });
+});

File Metadata

Mime Type
text/plain
Expires
Sat, Oct 5, 2:14 PM (21 h, 58 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2244113
Default Alt Text
D4328.diff (3 KB)

Event Timeline