403Webshell
Server IP : 80.87.202.40  /  Your IP : 216.73.216.169
Web Server : Apache
System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64
User : bitrix ( 600)
PHP Version : 8.2.27
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : OFF |  Sudo : ON |  Pkexec : ON
Directory :  /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/im/v2/lib/parser/test/functions/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/im/v2/lib/parser/test/functions/quote.test.js
import 'im.v2.test';
import { Tag } from 'main.core';

import { ParserQuote } from '../../src/functions/quote';

const QUOTE_NAME = 'Ivan';
const QUOTE_DATE = 'today, 12:41';
const QUOTE_TEXT = 'some text';
const QUOTE_DATA_CONTEXT = 'chat786/8002';

describe('ParserQuote', () => {
	describe('decodeQuote', () => {
		it('should return a message with a filled context tag if the quote is from the same chat', () => {
			const quoteText = getQuoteText(`${QUOTE_NAME} [${QUOTE_DATE}] #${QUOTE_DATA_CONTEXT}<br />${QUOTE_TEXT}`);
			const contextDialogId = 'chat786';

			const result = ParserQuote.decodeQuote(quoteText, { contextDialogId });

			const quoteParams = {
				name: QUOTE_NAME,
				date: QUOTE_DATE,
				text: QUOTE_TEXT,
				dataContext: QUOTE_DATA_CONTEXT,
			};

			const expectedResult = getMessageHTML(quoteParams);
			assert.equal(result, expectedResult);
		});

		it('should return a message with an empty context tag if the quote is not from the same chat', () => {
			const contextDialogId = 'chat123';
			const expectedContextTag = 'none';
			const quoteText = getQuoteText(`${QUOTE_NAME} [${QUOTE_DATE}] #${QUOTE_DATA_CONTEXT}<br />${QUOTE_TEXT}`);

			const result = ParserQuote.decodeQuote(quoteText, { contextDialogId });

			const quoteParams = {
				name: QUOTE_NAME,
				date: QUOTE_DATE,
				text: QUOTE_TEXT,
				dataContext: expectedContextTag,
			};
			const expectedResult = getMessageHTML(quoteParams);

			assert.equal(result, expectedResult);
		});

		it('should return the same message if there is no quote', () => {
			const contextDialogId = 'chat123';
			const messageText = 'hello';

			const result = ParserQuote.decodeQuote(messageText, { contextDialogId });

			assert.equal(result, messageText);
		});

		it('should return a quote text, if there is only some string in square brackets', () => {
			const contextDialogId = 'chat123';
			const expectedContextTag = 'none';
			const quoteText = getQuoteText('[some text]');

			const result = ParserQuote.decodeQuote(quoteText, { contextDialogId });

			const quoteParams = {
				text: 'some text',
				dataContext: expectedContextTag,
			};
			const expectedResult = getMessageHTML(quoteParams);

			assert.equal(result, expectedResult);
		});

		it('should return a message with line break if the quote contains line break', () => {
			const contextDialogId = 'chat123';
			const expectedContextTag = 'none';
			const QUOTE_TEXT_WITH_BR = 'some <br /> text';
			const quoteText = getQuoteText(`${QUOTE_NAME} [${QUOTE_DATE}] #${QUOTE_DATA_CONTEXT}<br />${QUOTE_TEXT_WITH_BR}`);

			const result = ParserQuote.decodeQuote(quoteText, { contextDialogId });

			const quoteParams = {
				name: QUOTE_NAME,
				date: QUOTE_DATE,
				text: QUOTE_TEXT_WITH_BR,
				dataContext: expectedContextTag,
			};
			const expectedResult = getMessageHTML(quoteParams);

			assert.equal(result, expectedResult);
		});

		it('should return a message without line break if the quote contains line break at the end of the text', () => {
			const contextDialogId = 'chat123';
			const expectedContextTag = 'none';
			const QUOTE_TEXT_WITH_BR = 'some text<br />';
			const quoteText = getQuoteText(`${QUOTE_NAME} [${QUOTE_DATE}] #${QUOTE_DATA_CONTEXT}<br />${QUOTE_TEXT_WITH_BR}`);

			const result = ParserQuote.decodeQuote(quoteText, { contextDialogId });

			const quoteParams = {
				name: QUOTE_NAME,
				date: QUOTE_DATE,
				text: QUOTE_TEXT_WITH_BR,
				dataContext: expectedContextTag,
			};
			const expectedResult = getMessageHTML(quoteParams);

			assert.equal(result, expectedResult);
		});
	});

	describe('decodeArrowQuote', () => {
		it('should return message without chat context in data attribute', () => {
			const quoteText = '&gt;&gt;test';
			const expectedResult = '<div data-context="none" class="bx-im-message-quote --inline"><div class="bx-im-message-quote__wrap">test</div></div>';

			const result = ParserQuote.decodeArrowQuote(quoteText);

			assert.equal(result, expectedResult);
		});
	});
});

const getQuoteText = (content: string) => {
	const delimiter = '------------------------------------------------------';
	const br = '<br />';

	return `${delimiter}${br}${content}${br}${delimiter}`;
};

type MessageParams = {
	name?: string,
	date?: string,
	text: string,
	dataContext: string,
	hasUserBlock?: boolean,
};

const getMessageHTML = (messageParams: MessageParams) => {
	const { name = '', date = '', dataContext, text } = messageParams;

	let userBlock = '';
	if (name && date)
	{
		userBlock = Tag.render`
			<div class="bx-im-message-quote__name">
				<div class="bx-im-message-quote__name-text">${name}</div>
				<div class="bx-im-message-quote__name-time">${date}</div>
			</div>
		`;
	}

	const messageNode = Tag.render`
		<div class="bx-im-message-quote" data-context="${dataContext}">
			<div class="bx-im-message-quote__wrap">
				${userBlock}
				<div class="bx-im-message-quote__text">${text}</div>
			</div>
		</div>
	`;

	return messageNode.outerHTML;
};

Youez - 2016 - github.com/yon3zu
LinuXploit