MCPcopy Create free account
hub / github.com/Facets-cloud/flow / TestCmdUpdateTaskStatusRollback

Function TestCmdUpdateTaskStatusRollback

internal/app/update_test.go:187–219  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

185}
186
187func TestCmdUpdateTaskStatusRollback(t *testing.T) {
188 setupFlowRoot(t)
189 seedTask(t, "ut-rollback")
190 stubITerm(t)
191
192 // Bootstrap via cmdDo so the task acquires a session_id and is
193 // in-progress. flow done now requires a session_id under the
194 // session-id invariant.
195 if rc := cmdDo([]string{"ut-rollback"}); rc != 0 {
196 t.Fatalf("do rc=%d", rc)
197 }
198 if rc := cmdDone([]string{"ut-rollback"}); rc != 0 {
199 t.Fatalf("done rc=%d", rc)
200 }
201 db := openFlowDB(t)
202 task, _ := flowdb.GetTask(db, "ut-rollback")
203 if task.Status != "done" {
204 t.Fatalf("precondition: status = %q, want done", task.Status)
205 }
206
207 // Now roll it back to in-progress via update. session_id is still
208 // set (preserved across done) so the invariant holds.
209 if rc := cmdUpdate([]string{"task", "ut-rollback", "--status", "in-progress"}); rc != 0 {
210 t.Fatalf("rc=%d", rc)
211 }
212 task, _ = flowdb.GetTask(db, "ut-rollback")
213 if task.Status != "in-progress" {
214 t.Errorf("status = %q, want in-progress", task.Status)
215 }
216 if !task.StatusChangedAt.Valid {
217 t.Error("status_changed_at should be set after a real status change")
218 }
219}
220
221// TestCmdUpdateTaskStatusRequiresSessionForNonBacklog pins the
222// session-id invariant at the friendly-error layer: setting status

Callers

nothing calls this directly

Calls 9

GetTaskFunction · 0.92
setupFlowRootFunction · 0.85
seedTaskFunction · 0.85
stubITermFunction · 0.85
cmdDoFunction · 0.85
cmdDoneFunction · 0.85
openFlowDBFunction · 0.85
cmdUpdateFunction · 0.85
ErrorMethod · 0.80

Tested by

no test coverage detected