feat: integrate authored nightdrive soundtrack
This commit is contained in:
@@ -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',
|
||||
|
||||
Reference in New Issue
Block a user