Files
xarticleaudio/test/audio-generation.test.js

60 lines
1.3 KiB
JavaScript

"use strict";
const test = require("node:test");
const assert = require("node:assert/strict");
const { createAudioGenerationService } = require("../src/services/audio-generation");
test("enqueueJob generates audio and uploads it", async () => {
const uploaded = [];
const service = createAudioGenerationService({
tts: {
async synthesize() {
return Buffer.from("bytes");
},
},
storage: {
async uploadAudio(payload) {
uploaded.push(payload);
},
},
logger: { error() {} },
});
const result = await service.enqueueJob({
assetId: "a1",
text: "hello",
});
assert.equal(result.storageKey, "audio/a1.mp3");
assert.equal(uploaded.length, 1);
assert.equal(uploaded[0].key, "audio/a1.mp3");
});
test("enqueueJob invokes onFailed on error", async () => {
let failed = false;
const service = createAudioGenerationService({
tts: {
async synthesize() {
throw new Error("tts_fail");
},
},
storage: {
async uploadAudio() {},
},
logger: { error() {} },
});
await assert.rejects(
() => service.enqueueJob({
assetId: "a2",
text: "hello",
onFailed() {
failed = true;
},
}),
/tts_fail/,
);
assert.equal(failed, true);
});