(t *testing.T)
| 681 | } |
| 682 | |
| 683 | func TestService_FinalizeStale(t *testing.T) { |
| 684 | t.Parallel() |
| 685 | |
| 686 | ctx := testutil.Context(t, testutil.WaitLong) |
| 687 | db, _ := dbtestutil.NewDB(t) |
| 688 | _, owner, chat, model := seedChat(t, db) |
| 689 | require.NotEqual(t, uuid.Nil, owner.ID) |
| 690 | |
| 691 | staleTime := time.Now().Add(-10 * time.Minute).UTC().Round(time.Microsecond) |
| 692 | run, err := db.InsertChatDebugRun(ctx, database.InsertChatDebugRunParams{ |
| 693 | ChatID: chat.ID, |
| 694 | ModelConfigID: uuid.NullUUID{UUID: model.ID, Valid: true}, |
| 695 | Kind: string(chatdebug.KindChatTurn), |
| 696 | Status: string(chatdebug.StatusInProgress), |
| 697 | StartedAt: sql.NullTime{Time: staleTime, Valid: true}, |
| 698 | UpdatedAt: sql.NullTime{Time: staleTime, Valid: true}, |
| 699 | }) |
| 700 | require.NoError(t, err) |
| 701 | step, err := db.InsertChatDebugStep(ctx, database.InsertChatDebugStepParams{ |
| 702 | RunID: run.ID, |
| 703 | StepNumber: 1, |
| 704 | Operation: string(chatdebug.OperationStream), |
| 705 | Status: string(chatdebug.StatusInProgress), |
| 706 | StartedAt: sql.NullTime{Time: staleTime, Valid: true}, |
| 707 | UpdatedAt: sql.NullTime{Time: staleTime, Valid: true}, |
| 708 | ChatID: chat.ID, |
| 709 | }) |
| 710 | require.NoError(t, err) |
| 711 | |
| 712 | svc := chatdebug.NewService(db, testutil.Logger(t), nil) |
| 713 | result, err := svc.FinalizeStale(ctx) |
| 714 | require.NoError(t, err) |
| 715 | require.EqualValues(t, 1, result.RunsFinalized) |
| 716 | require.EqualValues(t, 1, result.StepsFinalized) |
| 717 | |
| 718 | storedRun, err := db.GetChatDebugRunByID(ctx, run.ID) |
| 719 | require.NoError(t, err) |
| 720 | require.Equal(t, string(chatdebug.StatusInterrupted), storedRun.Status) |
| 721 | require.True(t, storedRun.FinishedAt.Valid) |
| 722 | |
| 723 | storedSteps, err := db.GetChatDebugStepsByRunID(ctx, run.ID) |
| 724 | require.NoError(t, err) |
| 725 | require.Len(t, storedSteps, 1) |
| 726 | require.Equal(t, step.ID, storedSteps[0].ID) |
| 727 | require.Equal(t, string(chatdebug.StatusInterrupted), storedSteps[0].Status) |
| 728 | require.True(t, storedSteps[0].FinishedAt.Valid) |
| 729 | } |
| 730 | |
| 731 | func TestService_FinalizeStale_BroadcastsFinalizeEvent(t *testing.T) { |
| 732 | t.Parallel() |
nothing calls this directly
no test coverage detected