60 lines
1.3 KiB
JavaScript
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);
|
|
});
|