const test = require('tap').test; const TextToSpeech = require('../../src/extensions/scratch3_text2speech/index.js'); const fakeStage = { textToSpeechLanguage: null }; const fakeRuntime = { getTargetForStage: () => fakeStage, on: () => {} // Stub out listener methods used in constructor. }; const ext = new TextToSpeech(fakeRuntime); test('if no language is saved in the project, use default', t => { t.strictEqual(ext.getCurrentLanguage(), 'en'); t.end(); }); test('if an unsupported language is dropped onto the set language block, use default', t => { ext.setLanguage({LANGUAGE: 'nope'}); t.strictEqual(ext.getCurrentLanguage(), 'en'); t.end(); }); test('if a supported language name is dropped onto the set language block, use it', t => { ext.setLanguage({LANGUAGE: 'español'}); t.strictEqual(ext.getCurrentLanguage(), 'es'); t.end(); }); test('get the extension locale for a supported locale that differs', t => { ext.setLanguage({LANGUAGE: 'ja-hira'}); t.strictEqual(ext.getCurrentLanguage(), 'ja'); t.end(); }); test('use localized spoken language name in place of localized written language name', t => { ext.getEditorLanguage = () => 'es'; const languageMenu = ext.getLanguageMenu(); const localizedNameForChineseInSpanish = languageMenu.find(el => el.value === 'zh-cn').text; t.strictEqual(localizedNameForChineseInSpanish, 'Chino (Mandarín)'); // i.e. should not be 'Chino (simplificado)' t.end(); });