File size: 2,208 Bytes
d522ffa
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import { describe, expect, it } from 'vitest';
import { mergeLegacyMetadata } from '../../src/sessions/source.js';

describe('mergeLegacyMetadata', () => {
  it('fills a missing custom title from metadata, skipping "Untitled"', () => {
    expect(mergeLegacyMetadata({}, { title: 'Legacy Title' }).custom_title).toBe('Legacy Title');
    expect(
      mergeLegacyMetadata({ custom_title: null }, { title: 'Untitled' }).custom_title,
    ).toBe(null);
    expect(mergeLegacyMetadata({}, { title: 'Untitled' }).custom_title).toBeUndefined();
  });

  it('keeps the state.json title when both exist', () => {
    expect(
      mergeLegacyMetadata({ custom_title: 'State Title' }, { title: 'Legacy Title' }).custom_title,
    ).toBe('State Title');
  });

  it('fills archive fields only while state holds defaults', () => {
    const merged = mergeLegacyMetadata(
      { archived: false, archived_at: null, auto_archive_exempt: false },
      { archived: true, archived_at: 9999, auto_archive_exempt: true },
    );
    expect(merged).toMatchObject({ archived: true, archived_at: 9999, auto_archive_exempt: true });

    const kept = mergeLegacyMetadata(
      { archived: true, archived_at: 1 },
      { archived: false, archived_at: 9999 },
    );
    expect(kept).toMatchObject({ archived: true, archived_at: 1 });
  });

  it('fills wire_mtime only when state has none', () => {
    expect(mergeLegacyMetadata({}, { wire_mtime: 1234.5 }).wire_mtime).toBe(1234.5);
    expect(mergeLegacyMetadata({ wire_mtime: 1 }, { wire_mtime: 1234.5 }).wire_mtime).toBe(1);
    expect(mergeLegacyMetadata({ wire_mtime: null }, { wire_mtime: 1234.5 }).wire_mtime).toBe(
      1234.5,
    );
  });

  it('fills title-generation counters only while at defaults', () => {
    const merged = mergeLegacyMetadata({}, { title_generated: true, title_generate_attempts: 2 });
    expect(merged).toMatchObject({ title_generated: true, title_generate_attempts: 2 });
    const kept = mergeLegacyMetadata(
      { title_generated: false, title_generate_attempts: 1 },
      { title_generated: true, title_generate_attempts: 2 },
    );
    expect(kept).toMatchObject({ title_generated: true, title_generate_attempts: 1 });
  });
});