(t *testing.T)
| 152 | } |
| 153 | |
| 154 | func TestService_UpdateRun(t *testing.T) { |
| 155 | t.Parallel() |
| 156 | |
| 157 | fixture := newFixture(t) |
| 158 | run, err := fixture.svc.CreateRun(fixture.ctx, chatdebug.CreateRunParams{ |
| 159 | ChatID: fixture.chat.ID, |
| 160 | Kind: chatdebug.KindChatTurn, |
| 161 | Status: chatdebug.StatusInProgress, |
| 162 | Summary: map[string]any{ |
| 163 | "before": true, |
| 164 | }, |
| 165 | }) |
| 166 | require.NoError(t, err) |
| 167 | |
| 168 | finishedAt := time.Now().UTC().Round(time.Microsecond) |
| 169 | updated, err := fixture.svc.UpdateRun(fixture.ctx, chatdebug.UpdateRunParams{ |
| 170 | ID: run.ID, |
| 171 | ChatID: fixture.chat.ID, |
| 172 | Status: chatdebug.StatusCompleted, |
| 173 | Summary: map[string]any{"after": "done"}, |
| 174 | FinishedAt: finishedAt, |
| 175 | }) |
| 176 | require.NoError(t, err) |
| 177 | require.Equal(t, string(chatdebug.StatusCompleted), updated.Status) |
| 178 | require.True(t, updated.FinishedAt.Valid) |
| 179 | require.WithinDuration(t, finishedAt, updated.FinishedAt.Time, time.Second) |
| 180 | require.JSONEq(t, `{"after":"done"}`, string(updated.Summary)) |
| 181 | |
| 182 | stored, err := fixture.db.GetChatDebugRunByID(fixture.ctx, run.ID) |
| 183 | require.NoError(t, err) |
| 184 | require.Equal(t, string(chatdebug.StatusCompleted), stored.Status) |
| 185 | require.JSONEq(t, `{"after":"done"}`, string(stored.Summary)) |
| 186 | require.True(t, stored.FinishedAt.Valid) |
| 187 | } |
| 188 | |
| 189 | func TestService_UpdateRun_AutoFillsFinishedAtOnTerminalStatus(t *testing.T) { |
| 190 | t.Parallel() |
nothing calls this directly
no test coverage detected