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();
});

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();
});

Add test for localized spoken language name
Add test for localized spoken language name
