@@ -928,3 +928,69 @@ func TestListWorkflows(t *testing.T) {
928928 // Verify all queue entries are cleaned up
929929 require .True (t , queueEntriesAreCleanedUp (serverCtx ), "expected queue entries to be cleaned up after list workflows tests" )
930930}
931+
932+ func TestGetWorkflowSteps (t * testing.T ) {
933+ // Setup server context
934+ serverCtx := setupDBOS (t , true , true )
935+
936+ // Create queue for communication
937+ queue := NewWorkflowQueue (serverCtx , "get-workflow-steps-queue" )
938+
939+ // Workflow with one step
940+ stepFunction := func (ctx context.Context ) (string , error ) {
941+ return "abc" , nil
942+ }
943+
944+ testWorkflow := func (ctx DBOSContext , input string ) (string , error ) {
945+ result , err := RunAsStep (ctx , stepFunction , WithStepName ("TestStep" ))
946+ if err != nil {
947+ return "" , err
948+ }
949+ return result , nil
950+ }
951+ RegisterWorkflow (serverCtx , testWorkflow , WithWorkflowName ("TestWorkflow" ))
952+
953+ // Launch server
954+ err := Launch (serverCtx )
955+ require .NoError (t , err )
956+
957+ // Setup client
958+ databaseURL := getDatabaseURL ()
959+ config := ClientConfig {
960+ DatabaseURL : databaseURL ,
961+ }
962+ client , err := NewClient (context .Background (), config )
963+ require .NoError (t , err )
964+ t .Cleanup (func () {
965+ if client != nil {
966+ client .Shutdown (30 * time .Second )
967+ }
968+ })
969+
970+ // Enqueue and run the workflow
971+ workflowID := "test-get-workflow-steps"
972+ handle , err := Enqueue [string , string ](client , queue .Name , "TestWorkflow" , "test-input" , WithEnqueueWorkflowID (workflowID ))
973+ require .NoError (t , err )
974+
975+ // Wait for workflow to complete
976+ result , err := handle .GetResult ()
977+ require .NoError (t , err )
978+ assert .Equal (t , "abc" , result )
979+
980+ // Test GetWorkflowSteps with loadOutput = true
981+ stepsWithOutput , err := client .GetWorkflowSteps (workflowID )
982+ require .NoError (t , err )
983+ require .Len (t , stepsWithOutput , 1 , "expected exactly 1 step" )
984+
985+ step := stepsWithOutput [0 ]
986+ assert .Equal (t , 0 , step .StepID , "expected step ID to be 0" )
987+ assert .Equal (t , "TestStep" , step .StepName , "expected step name to be set" )
988+ assert .Nil (t , step .Error , "expected no error in step" )
989+ assert .Equal (t , "" , step .ChildWorkflowID , "expected no child workflow ID" )
990+
991+ // Verify the output wasn't loaded
992+ require .Nil (t , step .Output , "expected output not to be loaded" )
993+
994+ // Verify all queue entries are cleaned up
995+ require .True (t , queueEntriesAreCleanedUp (serverCtx ), "expected queue entries to be cleaned up after get workflow steps test" )
996+ }
0 commit comments