test(session): cover the turn/end step invariant and content shape guard
- invariant.spec: a turn/end whose step does not match the last opened step fails with 'expected last step'. - session.spec: a seed message whose content is not an array fails with 'message has invalid content'.
This commit is contained in:
@@ -131,6 +131,13 @@ describe('session-log invariants', () => {
|
|||||||
expect(() => second.append('turn/start', { turn: 3 }))
|
expect(() => second.append('turn/start', { turn: 3 }))
|
||||||
.toThrow(/expected turn 2, got 3/)
|
.toThrow(/expected turn 2, got 3/)
|
||||||
|
|
||||||
|
const third = (await setup()).ctx.sessions.create()
|
||||||
|
third.append('turn/start', { turn: 1 })
|
||||||
|
third.append('step/start', { turn: 1, step: 1 })
|
||||||
|
third.append('step/end', { turn: 1, step: 1 })
|
||||||
|
expect(() => third.append('turn/end', { turn: 1, step: 2, reason: { kind: 'completed' } }))
|
||||||
|
.toThrow(/expected last step 1, got 2/)
|
||||||
|
|
||||||
const outside = (await setup()).ctx.sessions.create()
|
const outside = (await setup()).ctx.sessions.create()
|
||||||
expect(() => outside.append('user/message', createUserMessage({
|
expect(() => outside.append('user/message', createUserMessage({
|
||||||
content: [{ type: 'text', text: 'idle context' }],
|
content: [{ type: 'text', text: 'idle context' }],
|
||||||
|
|||||||
@@ -232,6 +232,14 @@ describe('Session', () => {
|
|||||||
},
|
},
|
||||||
message: 'message has invalid source',
|
message: 'message has invalid source',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: 'content shape',
|
||||||
|
event: {
|
||||||
|
type: 'user/message', seq: 0, time: 1, surfaceOp: 'append',
|
||||||
|
data: { ...user, content: 'not-an-array' },
|
||||||
|
},
|
||||||
|
message: 'message has invalid content',
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: 'assistant source',
|
name: 'assistant source',
|
||||||
event: {
|
event: {
|
||||||
|
|||||||
Reference in New Issue
Block a user