// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import {shallow} from 'enzyme';
import React from 'react';
import {General} from '../../mm-redux/constants';
import Markdown from './markdown.js';
describe('Markdown', () => {
const baseProps = {
autolinkedUrlSchemes: General.DEFAULT_AUTOLINKED_URL_SCHEMES,
baseTextStyle: {},
mentionKeys: [{key: 'user.name'}, {key: '@channel'}, {key: '@all'}, {key: '@here'}],
minimumHashtagLength: 3,
theme: {},
value: 'This is a message containing @all',
};
test('should match snapshot', () => {
const wrapper = shallow(
,
);
expect(wrapper.getElement()).toMatchSnapshot();
});
test('should match with disableAtChannelMentionHighlight', () => {
const wrapper = shallow(
,
);
expect(wrapper.getElement()).toMatchSnapshot();
});
test('MM-32254 should not crash when given string with deeply nested asterisks', () => {
const props = {
...baseProps,
value: '**'.repeat(50) + 'test' + '**'.repeat(50) + 'test',
};
shallow(
,
);
});
test('should not crash when given a non-string value', () => {
const props = {
...baseProps,
value: 10,
};
shallow(
,
);
});
test('should return true for an uncapitalized scheme', () => {
const url = 'https://www.mattermost.com/';
const wrapper = shallow(
,
);
expect(wrapper.instance().urlFilter(url)).toBe(true);
});
test('should return true for a capitalized scheme', () => {
const url = 'Https://www.mattermost.com/';
const wrapper = shallow(
,
);
expect(wrapper.instance().urlFilter(url)).toBe(true);
});
test('should return false for an unknown scheme', () => {
const url = 'unknown://www.mattermost.com/';
const wrapper = shallow(
,
);
expect(wrapper.instance().urlFilter(url)).toBe(false);
});
});