feat: add polar x tts and storage integration adapters with tests

This commit is contained in:
Codex
2026-02-18 13:35:03 +00:00
parent de2ddf258f
commit d68ccc70bf
10 changed files with 678 additions and 0 deletions

View File

@@ -0,0 +1,59 @@
"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);
});