mirror of
https://github.com/mattermost/mattermost.git
synced 2025-02-25 18:55:24 -06:00
PLT-7518 Added unit tests for channel linking (#7352)
* PLT-7518 Added unit tests for channel linking * Removed unused escaping function
This commit is contained in:
committed by
George Goldberg
parent
8391ef6288
commit
670bfbf626
49
webapp/tests/utils/formatting_channel_links.test.jsx
Normal file
49
webapp/tests/utils/formatting_channel_links.test.jsx
Normal file
@@ -0,0 +1,49 @@
|
||||
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
|
||||
// See License.txt for license information.
|
||||
|
||||
import assert from 'assert';
|
||||
|
||||
import * as TextFormatting from 'utils/text_formatting.jsx';
|
||||
|
||||
describe('TextFormatting.ChannelLinks', () => {
|
||||
it('Not channel links', (done) => {
|
||||
assert.equal(
|
||||
TextFormatting.formatText('~123').trim(),
|
||||
'<p>~123</p>'
|
||||
);
|
||||
|
||||
assert.equal(
|
||||
TextFormatting.formatText('~town-square').trim(),
|
||||
'<p>~town-square</p>'
|
||||
);
|
||||
|
||||
done();
|
||||
});
|
||||
|
||||
it('Channel links', (done) => {
|
||||
assert.equal(
|
||||
TextFormatting.formatText('~town-square', {
|
||||
channelNamesMap: {'town-square': {display_name: 'Town Square'}},
|
||||
team: {name: 'myteam'}
|
||||
}).trim(),
|
||||
'<p><a class="mention-link" href="/myteam/channels/town-square" data-channel-mention="town-square">~Town Square</a></p>'
|
||||
);
|
||||
assert.equal(
|
||||
TextFormatting.formatText('~town-square.', {
|
||||
channelNamesMap: {'town-square': {display_name: 'Town Square'}},
|
||||
team: {name: 'myteam'}
|
||||
}).trim(),
|
||||
'<p><a class="mention-link" href="/myteam/channels/town-square" data-channel-mention="town-square">~Town Square</a>.</p>'
|
||||
);
|
||||
|
||||
assert.equal(
|
||||
TextFormatting.formatText('~town-square', {
|
||||
channelNamesMap: {'town-square': {display_name: '<b>Reception</b>'}},
|
||||
team: {name: 'myteam'}
|
||||
}).trim(),
|
||||
'<p><a class="mention-link" href="/myteam/channels/town-square" data-channel-mention="town-square">~<b>Reception</b></a></p>'
|
||||
);
|
||||
|
||||
done();
|
||||
});
|
||||
});
|
||||
@@ -185,7 +185,7 @@ function autolinkChannelMentions(text, tokens, channelNamesMap, team) {
|
||||
}
|
||||
|
||||
tokens.set(alias, {
|
||||
value: `<a class='mention-link' href="${href}" data-channel-mention="${channelName}">${displayName}</a>`,
|
||||
value: `<a class="mention-link" href="${href}" data-channel-mention="${channelName}">~${displayName}</a>`,
|
||||
originalText: mention
|
||||
});
|
||||
return alias;
|
||||
@@ -196,7 +196,7 @@ function autolinkChannelMentions(text, tokens, channelNamesMap, team) {
|
||||
|
||||
if (channelMentionExists(channelNameLower)) {
|
||||
// Exact match
|
||||
const alias = addToken(channelNameLower, mention, '~' + channelNamesMap[channelNameLower].display_name);
|
||||
const alias = addToken(channelNameLower, mention, escapeHtml(channelNamesMap[channelNameLower].display_name));
|
||||
return spacer + alias;
|
||||
}
|
||||
|
||||
@@ -209,7 +209,8 @@ function autolinkChannelMentions(text, tokens, channelNamesMap, team) {
|
||||
|
||||
if (channelMentionExists(channelNameLower)) {
|
||||
const suffix = originalChannelName.substr(c - 1);
|
||||
const alias = addToken(channelNameLower, '~' + channelNameLower, '~' + channelNamesMap[channelNameLower].display_name);
|
||||
const alias = addToken(channelNameLower, '~' + channelNameLower,
|
||||
escapeHtml(channelNamesMap[channelNameLower].display_name));
|
||||
return spacer + alias + suffix;
|
||||
}
|
||||
} else {
|
||||
@@ -231,6 +232,18 @@ export function escapeRegex(text) {
|
||||
return text.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&');
|
||||
}
|
||||
|
||||
const htmlEntities = {
|
||||
'&': '&',
|
||||
'<': '<',
|
||||
'>': '>',
|
||||
'"': '"',
|
||||
"'": '''
|
||||
};
|
||||
|
||||
export function escapeHtml(text) {
|
||||
return text.replace(/[&<>"']/g, (match) => htmlEntities[match]);
|
||||
}
|
||||
|
||||
function highlightCurrentMentions(text, tokens, mentionKeys = []) {
|
||||
let output = text;
|
||||
|
||||
|
||||
@@ -242,10 +242,6 @@ export function extractFirstLink(text) {
|
||||
return '';
|
||||
}
|
||||
|
||||
export function escapeRegExp(string) {
|
||||
return string.replace(/([.*+?^=!:${}()|[\]/\\])/g, '\\$1');
|
||||
}
|
||||
|
||||
// Taken from http://stackoverflow.com/questions/1068834/object-comparison-in-javascript and modified slightly
|
||||
export function areObjectsEqual(x, y) {
|
||||
let p;
|
||||
|
||||
Reference in New Issue
Block a user