57 lines
1.5 KiB
TypeScript
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();
|
|
});
|
|
});
|