TestEditMessageRejectsUnknownModelConfig verifies the edit handler returns ErrInvalidModelConfigID when the requested model does not exist, mirroring SendMessage's validation.
(t *testing.T)
| 9039 | // returns ErrInvalidModelConfigID when the requested model does not |
| 9040 | // exist, mirroring SendMessage's validation. |
| 9041 | func TestEditMessageRejectsUnknownModelConfig(t *testing.T) { |
| 9042 | t.Parallel() |
| 9043 | |
| 9044 | db, ps := dbtestutil.NewDB(t) |
| 9045 | replica := newTestServer(t, db, ps, uuid.New()) |
| 9046 | |
| 9047 | ctx := testutil.Context(t, testutil.WaitLong) |
| 9048 | user, org, modelA := seedChatDependencies(t, db) |
| 9049 | |
| 9050 | chat, err := replica.CreateChat(ctx, chatd.CreateOptions{ |
| 9051 | OwnerID: user.ID, |
| 9052 | OrganizationID: org.ID, |
| 9053 | Title: "edit-unknown-model", |
| 9054 | ModelConfigID: modelA.ID, |
| 9055 | InitialUserContent: []codersdk.ChatMessagePart{codersdk.ChatMessageText("original")}, |
| 9056 | }) |
| 9057 | require.NoError(t, err) |
| 9058 | |
| 9059 | initial, err := db.GetChatMessagesByChatID(ctx, database.GetChatMessagesByChatIDParams{ |
| 9060 | ChatID: chat.ID, |
| 9061 | AfterID: 0, |
| 9062 | }) |
| 9063 | require.NoError(t, err) |
| 9064 | require.Len(t, initial, 1) |
| 9065 | |
| 9066 | _, err = replica.EditMessage(ctx, chatd.EditMessageOptions{ |
| 9067 | ChatID: chat.ID, |
| 9068 | EditedMessageID: initial[0].ID, |
| 9069 | Content: []codersdk.ChatMessagePart{codersdk.ChatMessageText("edited")}, |
| 9070 | ModelConfigID: uuid.New(), |
| 9071 | }) |
| 9072 | require.ErrorIs(t, err, chatd.ErrInvalidModelConfigID) |
| 9073 | |
| 9074 | // The edit must roll back: the original message should still be |
| 9075 | // present and the chat's LastModelConfigID unchanged. |
| 9076 | stillThere, err := db.GetChatMessagesByChatID(ctx, database.GetChatMessagesByChatIDParams{ |
| 9077 | ChatID: chat.ID, |
| 9078 | AfterID: 0, |
| 9079 | }) |
| 9080 | require.NoError(t, err) |
| 9081 | require.Len(t, stillThere, 1) |
| 9082 | require.Equal(t, initial[0].ID, stillThere[0].ID) |
| 9083 | |
| 9084 | storedChat, err := db.GetChatByID(ctx, chat.ID) |
| 9085 | require.NoError(t, err) |
| 9086 | require.Equal(t, modelA.ID, storedChat.LastModelConfigID) |
| 9087 | } |
| 9088 | |
| 9089 | func TestPromoteQueuedRejectsArchivedChat(t *testing.T) { |
| 9090 | t.Parallel() |
nothing calls this directly
no test coverage detected