import { DyFM_AI_Message, DyFM_AI_MessageRole } from '@futdevpro/fsm-dynamo/ai'; import { DyNTS_Ass_Util } from './ass.util'; import { DyNTS_Bot_MessageWrapper } from '../../bot/_models/bot-message-wrapper.interface'; import { DyNTS_Ass_global_settings } from './ass-global-settings.const'; describe('| DyNTS_Ass_Util', () => { describe('| convertBotMessagesToAIConversation', () => { it('| should convert bot messages to AI conversation format', () => { const messages: DyNTS_Bot_MessageWrapper[] = [ { id: 'msg-1', content: 'User message', authorId: 'user-123', authorName: 'user', isBot: false, } as any, { id: 'msg-2', content: 'Bot response', authorId: 'bot-123', authorName: 'bot', isBot: true, } as any, ]; const result = DyNTS_Ass_Util.convertBotMessagesToAIConversation({ messages: messages, botClientId: 'bot-123', botDisplayName: 'Bot', issuer: 'issuer-123', }); expect(result.length).toBe(2); expect(result[0].role).toBe(DyFM_AI_MessageRole.user); expect(result[0].content).toBe('User message'); expect(result[1].role).toBe(DyFM_AI_MessageRole.assistant); expect(result[1].content).toBe('Bot response'); }); it('| should identify bot messages by isBot flag', () => { const messages: DyNTS_Bot_MessageWrapper[] = [ { id: 'msg-1', content: 'Message', authorId: 'bot-123', isBot: true, } as any, ]; const result = DyNTS_Ass_Util.convertBotMessagesToAIConversation({ messages: messages, botClientId: 'bot-123', botDisplayName: 'Bot', issuer: 'issuer-123', }); expect(result[0].role).toBe(DyFM_AI_MessageRole.assistant); }); it('| should identify bot messages by authorId match', () => { const messages: DyNTS_Bot_MessageWrapper[] = [ { id: 'msg-1', content: 'Message', authorId: 'bot-123', isBot: false, } as any, ]; const result = DyNTS_Ass_Util.convertBotMessagesToAIConversation({ messages: messages, botClientId: 'bot-123', botDisplayName: 'Bot', issuer: 'issuer-123', }); expect(result[0].role).toBe(DyFM_AI_MessageRole.assistant); }); it('| should identify bot messages by authorName match', () => { const messages: DyNTS_Bot_MessageWrapper[] = [ { id: 'msg-1', content: 'Message', authorId: 'other-123', authorName: 'Bot', isBot: false, } as any, ]; const result = DyNTS_Ass_Util.convertBotMessagesToAIConversation({ messages: messages, botClientId: 'bot-123', botDisplayName: 'Bot', issuer: 'issuer-123', }); expect(result[0].role).toBe(DyFM_AI_MessageRole.assistant); }); it('| should identify bot messages by authorDisplayName match', () => { const messages: DyNTS_Bot_MessageWrapper[] = [ { id: 'msg-1', content: 'Message', authorId: 'other-123', authorDisplayName: 'Bot', isBot: false, } as any, ]; const result = DyNTS_Ass_Util.convertBotMessagesToAIConversation({ messages: messages, botClientId: 'bot-123', botDisplayName: 'Bot', issuer: 'issuer-123', }); expect(result[0].role).toBe(DyFM_AI_MessageRole.assistant); }); it('| should convert bot messages with user translation flags to user role', () => { const userTranslationFlag = DyNTS_Ass_global_settings.userTranslationFlags[0]; const messages: DyNTS_Bot_MessageWrapper[] = [ { id: 'msg-1', content: `Message with ${userTranslationFlag} flag`, authorId: 'bot-123', isBot: true, } as any, ]; const result = DyNTS_Ass_Util.convertBotMessagesToAIConversation({ messages: messages, botClientId: 'bot-123', botDisplayName: 'Bot', issuer: 'issuer-123', }); expect(result[0].role).toBe(DyFM_AI_MessageRole.user); }); it('| should handle empty messages array', () => { const result = DyNTS_Ass_Util.convertBotMessagesToAIConversation({ messages: [], botClientId: 'bot-123', botDisplayName: 'Bot', issuer: 'issuer-123', }); expect(result).toEqual([]); }); it('| should convert user messages to user role', () => { const messages: DyNTS_Bot_MessageWrapper[] = [ { id: 'msg-1', content: 'User message', authorId: 'user-123', isBot: false, } as any, ]; const result = DyNTS_Ass_Util.convertBotMessagesToAIConversation({ messages: messages, botClientId: 'bot-123', botDisplayName: 'Bot', issuer: 'issuer-123', }); expect(result[0].role).toBe(DyFM_AI_MessageRole.user); }); }); });