Spaces:
Running
Running
| /** | |
| * Unit tests for HelpTooltip pure logic | |
| * Validates: Requirements 28.3, 28.5, 28.6, 28.9 | |
| */ | |
| import { describe, it, expect } from 'vitest'; | |
| // Extract the pure getHelpText logic for testing (mirrors HelpTooltip._getHelpText) | |
| function getHelpText(helpContent, sectionKey, currentLang, defaultLang) { | |
| if (!helpContent) { | |
| return 'Help content unavailable'; | |
| } | |
| const section = helpContent[sectionKey]; | |
| if (!section) { | |
| return 'Help content unavailable'; | |
| } | |
| return section[currentLang] || section[defaultLang] || section['en'] || 'Help content unavailable'; | |
| } | |
| const sampleContent = { | |
| metadata: { | |
| en: 'Metadata displays general information about the ONNX model.', | |
| vi: 'Siêu dữ liệu hiển thị thông tin chung về mô hình ONNX.', | |
| ja: 'メタデータは、ONNXモデルに関する一般情報を表示します。' | |
| }, | |
| inputOutput: { | |
| en: 'Inputs & Outputs shows the tensor interfaces of the model.', | |
| vi: 'Đầu vào & Đầu ra hiển thị các giao diện tensor của mô hình.' | |
| } | |
| }; | |
| describe('HelpTooltip.getHelpText', () => { | |
| it('should return English text when lang is en', () => { | |
| const text = getHelpText(sampleContent, 'metadata', 'en', 'en'); | |
| expect(text).toBe('Metadata displays general information about the ONNX model.'); | |
| }); | |
| it('should return Vietnamese text when lang is vi', () => { | |
| const text = getHelpText(sampleContent, 'metadata', 'vi', 'en'); | |
| expect(text).toBe('Siêu dữ liệu hiển thị thông tin chung về mô hình ONNX.'); | |
| }); | |
| it('should return Japanese text when lang is ja', () => { | |
| const text = getHelpText(sampleContent, 'metadata', 'ja', 'en'); | |
| expect(text).toBe('メタデータは、ONNXモデルに関する一般情報を表示します。'); | |
| }); | |
| it('should fall back to default lang when requested lang is missing', () => { | |
| // inputOutput has no 'ja' key | |
| const text = getHelpText(sampleContent, 'inputOutput', 'ja', 'en'); | |
| expect(text).toBe('Inputs & Outputs shows the tensor interfaces of the model.'); | |
| }); | |
| it('should return unavailable message when helpContent is null', () => { | |
| const text = getHelpText(null, 'metadata', 'en', 'en'); | |
| expect(text).toBe('Help content unavailable'); | |
| }); | |
| it('should return unavailable message for unknown section key', () => { | |
| const text = getHelpText(sampleContent, 'unknownSection', 'en', 'en'); | |
| expect(text).toBe('Help content unavailable'); | |
| }); | |
| it('should return unavailable message when section has no matching language at all', () => { | |
| const content = { test: {} }; | |
| const text = getHelpText(content, 'test', 'fr', 'de'); | |
| expect(text).toBe('Help content unavailable'); | |
| }); | |
| }); | |
| // Test language validation logic (mirrors HelpTooltip.setLanguage) | |
| function setLanguage(lang, currentLang) { | |
| if (['en', 'vi', 'ja'].indexOf(lang) === -1) return currentLang; | |
| return lang; | |
| } | |
| describe('HelpTooltip.setLanguage', () => { | |
| it('should accept valid language codes', () => { | |
| expect(setLanguage('en', 'vi')).toBe('en'); | |
| expect(setLanguage('vi', 'en')).toBe('vi'); | |
| expect(setLanguage('ja', 'en')).toBe('ja'); | |
| }); | |
| it('should reject invalid language codes', () => { | |
| expect(setLanguage('fr', 'en')).toBe('en'); | |
| expect(setLanguage('', 'en')).toBe('en'); | |
| expect(setLanguage('EN', 'vi')).toBe('vi'); | |
| }); | |
| }); | |