Skip to content

Commit 79e24a7

Browse files
update tests for hooks
1 parent a3c8983 commit 79e24a7

2 files changed

Lines changed: 71 additions & 10 deletions

File tree

apps/meteor/client/components/message/hooks/useNormalizedMessage.spec.ts

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,14 @@ import { useNormalizedMessage } from './useNormalizedMessage';
44

55
const mockParseMessageTextToAstMarkdown = jest.fn((msg: any, ..._args: any[]) => msg);
66

7+
let mockAutoTranslateOptions = {
8+
showAutoTranslate: () => false,
9+
autoTranslateLanguage: '',
10+
};
11+
712
jest.mock('../list/MessageListContext', () => ({
813
useMessageListKatex: () => null,
9-
useMessageListAutoTranslate: () => ({
10-
showAutoTranslate: () => false,
11-
autoTranslateLanguage: '',
12-
}),
14+
useMessageListAutoTranslate: () => mockAutoTranslateOptions,
1315
useMessageListShowColors: () => false,
1416
}));
1517

@@ -65,4 +67,30 @@ describe('useNormalizedMessage', () => {
6567
expect(mockParseMessageTextToAstMarkdown).not.toHaveBeenCalled();
6668
expect(result.current.attachments).toEqual(attachments);
6769
});
70+
71+
it('should return PARAGRAPH node with translated text when auto-translate is active and msg exceeds limit', () => {
72+
const longMsg = 'a'.repeat(101);
73+
const translatedText = 'long translated text';
74+
75+
mockAutoTranslateOptions = {
76+
showAutoTranslate: () => true,
77+
autoTranslateLanguage: 'en',
78+
};
79+
80+
const message = {
81+
...baseMessage,
82+
msg: longMsg,
83+
translations: { en: translatedText },
84+
};
85+
86+
const { result } = renderHook(() => useNormalizedMessage(message as any, 100));
87+
88+
expect(result.current.md).toEqual([
89+
{
90+
type: 'PARAGRAPH',
91+
value: [{ type: 'PLAIN_TEXT', value: translatedText }],
92+
},
93+
]);
94+
expect(mockParseMessageTextToAstMarkdown).not.toHaveBeenCalled();
95+
});
6896
});

apps/meteor/client/views/room/MessageList/hooks/useMessageBody.spec.ts

Lines changed: 39 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,17 @@ import { useMessageBody } from './useMessageBody';
44

55
const mockParseMessageTextToAstMarkdown = jest.fn();
66

7+
let mockAutoTranslateOptions = {
8+
showAutoTranslate: () => false,
9+
autoTranslateLanguage: '',
10+
};
11+
712
jest.mock('./useAutoLinkDomains', () => ({
813
useAutoLinkDomains: () => [],
914
}));
1015

1116
jest.mock('../../../../components/message/list/MessageListContext', () => ({
12-
useMessageListAutoTranslate: () => ({
13-
showAutoTranslate: () => false,
14-
autoTranslateLanguage: '',
15-
}),
17+
useMessageListAutoTranslate: () => mockAutoTranslateOptions,
1618
}));
1719

1820
jest.mock('../../../../lib/parseMessageTextToAstMarkdown', () => ({
@@ -32,13 +34,18 @@ describe('useMessageBody', () => {
3234
mockParseMessageTextToAstMarkdown.mockClear();
3335
});
3436

35-
it('should return raw msg and skips parsing when msg exceeds maxMarkdownParseLength', () => {
37+
it('should return PARAGRAPH node with translated text when msg exceeds maxMarkdownParseLength', () => {
3638
const longMsg = 'a'.repeat(101);
3739
const message = { ...baseMessage, msg: longMsg, md: [{ type: 'PARAGRAPH', value: [] }] };
3840

3941
const { result } = renderHook(() => useMessageBody(message as any, 100));
4042

41-
expect(result.current).toBe(longMsg);
43+
expect(result.current).toEqual([
44+
{
45+
type: 'PARAGRAPH',
46+
value: [{ type: 'PLAIN_TEXT', value: longMsg }],
47+
},
48+
]);
4249
expect(mockParseMessageTextToAstMarkdown).not.toHaveBeenCalled();
4350
});
4451

@@ -61,4 +68,30 @@ describe('useMessageBody', () => {
6168
expect(mockParseMessageTextToAstMarkdown).not.toHaveBeenCalled();
6269
expect(result.current).toBe('Hello world');
6370
});
71+
72+
it('should return PARAGRAPH node with translated text when auto-translate is active and msg exceeds limit', () => {
73+
const longMsg = 'a'.repeat(101);
74+
const translatedText = 'long translated text';
75+
76+
mockAutoTranslateOptions = {
77+
showAutoTranslate: () => true,
78+
autoTranslateLanguage: 'en',
79+
};
80+
81+
const message = {
82+
...baseMessage,
83+
msg: longMsg,
84+
translations: { en: translatedText },
85+
};
86+
87+
const { result } = renderHook(() => useMessageBody(message as any, 100));
88+
89+
expect(result.current).toEqual([
90+
{
91+
type: 'PARAGRAPH',
92+
value: [{ type: 'PLAIN_TEXT', value: translatedText }],
93+
},
94+
]);
95+
expect(mockParseMessageTextToAstMarkdown).not.toHaveBeenCalled();
96+
});
6497
});

0 commit comments

Comments
 (0)