@@ -534,6 +534,9 @@ func TestSerializer(t *testing.T) {
534534 t .Run (serializerName , func (t * testing.T ) {
535535 executor := setupDBOS (t , true , true , serializerFactory ())
536536
537+ // Create a test queue for queued workflow tests
538+ testQueue := NewWorkflowQueue (executor , "serializer-test-queue" )
539+
537540 // Register workflows
538541 RegisterWorkflow (executor , serializerWorkflow )
539542 RegisterWorkflow (executor , serializerNilValueWorkflow )
@@ -747,6 +750,56 @@ func TestSerializer(t *testing.T) {
747750 testWorkflowRecovery (t , executor , serializerAnyRecoveryWorkflow , serializerAnyRecoveryStartEvent , serializerAnyRecoveryEvent , any (input ), "serializer-any-recovery-wf" )
748751 })
749752
753+ // Test queued workflow with TestWorkflowData type
754+ t .Run ("QueuedWorkflow" , func (t * testing.T ) {
755+ input := TestWorkflowData {
756+ ID : "queued-test-id" ,
757+ Message : "queued test message" ,
758+ Value : 456 ,
759+ Active : false ,
760+ Data : TestData {Message : "queued nested" , Value : 789 , Active : true },
761+ Metadata : map [string ]string {"type" : "queued" },
762+ }
763+
764+ // Start workflow with queue option
765+ handle , err := RunWorkflow (executor , serializerWorkflow , input , WithWorkflowID ("serializer-queued-wf" ), WithQueue (testQueue .Name ))
766+ require .NoError (t , err , "failed to start queued workflow" )
767+
768+ // Get result from the handle
769+ result , err := handle .GetResult ()
770+ require .NoError (t , err , "queued workflow should complete successfully" )
771+ assert .Equal (t , input , result , "queued workflow result should match input" )
772+ })
773+
774+ // Test queued workflow with any type
775+ t .Run ("QueuedWorkflowAny" , func (t * testing.T ) {
776+ if serializerName == "Gob" {
777+ t .Skip ("Skipping test for Gob serializer due to Gob limitations with interface types" )
778+ }
779+
780+ input := TestWorkflowData {
781+ ID : "queued-any-test-id" ,
782+ Message : "queued any test message" ,
783+ Value : 321 ,
784+ Active : true ,
785+ Data : TestData {Message : "queued any nested" , Value : 654 , Active : false },
786+ Metadata : map [string ]string {"type" : "queued-any" },
787+ }
788+
789+ // Start workflow with queue option
790+ handle , err := RunWorkflow (executor , serializerAnyValueWorkflow , any (input ), WithWorkflowID ("serializer-queued-any-wf" ), WithQueue (testQueue .Name ))
791+ require .NoError (t , err , "failed to start queued workflow" )
792+
793+ // Get result from the handle
794+ result , err := handle .GetResult ()
795+ require .NoError (t , err , "queued workflow should complete successfully" )
796+
797+ // Convert the result from any type
798+ typedResult , err := convertJSONToType [TestWorkflowData ](result )
799+ require .NoError (t , err , "Failed to convert result" )
800+ assert .Equal (t , input , typedResult , "queued workflow result should match input" )
801+ })
802+
750803 })
751804 }
752805}
0 commit comments