agent-ecosystem/test/main/services/team/inboxMessageIdentity.test.ts

57 lines
1.5 KiB
TypeScript

import { describe, expect, it } from 'vitest';
import {
buildLegacyInboxMessageId,
getEffectiveInboxMessageId,
} from '../../../../src/main/services/team/inboxMessageIdentity';
describe('inboxMessageIdentity', () => {
it('preserves explicit persisted messageId verbatim when present', () => {
expect(
getEffectiveInboxMessageId({
messageId: ' explicit-id ',
from: 'alice',
timestamp: '2026-04-08T12:00:00.000Z',
text: 'hello',
})
).toBe(' explicit-id ');
});
it('builds legacy fallback identity from raw persisted fields only', () => {
const row = {
from: 'alice',
timestamp: '2026-04-08T12:00:00.000Z',
text: 'line 1\nline 2 ',
summary: 'ignored',
read: false,
source: 'system_notification',
};
expect(getEffectiveInboxMessageId(row)).toBe(
buildLegacyInboxMessageId(row.from, row.timestamp, row.text)
);
});
it('preserves embedded newlines and whitespace in fallback-id inputs', () => {
const base = {
from: 'alice',
timestamp: '2026-04-08T12:00:00.000Z',
text: 'line 1\nline 2',
};
const padded = {
...base,
text: 'line 1\nline 2 ',
};
expect(getEffectiveInboxMessageId(base)).not.toBe(getEffectiveInboxMessageId(padded));
});
it('returns null when persisted messageId is absent and raw identity inputs are incomplete', () => {
expect(
getEffectiveInboxMessageId({
from: 'alice',
text: 'missing timestamp',
})
).toBeNull();
});
});