@@ -754,6 +754,22 @@ func TestGetVersion(t *testing.T) {
754754 res := weh .GetVersion ("test" , 1 , 3 )
755755 assert .Equal (t , Version (2 ), res )
756756 })
757+ t .Run ("version exists, ExecuteWithVersion is used" , func (t * testing.T ) {
758+ weh := testWorkflowExecutionEventHandler (t , newRegistry ())
759+ weh .changeVersions = map [string ]Version {
760+ "test" : 2 ,
761+ }
762+ res := weh .GetVersion ("test" , 1 , 3 , ExecuteWithVersion (3 ))
763+ assert .Equal (t , Version (2 ), res )
764+ })
765+ t .Run ("version exists, ExecuteWithMinVersion is used" , func (t * testing.T ) {
766+ weh := testWorkflowExecutionEventHandler (t , newRegistry ())
767+ weh .changeVersions = map [string ]Version {
768+ "test" : 2 ,
769+ }
770+ res := weh .GetVersion ("test" , 1 , 3 , ExecuteWithMinVersion ())
771+ assert .Equal (t , Version (2 ), res )
772+ })
757773 t .Run ("version doesn't exist in replay" , func (t * testing.T ) {
758774 weh := testWorkflowExecutionEventHandler (t , newRegistry ())
759775 weh .isReplay = true
@@ -770,6 +786,38 @@ func TestGetVersion(t *testing.T) {
770786 assert .Equal (t , Version (3 ), weh .changeVersions ["test" ])
771787 assert .Equal (t , []byte (`["test-3"]` ), weh .workflowInfo .SearchAttributes .IndexedFields [CadenceChangeVersion ], "ensure search attributes are updated" )
772788 })
789+ t .Run ("version doesn't exist, ExecuteWithVersion is used" , func (t * testing.T ) {
790+ weh := testWorkflowExecutionEventHandler (t , newRegistry ())
791+ res := weh .GetVersion ("test" , DefaultVersion , 3 , ExecuteWithVersion (2 ))
792+ assert .Equal (t , Version (2 ), res )
793+ require .Contains (t , weh .changeVersions , "test" )
794+ assert .Equal (t , Version (2 ), weh .changeVersions ["test" ])
795+ assert .Equal (t , []byte (`["test-2"]` ), weh .workflowInfo .SearchAttributes .IndexedFields [CadenceChangeVersion ], "ensure search attributes are updated" )
796+ })
797+ t .Run ("version doesn't exist, ExecuteWithVersion is used, DefaultVersion is used" , func (t * testing.T ) {
798+ weh := testWorkflowExecutionEventHandler (t , newRegistry ())
799+ res := weh .GetVersion ("test" , DefaultVersion , 3 , ExecuteWithVersion (DefaultVersion ))
800+ assert .Equal (t , DefaultVersion , res )
801+ require .Contains (t , weh .changeVersions , "test" )
802+ assert .Equal (t , DefaultVersion , weh .changeVersions ["test" ])
803+ require .Nil (t , weh .workflowInfo .SearchAttributes , "ensure search attributes are not updated" )
804+ })
805+ t .Run ("version doesn't exist, ExecuteWithMinVersion is used, min is non DefaultVersion" , func (t * testing.T ) {
806+ weh := testWorkflowExecutionEventHandler (t , newRegistry ())
807+ res := weh .GetVersion ("test" , 1 , 3 , ExecuteWithMinVersion ())
808+ assert .Equal (t , Version (1 ), res )
809+ require .Contains (t , weh .changeVersions , "test" )
810+ assert .Equal (t , Version (1 ), weh .changeVersions ["test" ])
811+ assert .Equal (t , []byte (`["test-1"]` ), weh .workflowInfo .SearchAttributes .IndexedFields [CadenceChangeVersion ], "ensure search attributes are updated" )
812+ })
813+ t .Run ("version doesn't exist, ExecuteWithMinVersion is used, DefaultVersion is used" , func (t * testing.T ) {
814+ weh := testWorkflowExecutionEventHandler (t , newRegistry ())
815+ res := weh .GetVersion ("test" , DefaultVersion , 3 , ExecuteWithMinVersion ())
816+ assert .Equal (t , DefaultVersion , res )
817+ require .Contains (t , weh .changeVersions , "test" )
818+ assert .Equal (t , DefaultVersion , weh .changeVersions ["test" ])
819+ require .Nil (t , weh .workflowInfo .SearchAttributes , "ensure search attributes are not updated" )
820+ })
773821}
774822
775823func TestMutableSideEffect (t * testing.T ) {
@@ -982,6 +1030,13 @@ func TestWorkflowExecutionEnvironment_NewTimer_immediate_calls(t *testing.T) {
9821030}
9831031
9841032func testWorkflowExecutionEventHandler (t * testing.T , registry * registry ) * workflowExecutionEventHandlerImpl {
1033+ var testWorkflowInfo = & WorkflowInfo {
1034+ WorkflowType : WorkflowType {
1035+ Name : "test" ,
1036+ Path : "" ,
1037+ },
1038+ }
1039+
9851040 return newWorkflowExecutionEventHandler (
9861041 testWorkflowInfo ,
9871042 func (result []byte , err error ) {},
@@ -996,13 +1051,6 @@ func testWorkflowExecutionEventHandler(t *testing.T, registry *registry) *workfl
9961051 ).(* workflowExecutionEventHandlerImpl )
9971052}
9981053
999- var testWorkflowInfo = & WorkflowInfo {
1000- WorkflowType : WorkflowType {
1001- Name : "test" ,
1002- Path : "" ,
1003- },
1004- }
1005-
10061054func getSerializedDetails [T , V any ](t * testing.T , id T , data V ) []byte {
10071055 converter := defaultDataConverter {}
10081056 res , err := converter .ToData (id , data )
0 commit comments