(t *testing.T)
| 1948 | } |
| 1949 | |
| 1950 | func TestSendMessageQueueBehaviorQueuesWhenBusy(t *testing.T) { |
| 1951 | t.Parallel() |
| 1952 | |
| 1953 | db, ps := dbtestutil.NewDB(t) |
| 1954 | replica := newTestServer(t, db, ps, uuid.New()) |
| 1955 | |
| 1956 | ctx := testutil.Context(t, testutil.WaitLong) |
| 1957 | user, org, model := seedChatDependencies(t, db) |
| 1958 | |
| 1959 | chat, err := replica.CreateChat(ctx, chatd.CreateOptions{ |
| 1960 | OrganizationID: org.ID, |
| 1961 | OwnerID: user.ID, |
| 1962 | Title: "queue-when-busy", |
| 1963 | ModelConfigID: model.ID, |
| 1964 | InitialUserContent: []codersdk.ChatMessagePart{codersdk.ChatMessageText("hello")}, |
| 1965 | }) |
| 1966 | require.NoError(t, err) |
| 1967 | |
| 1968 | workerID := uuid.New() |
| 1969 | chat, err = db.UpdateChatStatus(ctx, database.UpdateChatStatusParams{ |
| 1970 | ID: chat.ID, |
| 1971 | Status: database.ChatStatusRunning, |
| 1972 | WorkerID: uuid.NullUUID{UUID: workerID, Valid: true}, |
| 1973 | StartedAt: sql.NullTime{Time: time.Now(), Valid: true}, |
| 1974 | HeartbeatAt: sql.NullTime{Time: time.Now(), Valid: true}, |
| 1975 | }) |
| 1976 | require.NoError(t, err) |
| 1977 | |
| 1978 | result, err := replica.SendMessage(ctx, chatd.SendMessageOptions{ |
| 1979 | ChatID: chat.ID, |
| 1980 | Content: []codersdk.ChatMessagePart{codersdk.ChatMessageText("queued")}, |
| 1981 | BusyBehavior: chatd.SendMessageBusyBehaviorQueue, |
| 1982 | }) |
| 1983 | require.NoError(t, err) |
| 1984 | require.True(t, result.Queued) |
| 1985 | require.NotNil(t, result.QueuedMessage) |
| 1986 | require.Equal(t, database.ChatStatusRunning, result.Chat.Status) |
| 1987 | require.Equal(t, workerID, result.Chat.WorkerID.UUID) |
| 1988 | require.True(t, result.Chat.WorkerID.Valid) |
| 1989 | |
| 1990 | queued, err := db.GetChatQueuedMessages(ctx, chat.ID) |
| 1991 | require.NoError(t, err) |
| 1992 | require.Len(t, queued, 1) |
| 1993 | |
| 1994 | messages, err := db.GetChatMessagesByChatID(ctx, database.GetChatMessagesByChatIDParams{ |
| 1995 | ChatID: chat.ID, |
| 1996 | AfterID: 0, |
| 1997 | }) |
| 1998 | require.NoError(t, err) |
| 1999 | require.Len(t, messages, 1) |
| 2000 | } |
| 2001 | |
| 2002 | func TestPlanTurnPromptContract(t *testing.T) { |
| 2003 | t.Parallel() |
nothing calls this directly
no test coverage detected