fix(coderd/x/chatd): seed afterMessageID test directly (#25665)

This fixes the flaky `TestSubscribeAfterMessageID` by seeding its chat
and messages directly, so the test no longer creates pending work that a
chat worker can pick up. The assertion now covers only the
`afterMessageID` subscription behavior, independent of chat processing
lifecycle timing.

Closes DEVEX-326
Closes https://github.com/coder/internal/issues/1489
This commit is contained in:
Ethan
2026-05-26 13:16:32 +10:00
committed by GitHub
parent 84240da0c1
commit fe13bb2a20
+22 -9
View File
@@ -4782,18 +4782,30 @@ func TestSubscribeAfterMessageID(t *testing.T) {
ctx := testutil.Context(t, testutil.WaitLong) ctx := testutil.Context(t, testutil.WaitLong)
user, org, model := seedChatDependencies(t, db) user, org, model := seedChatDependencies(t, db)
// Create a chat. This inserts one initial "user" message. chat := dbgen.Chat(t, db, database.Chat{
chat, err := replica.CreateChat(ctx, chatd.CreateOptions{ OrganizationID: org.ID,
OrganizationID: org.ID, OwnerID: user.ID,
OwnerID: user.ID, LastModelConfigID: model.ID,
Title: "after-id-test", Title: "after-id-test",
ModelConfigID: model.ID, Status: database.ChatStatusWaiting,
InitialUserContent: []codersdk.ChatMessagePart{codersdk.ChatMessageText("first")}, })
// Seed all messages directly so this subscription test is independent
// of chat processing lifecycle behavior.
firstContent, err := chatprompt.MarshalParts([]codersdk.ChatMessagePart{
codersdk.ChatMessageText("first"),
}) })
require.NoError(t, err) require.NoError(t, err)
// Insert two more messages so we have three total visible _ = dbgen.ChatMessage(t, db, database.ChatMessage{
// messages (the initial user message plus these two). ChatID: chat.ID,
CreatedBy: uuid.NullUUID{UUID: user.ID, Valid: true},
ModelConfigID: uuid.NullUUID{UUID: model.ID, Valid: true},
Role: database.ChatMessageRoleUser,
ContentVersion: chatprompt.CurrentContentVersion,
Content: firstContent,
})
secondContent, err := chatprompt.MarshalParts([]codersdk.ChatMessagePart{ secondContent, err := chatprompt.MarshalParts([]codersdk.ChatMessagePart{
codersdk.ChatMessageText("second"), codersdk.ChatMessageText("second"),
}) })
@@ -4814,6 +4826,7 @@ func TestSubscribeAfterMessageID(t *testing.T) {
_ = dbgen.ChatMessage(t, db, database.ChatMessage{ _ = dbgen.ChatMessage(t, db, database.ChatMessage{
ChatID: chat.ID, ChatID: chat.ID,
CreatedBy: uuid.NullUUID{UUID: user.ID, Valid: true},
ModelConfigID: uuid.NullUUID{UUID: model.ID, Valid: true}, ModelConfigID: uuid.NullUUID{UUID: model.ID, Valid: true},
Role: database.ChatMessageRoleUser, Role: database.ChatMessageRoleUser,
ContentVersion: chatprompt.CurrentContentVersion, ContentVersion: chatprompt.CurrentContentVersion,