(t *testing.T)
| 1507 | } |
| 1508 | |
| 1509 | func TestInterruptChatClearsWorkerInDatabase(t *testing.T) { |
| 1510 | t.Parallel() |
| 1511 | |
| 1512 | db, ps := dbtestutil.NewDB(t) |
| 1513 | replica := newTestServer(t, db, ps, uuid.New()) |
| 1514 | |
| 1515 | ctx := testutil.Context(t, testutil.WaitLong) |
| 1516 | user, org, model := seedChatDependencies(t, db) |
| 1517 | |
| 1518 | chat, err := replica.CreateChat(ctx, chatd.CreateOptions{ |
| 1519 | OrganizationID: org.ID, |
| 1520 | OwnerID: user.ID, |
| 1521 | Title: "db-transition", |
| 1522 | ModelConfigID: model.ID, |
| 1523 | InitialUserContent: []codersdk.ChatMessagePart{codersdk.ChatMessageText("hello")}, |
| 1524 | }) |
| 1525 | require.NoError(t, err) |
| 1526 | |
| 1527 | chat, err = db.UpdateChatStatus(ctx, database.UpdateChatStatusParams{ |
| 1528 | ID: chat.ID, |
| 1529 | Status: database.ChatStatusRunning, |
| 1530 | WorkerID: uuid.NullUUID{UUID: uuid.New(), Valid: true}, |
| 1531 | StartedAt: sql.NullTime{Time: time.Now(), Valid: true}, |
| 1532 | HeartbeatAt: sql.NullTime{Time: time.Now(), Valid: true}, |
| 1533 | }) |
| 1534 | require.NoError(t, err) |
| 1535 | |
| 1536 | updated := replica.InterruptChat(ctx, chat) |
| 1537 | require.Equal(t, database.ChatStatusWaiting, updated.Status) |
| 1538 | require.False(t, updated.WorkerID.Valid) |
| 1539 | |
| 1540 | fromDB, err := db.GetChatByID(ctx, chat.ID) |
| 1541 | require.NoError(t, err) |
| 1542 | require.Equal(t, database.ChatStatusWaiting, fromDB.Status) |
| 1543 | require.False(t, fromDB.WorkerID.Valid) |
| 1544 | } |
| 1545 | |
| 1546 | func TestArchiveChatMovesPendingChatToWaiting(t *testing.T) { |
| 1547 | t.Parallel() |
nothing calls this directly
no test coverage detected