@@ -695,6 +695,49 @@ func TestWorkflowExecutionEventHandler_ProcessEvent_no_error_events(t *testing.T
695695 }
696696}
697697
698+ func TestGetVersion_validation (t * testing.T ) {
699+ t .Run ("version < minSupported" , func (t * testing.T ) {
700+ assert .PanicsWithValue (t , `Workflow code removed support of version 1. for \"test\" changeID. The oldest supported version is 2` , func () {
701+ validateVersion ("test" , 1 , 2 , 3 )
702+ })
703+ })
704+ t .Run ("version > maxSupported" , func (t * testing.T ) {
705+ assert .PanicsWithValue (t , `Workflow code is too old to support version 3 for \"test\" changeID. The maximum supported version is 2` , func () {
706+ validateVersion ("test" , 3 , 1 , 2 )
707+ })
708+ })
709+ t .Run ("success" , func (t * testing.T ) {
710+ validateVersion ("test" , 2 , 1 , 3 )
711+ })
712+ }
713+
714+ func TestGetVersion (t * testing.T ) {
715+ t .Run ("version exists" , func (t * testing.T ) {
716+ weh := testWorkflowExecutionEventHandler (t , newRegistry ())
717+ weh .changeVersions = map [string ]Version {
718+ "test" : 2 ,
719+ }
720+ res := weh .GetVersion ("test" , 1 , 3 )
721+ assert .Equal (t , Version (2 ), res )
722+ })
723+ t .Run ("version doesn't exist in replay" , func (t * testing.T ) {
724+ weh := testWorkflowExecutionEventHandler (t , newRegistry ())
725+ weh .isReplay = true
726+ res := weh .GetVersion ("test" , DefaultVersion , 3 )
727+ assert .Equal (t , DefaultVersion , res )
728+ require .Contains (t , weh .changeVersions , "test" )
729+ assert .Equal (t , DefaultVersion , weh .changeVersions ["test" ])
730+ })
731+ t .Run ("version doesn't exist without replay" , func (t * testing.T ) {
732+ weh := testWorkflowExecutionEventHandler (t , newRegistry ())
733+ res := weh .GetVersion ("test" , DefaultVersion , 3 )
734+ assert .Equal (t , Version (3 ), res )
735+ require .Contains (t , weh .changeVersions , "test" )
736+ assert .Equal (t , Version (3 ), weh .changeVersions ["test" ])
737+ assert .Equal (t , []byte (`["test-3"]` ), weh .workflowInfo .SearchAttributes .IndexedFields [CadenceChangeVersion ], "ensure search attributes are updated" )
738+ })
739+ }
740+
698741func testWorkflowExecutionEventHandler (t * testing.T , registry * registry ) * workflowExecutionEventHandlerImpl {
699742 return newWorkflowExecutionEventHandler (
700743 testWorkflowInfo ,
0 commit comments