feat: add adaptive soundtrack layer assets
This commit is contained in:
@@ -64,6 +64,10 @@ describe('approved asset publication closure', () => {
|
||||
['soundtrack-intro-mp3', 'nightdrive-intro.mp3'],
|
||||
['soundtrack-main-opus', 'nightdrive-main.opus'],
|
||||
['soundtrack-main-mp3', 'nightdrive-main.mp3'],
|
||||
['soundtrack-afterglow-opus', 'nightdrive-afterglow.opus'],
|
||||
['soundtrack-afterglow-mp3', 'nightdrive-afterglow.mp3'],
|
||||
['soundtrack-drive-lift-opus', 'nightdrive-drive-lift.opus'],
|
||||
['soundtrack-drive-lift-mp3', 'nightdrive-drive-lift.mp3'],
|
||||
].map(([id, fileName], index) => {
|
||||
const bytes = Buffer.from(`approved soundtrack asset ${index}`);
|
||||
return { id, fileName, bytes, sha256: createHash('sha256').update(bytes).digest('hex') };
|
||||
@@ -78,6 +82,8 @@ describe('approved asset publication closure', () => {
|
||||
soundtrack: {
|
||||
intro: { opusAssetId: 'soundtrack-intro-opus', mp3AssetId: 'soundtrack-intro-mp3' },
|
||||
main: { opusAssetId: 'soundtrack-main-opus', mp3AssetId: 'soundtrack-main-mp3' },
|
||||
afterglow: { opusAssetId: 'soundtrack-afterglow-opus', mp3AssetId: 'soundtrack-afterglow-mp3' },
|
||||
driveLift: { opusAssetId: 'soundtrack-drive-lift-opus', mp3AssetId: 'soundtrack-drive-lift-mp3' },
|
||||
},
|
||||
}));
|
||||
await mkdir(join(root, 'inputs/prepared-assets'), { recursive: true });
|
||||
|
||||
@@ -47,6 +47,10 @@ describe('approved public portfolio projection', () => {
|
||||
content.soundtrack.intro.mp3AssetId,
|
||||
content.soundtrack.main.opusAssetId,
|
||||
content.soundtrack.main.mp3AssetId,
|
||||
content.soundtrack.afterglow.opusAssetId,
|
||||
content.soundtrack.afterglow.mp3AssetId,
|
||||
content.soundtrack.driveLift.opusAssetId,
|
||||
content.soundtrack.driveLift.mp3AssetId,
|
||||
]),
|
||||
];
|
||||
expect([...publishedReferences].sort()).toEqual(manifest.assets.map((asset) => asset.id).sort());
|
||||
|
||||
@@ -118,6 +118,28 @@ describe('artifact verification', () => {
|
||||
await expect(verifyArtifactDirectory(directory, inputs, contract)).resolves.toBeUndefined();
|
||||
});
|
||||
|
||||
it.each([
|
||||
{
|
||||
name: 'an omitted adaptive soundtrack file',
|
||||
mutate: async (directory: string) => rm(join(directory, 'assets/nightdrive-afterglow.opus')),
|
||||
error: /missing.*artifact|digest|public asset/iu,
|
||||
},
|
||||
{
|
||||
name: 'an altered adaptive soundtrack file',
|
||||
mutate: async (directory: string) => writeFile(join(directory, 'assets/nightdrive-drive-lift.mp3'), 'altered'),
|
||||
error: /digest does not match|hash/u,
|
||||
},
|
||||
{
|
||||
name: 'an unreferenced adaptive soundtrack file',
|
||||
mutate: async (directory: string) => writeFile(join(directory, 'assets/nightdrive-unreferenced.opus'), 'unreferenced'),
|
||||
error: /unexpected artifact|unreferenced/u,
|
||||
},
|
||||
])('rejects $name', async ({ mutate, error }) => {
|
||||
const { directory, inputs, contract } = await writeValidArtifacts();
|
||||
await mutate(directory);
|
||||
await expect(verifyArtifactDirectory(directory, inputs, contract)).rejects.toThrow(error);
|
||||
});
|
||||
|
||||
it.each([
|
||||
{
|
||||
name: 'an unexpected preview sitemap',
|
||||
|
||||
Reference in New Issue
Block a user