feat: integrate authored nightdrive soundtrack

This commit is contained in:
2026-09-04 14:39:28 +03:00
parent eb7f276b91
commit 745fa8169e
39 changed files with 1013 additions and 714 deletions

View File

@@ -24,6 +24,10 @@ type MutableContentFixture = {
};
toolkit: Array<{ technologies: Array<{ assetId?: string }> }>;
metadata: { socialPreviewAssetId?: string };
soundtrack?: {
intro: { opusAssetId: string; mp3AssetId: string };
main: { opusAssetId: string; mp3AssetId: string };
};
};
const cloneContent = (): MutableContentFixture => structuredClone(validContent) as MutableContentFixture;
@@ -39,6 +43,56 @@ describe('content schemas', () => {
expect(parsePublicAssetManifest({ assets: [] })).toEqual({ assets: [] });
});
it('accepts an optional soundtrack whose audio variants have exact manifest closure', () => {
const content = cloneContent();
content.soundtrack = {
intro: { opusAssetId: 'soundtrack-intro-opus', mp3AssetId: 'soundtrack-intro-mp3' },
main: { opusAssetId: 'soundtrack-main-opus', mp3AssetId: 'soundtrack-main-mp3' },
};
const audioMetadata = {
width: null,
height: null,
rightsHolder: 'Luca Pîslaru',
license: 'All rights reserved',
attribution: 'Original soundtrack by Luca Pîslaru',
};
const soundtrackAssets = [
{ id: 'soundtrack-intro-opus', fileName: 'nightdrive-intro.opus', sha256: 'a'.repeat(64), mediaType: 'audio/ogg', durationMs: 56_064, ...audioMetadata },
{ id: 'soundtrack-intro-mp3', fileName: 'nightdrive-intro.mp3', sha256: 'b'.repeat(64), mediaType: 'audio/mpeg', durationMs: 56_064, ...audioMetadata },
{ id: 'soundtrack-main-opus', fileName: 'nightdrive-main.opus', sha256: 'c'.repeat(64), mediaType: 'audio/ogg', durationMs: 178_605, ...audioMetadata },
{ id: 'soundtrack-main-mp3', fileName: 'nightdrive-main.mp3', sha256: 'd'.repeat(64), mediaType: 'audio/mpeg', durationMs: 178_605, ...audioMetadata },
];
const manifest = {
assets: [...(validManifest as { assets: unknown[] }).assets, ...soundtrackAssets],
};
expect(validateProductionInputs(content, manifest, validSite, new URL('file:///prepared/')).content.soundtrack)
.toEqual(content.soundtrack);
content.soundtrack.main.mp3AssetId = 'missing-soundtrack';
expect(() => validateProductionInputs(content, manifest, validSite, new URL('file:///prepared/')))
.toThrow(/unmanifested asset reference: missing-soundtrack/i);
});
it('requires audio assets to have null dimensions and a positive duration', () => {
const audio = {
id: 'soundtrack-main-opus',
fileName: 'nightdrive-main.opus',
sha256: 'a'.repeat(64),
mediaType: 'audio/ogg',
width: null,
height: null,
durationMs: 178_605,
rightsHolder: 'Luca Pîslaru',
license: 'All rights reserved',
attribution: 'Original soundtrack by Luca Pîslaru',
};
expect(() => parsePublicAssetManifest({ assets: [audio] })).not.toThrow();
expect(() => parsePublicAssetManifest({ assets: [{ ...audio, width: 1 }] })).toThrow(/audio assets require null dimensions/i);
expect(() => parsePublicAssetManifest({ assets: [{ ...audio, durationMs: null }] })).toThrow(/audio assets require.*duration/i);
});
it('accepts the approved generic private project titles', () => {
for (const title of [
'Private self-hosted medication tracker',