فهرست منبع

test(time-context): cover formatter invariant failure

Tianyi Cui 1 ماه پیش
والد
کامیت
1e6e92fb0a
1فایلهای تغییر یافته به همراه22 افزوده شده و 1 حذف شده
  1. 22 1
      packages/context/time-context/tests/invariant.spec.ts

+ 22 - 1
packages/context/time-context/tests/invariant.spec.ts

@@ -1,5 +1,5 @@
 import { createUserMessage } from '@deepseek-ai/dsh-llm'
-import { describe, expect, it } from 'vitest'
+import { describe, expect, it, vi } from 'vitest'
 import { Context } from 'cordis'
 import type { ContentBlock } from '@deepseek-ai/dsh-llm'
 import SessionStore, { Session, SessionId, type SessionEvent } from '@deepseek-ai/dsh-session'
@@ -128,6 +128,27 @@ describe('time-context invariants', () => {
     }).toThrow(/rendered timestamp does not match the unique browser zone/)
   })
 
+  it('reports browser-zone timestamp formatter failures as invariant violations', async () => {
+    const ctx = await setup()
+    const policy = 'Browser time zone for this request: Asia/Shanghai. '
+      + 'Interpret otherwise-unqualified dates and times in this zone.'
+    const formatToParts = vi.spyOn(Intl.DateTimeFormat.prototype, 'formatToParts')
+      .mockImplementationOnce(() => { throw new RangeError('formatter unavailable') })
+    try {
+      expect(() => {
+        ctx.emit('session/event', preparing(1, 1, 'Asia/Shanghai'), event(reading(
+          '1',
+          '1',
+          'model-visible message',
+          '2026-07-14T08:00:00+08:00[Asia/Shanghai]',
+          policy,
+        )))
+      }).toThrow(/browser zone cannot format its durable timestamp: RangeError: formatter unavailable/)
+    } finally {
+      formatToParts.mockRestore()
+    }
+  })
+
   it('rejects invalid browser provenance loaded across the durable boundary', async () => {
     const ctx = await setup()
     const timeZone = 'Not/A_Real_Zone'