sessionOrder.test.ts 1014 B

12345678910111213141516171819
  1. import { describe, expect, it } from 'vitest'
  2. import type { SessionSummary } from '@shared/types'
  3. import { appendSessionPage, pinnedSessionsFirst } from '@/utils/sessionOrder'
  4. function session(id: string, pinned = false): SessionSummary {
  5. return { id, profile: 'yaoyao', source: 'web', title: id, pinned, messageCount: 0, toolCallCount: 0, startedAt: 0, updatedAt: 0 }
  6. }
  7. describe('session sidebar order', () => {
  8. it('puts pinned conversations first without reordering either server bucket', () => {
  9. expect(pinnedSessionsFirst([session('recent'), session('pinned-one', true), session('older'), session('pinned-two', true)])
  10. .map(value => value.id)).toEqual(['pinned-one', 'pinned-two', 'recent', 'older'])
  11. })
  12. it('appends a page without duplicating sessions and promotes newly discovered pins', () => {
  13. expect(appendSessionPage([session('recent')], [session('pinned', true), session('recent'), session('older')])
  14. .map(value => value.id)).toEqual(['pinned', 'recent', 'older'])
  15. })
  16. })