init
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
const { describe, it } = require('node:test');
|
||||
const assert = require('node:assert/strict');
|
||||
const { buildAgnesVideoImagePayload, formatVideoPostBodyForLog } = require('../src/services/videoClient');
|
||||
|
||||
describe('formatVideoPostBodyForLog', () => {
|
||||
it('keeps full http URLs and labels extra_body images with index', () => {
|
||||
const formatted = formatVideoPostBodyForLog({
|
||||
model: 'agnes-video-v2.0',
|
||||
prompt: 'test prompt',
|
||||
extra_body: {
|
||||
image: ['https://cdn/a.jpg', 'https://cdn/b.png'],
|
||||
},
|
||||
});
|
||||
assert.deepEqual(formatted.extra_body.image, [
|
||||
'[0] https://cdn/a.jpg',
|
||||
'[1] https://cdn/b.png',
|
||||
]);
|
||||
assert.equal(formatted.prompt, 'test prompt');
|
||||
});
|
||||
|
||||
it('summarizes base64 image fields', () => {
|
||||
const dataUrl = 'data:image/png;base64,' + 'A'.repeat(100);
|
||||
const formatted = formatVideoPostBodyForLog({ image: dataUrl });
|
||||
assert.match(formatted.image, /^\(base64, \d+ chars\)$/);
|
||||
});
|
||||
});
|
||||
|
||||
describe('buildAgnesVideoImagePayload', () => {
|
||||
it('uses extra_body.image array for omni multi-reference without keyframes mode', () => {
|
||||
const refs = ['https://cdn/a.jpg', 'https://cdn/b.png', 'https://cdn/c.png'];
|
||||
const out = buildAgnesVideoImagePayload({
|
||||
useOmniReference: true,
|
||||
resolvedRefs: refs,
|
||||
firstResolved: 'https://cdn/a.jpg',
|
||||
lastResolved: 'https://cdn/z.jpg',
|
||||
});
|
||||
assert.equal(out.strategy, 'omni_reference_extra_body');
|
||||
assert.deepEqual(out.extra_body, { image: refs });
|
||||
assert.equal(out.image, undefined);
|
||||
assert.equal(out.extra_body.mode, undefined);
|
||||
});
|
||||
|
||||
it('uses single top-level image string for one omni reference', () => {
|
||||
const out = buildAgnesVideoImagePayload({
|
||||
useOmniReference: true,
|
||||
resolvedRefs: ['https://cdn/scene.jpg'],
|
||||
firstResolved: null,
|
||||
lastResolved: null,
|
||||
});
|
||||
assert.equal(out.strategy, 'omni_reference_single');
|
||||
assert.equal(out.image, 'https://cdn/scene.jpg');
|
||||
});
|
||||
|
||||
it('uses extra_body keyframes only for classic first/last (not omni)', () => {
|
||||
const out = buildAgnesVideoImagePayload({
|
||||
useOmniReference: false,
|
||||
resolvedRefs: [],
|
||||
firstResolved: 'https://cdn/first.jpg',
|
||||
lastResolved: 'https://cdn/last.jpg',
|
||||
});
|
||||
assert.equal(out.strategy, 'classic_keyframes');
|
||||
assert.deepEqual(out.extra_body, {
|
||||
mode: 'keyframes',
|
||||
image: ['https://cdn/first.jpg', 'https://cdn/last.jpg'],
|
||||
});
|
||||
assert.equal(out.image, undefined);
|
||||
});
|
||||
|
||||
it('does not use keyframes mode when omni refs exist', () => {
|
||||
const refs = ['https://cdn/s.jpg', 'https://cdn/c.jpg'];
|
||||
const out = buildAgnesVideoImagePayload({
|
||||
useOmniReference: true,
|
||||
resolvedRefs: refs,
|
||||
firstResolved: 'https://cdn/s.jpg',
|
||||
lastResolved: 'https://cdn/l.jpg',
|
||||
});
|
||||
assert.equal(out.strategy, 'omni_reference_extra_body');
|
||||
assert.equal(out.extra_body.mode, undefined);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user