55 lines
1.6 KiB
JavaScript
55 lines
1.6 KiB
JavaScript
// @vitest-environment node
|
|
|
|
import { describe, expect, it } from 'vitest';
|
|
|
|
import {
|
|
formatShangwutongInlineContent,
|
|
shangwutongInlineMediaIndexes,
|
|
} from './inlineMedia.js';
|
|
|
|
describe('Shangwutong inline media', () => {
|
|
it('replaces declared attachment markers while preserving order', () => {
|
|
const content =
|
|
'前中后';
|
|
const attachments = [
|
|
{ dataUrl: '/uploads/emoji-a.gif' },
|
|
{ dataUrl: '/uploads/emoji-b.gif' },
|
|
];
|
|
|
|
expect(
|
|
formatShangwutongInlineContent(content, attachments, {
|
|
swt: { inline_media: [0, 1] },
|
|
})
|
|
).toBe(
|
|
'前中后'
|
|
);
|
|
});
|
|
|
|
it('appends inline images when translated content omits markers', () => {
|
|
expect(
|
|
formatShangwutongInlineContent(
|
|
'translated',
|
|
[{ dataUrl: '/emoji.gif' }],
|
|
{
|
|
swt: { inline_media: [0] },
|
|
}
|
|
)
|
|
).toBe('translated\n');
|
|
});
|
|
|
|
it('does not resolve undeclared markers', () => {
|
|
const content = '';
|
|
expect(
|
|
formatShangwutongInlineContent(content, [{ dataUrl: '/private.png' }], {
|
|
swt: { inline_media: [] },
|
|
})
|
|
).toBe(content);
|
|
});
|
|
|
|
it('accepts numeric strings from JSON attributes', () => {
|
|
expect(
|
|
shangwutongInlineMediaIndexes({ swt: { inline_media: ['2'] } })
|
|
).toEqual(new Set([2]));
|
|
});
|
|
});
|