model-explorer / js /tests /helpTooltip.test.js
mr4's picture
Upload 71 files
9bd422a verified
/**
* 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');
});
});