import React from 'react';
import { extractTextFromReactNode } from '../extract-text-react-node';
describe('extractTextFromReactNode', () => {
it('从字符串节点中提取文本', () => {
expect(extractTextFromReactNode('Hello, World!')).toBe('Hello, World!');
});
it('从数字节点中提取文本', () => {
expect(extractTextFromReactNode(12345)).toBe('12345');
});
it('从简单的 React 元素中提取文本', () => {
expect(extractTextFromReactNode(
Simple Text
)).toBe(
'Simple Text',
);
});
it('递归提取嵌套 React 元素中的文本', () => {
const nested = (
Hello World
);
expect(extractTextFromReactNode(nested)).toBe('Hello World');
});
it('从数组节点中提取文本', () => {
const nodeArray = ['Text1', Text2, 'Text3'];
expect(extractTextFromReactNode(nodeArray)).toBe('Text1Text2Text3');
});
it('从混合类型的 React 子节点中提取文本', () => {
const mixed = (
Text and more text!
);
expect(extractTextFromReactNode(mixed)).toBe('Text and more text!');
});
it('当没有节点提供时返回空字符串', () => {
expect(extractTextFromReactNode(undefined)).toBe('');
expect(extractTextFromReactNode(null)).toBe('');
});
it('截取超过 200 个字符的内容', () => {
const longText = 'a'.repeat(300);
expect(extractTextFromReactNode(longText)).toBe('a'.repeat(200));
});
it('正确处理包含超过 200 个字符的混合类型节点', () => {
const mixed = (
{'a'.repeat(100)}
{'b'.repeat(120)}
{'c'.repeat(150)}
);
expect(extractTextFromReactNode(mixed)).toBe(
'a'.repeat(100) + 'b'.repeat(100),
);
});
});