Files
localMiniDrama/backend-node/test/agnesVideoBody.test.js
T
2026-06-30 15:07:31 +08:00

81 lines
2.9 KiB
JavaScript

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);
});
});