UNPKG

ebt-vue3

Version:

Vue3 Library for SuttaCentral Voice EBT-Sites

220 lines (211 loc) • 6.43 kB
import should from "should"; import { setActivePinia, createPinia } from 'pinia'; import { SuttaRef } from 'scv-esm/main.mjs'; import { default as EbtSettings } from '../src/ebt-settings.mjs'; import { logger } from "log-instance/index.mjs"; import fetch from "node-fetch"; logger.logLevel = 'warn'; import { useSettingsStore, useVolatileStore, useAudioStore, } from '../src/index.mjs'; import { default as IdbSutta } from "../src/idb-sutta.mjs"; import * as Idb from "idb-keyval"; import { ref, shallowRef, watch, watchEffect } from "vue"; const THIG1_1_SOMA = SuttaRef.create('thig1.1/en/soma'); // mock global environment import "fake-indexeddb/auto"; global.window = { location: { hash: undefined, }, } import 'mock-local-storage' const MSSEC = 1000; const MSDAY = 24*3600*MSSEC; const SERVER_ROOT = 'https://www.api.sc-voice.net/scv'; (typeof describe === 'function') && describe("stores/audio.mjs", function () { this.timeout(5*1000); beforeEach(() => { window.localStorage = global.localStorage setActivePinia(createPinia()); global.fetch = fetch; }); it("default state", ()=>{ let audio = useAudioStore(); should(audio).properties({ nFetch: 0, nGet: 0, nSet: 0, audioIndex: 0, audioSutta: null, audioScid: '', }); }); it("segmentAudioUrl() en", ()=>{ let audio = useAudioStore(); let suttaRef = SuttaRef.create('thig1.1:0.1/en/sujato'); should(audio.segmentAudioUrl(suttaRef)).equal( `${SERVER_ROOT}/play/segment/thig1.1/en/sujato/thig1.1:0.1/Amy/Aditi` ); }); it("segmentAudioUrl() de", ()=>{ let audio = useAudioStore(); let sutta_uid = 'thig1.1'; let scid = `${sutta_uid}:0.1`; let langTrans = 'de'; let author = 'sabbamitta'; let vnameTrans = 'Marlene'; let vnameRoot = 'sujato_pli'; let settings = new EbtSettings({langTrans,vnameTrans, vnameRoot}); let suttaRef = SuttaRef.create(`${scid}/${langTrans}/${author}`); should(audio.segmentAudioUrl(suttaRef, settings)).equal([ `${SERVER_ROOT}/play/segment`, sutta_uid, langTrans, author, scid, vnameTrans, vnameRoot, ].join('/')); }); it("langAudioUrl() segAudio", async()=>{ let audio = useAudioStore(); let sutta_uid = "thig1.1"; let scid = `${sutta_uid}:0.1`; let vnameRoot = "Aditi"; let langRoot = 'pli'; let translator = 'ms'; let guid = "56e190c8cde4e769f5458eab81949bc0"; let idOrRef = scid; let lang = 'pli'; let segAudio = await audio.getSegmentAudio(idOrRef); let nFetch0 = audio.nFetch; should(await audio.langAudioUrl({idOrRef, lang, segAudio})).equal([ SERVER_ROOT, 'audio', sutta_uid, langRoot, translator, vnameRoot, guid, ].join('/')); should(audio.nFetch).equal(nFetch0); // Pali audio for English translation idOrRef = `${scid}/en/sujato`; should(await audio.langAudioUrl({idOrRef, lang, segAudio})).equal([ SERVER_ROOT, 'audio', sutta_uid, langRoot, translator, vnameRoot, guid, ].join('/')); should(audio.nFetch).equal(nFetch0); }); it("langAudioUrl() pli", async()=>{ let audio = useAudioStore(); let sutta_uid = "thig1.1"; let scid = `${sutta_uid}:0.1`; let vnameRoot = "Aditi"; let langRoot = 'pli'; let translator = 'ms'; let guid = "56e190c8cde4e769f5458eab81949bc0"; let idOrRef = scid; let lang = 'pli'; should(await audio.langAudioUrl({idOrRef, lang})).equal([ SERVER_ROOT, 'audio', sutta_uid, langRoot, translator, vnameRoot, guid, ].join('/')); // Pali audio for English translation idOrRef = `${scid}/en/sujato`; should(await audio.langAudioUrl({idOrRef, lang})).equal([ SERVER_ROOT, 'audio', sutta_uid, langRoot, translator, vnameRoot, guid, ].join('/')); }); it("langAudioUrl() en", async()=>{ let audio = useAudioStore(); let sutta_uid = "thig1.1"; let scid = `${sutta_uid}:0.1`; let vname = "Amy"; let langTrans = 'en'; let translator = 'sujato'; let guid = "84df812bf23b0203e0181e83b2a51dc4"; let idOrRef = scid; should(await audio.langAudioUrl({idOrRef, lang:langTrans})).equal([ SERVER_ROOT, 'audio', sutta_uid, langTrans, translator, vname, guid, ].join('/')); }); it("langAudioUrl() de", async()=>{ let audio = useAudioStore(); let sutta_uid = "thig1.1"; let scid = `${sutta_uid}:0.1`; let vnameTrans = "Vicki"; let vnameRoot = 'sujato_pli'; let langTrans = 'de'; let translator = 'sabbamitta'; let settings = new EbtSettings({langTrans, vnameTrans, vnameRoot}); should(settings.vnameTrans).equal(vnameTrans); let guid = "293c41636392500b0e85a1e8061f36ab"; let idOrRef = scid; should(await audio.langAudioUrl({idOrRef:scid, lang:langTrans, settings})) .equal([ SERVER_ROOT, 'audio', sutta_uid, langTrans, translator, vnameTrans, guid, ].join('/')); }); it("fetchArrayBuffer()", async()=>{ let audio = useAudioStore(); let lang = 'pli'; let idOrRef = SuttaRef.create('thig1.1:0.1/en/sujato'); let url = await audio.langAudioUrl({idOrRef, lang}); let abuf = await audio.fetchArrayBuffer(url); should(abuf.byteLength).above(11640).below(11650); }); it("bindSegmentAudio()", async()=>{ let audio = useAudioStore(); let volatile = useVolatileStore(); let sutta_uid = 'thig1.1'; let segnum = '0.2'; let lang = 'en'; let author = 'sujato'; let idOrRef = `${sutta_uid}:${segnum}/${lang}/${author}`; let suttaRef = SuttaRef.create(idOrRef); global.window.location = {hash:null}; let card = volatile.setRoute(`#/sutta/${idOrRef}`); let segAudio = await audio.bindSegmentAudio(); let { vnameRoot, vnameTrans, langTrans } = segAudio; let url = `https://www.api.sc-voice.net/scv/audio/${sutta_uid}`; let pliGuid = '44e4c425d93b9146ef5b8b16cbd8bac5'; should(audio.pliAudioUrl) .equal(`${url}/pli/${author}/${vnameRoot}/${pliGuid}`); let transGuid = '9767a87089cddaaecc32e37d20531fb9'; should(langTrans).equal(lang); should(audio.transAudioUrl) .equal(`${url}/${langTrans}/${author}/${vnameTrans}/${transGuid}`); }); })