@@ -720,6 +720,49 @@ func TestSideEffect(t *testing.T) {
720720	})
721721}
722722
723+ func  TestGetVersion_validation (t  * testing.T ) {
724+ 	t .Run ("version < minSupported" , func (t  * testing.T ) {
725+ 		assert .PanicsWithValue (t , `Workflow code removed support of version 1. for "test" changeID. The oldest supported version is 2` , func () {
726+ 			validateVersion ("test" , 1 , 2 , 3 )
727+ 		})
728+ 	})
729+ 	t .Run ("version > maxSupported" , func (t  * testing.T ) {
730+ 		assert .PanicsWithValue (t , `Workflow code is too old to support version 3 for "test" changeID. The maximum supported version is 2` , func () {
731+ 			validateVersion ("test" , 3 , 1 , 2 )
732+ 		})
733+ 	})
734+ 	t .Run ("success" , func (t  * testing.T ) {
735+ 		validateVersion ("test" , 2 , 1 , 3 )
736+ 	})
737+ }
738+ 
739+ func  TestGetVersion (t  * testing.T ) {
740+ 	t .Run ("version exists" , func (t  * testing.T ) {
741+ 		weh  :=  testWorkflowExecutionEventHandler (t , newRegistry ())
742+ 		weh .changeVersions  =  map [string ]Version {
743+ 			"test" : 2 ,
744+ 		}
745+ 		res  :=  weh .GetVersion ("test" , 1 , 3 )
746+ 		assert .Equal (t , Version (2 ), res )
747+ 	})
748+ 	t .Run ("version doesn't exist in replay" , func (t  * testing.T ) {
749+ 		weh  :=  testWorkflowExecutionEventHandler (t , newRegistry ())
750+ 		weh .isReplay  =  true 
751+ 		res  :=  weh .GetVersion ("test" , DefaultVersion , 3 )
752+ 		assert .Equal (t , DefaultVersion , res )
753+ 		require .Contains (t , weh .changeVersions , "test" )
754+ 		assert .Equal (t , DefaultVersion , weh .changeVersions ["test" ])
755+ 	})
756+ 	t .Run ("version doesn't exist without replay" , func (t  * testing.T ) {
757+ 		weh  :=  testWorkflowExecutionEventHandler (t , newRegistry ())
758+ 		res  :=  weh .GetVersion ("test" , DefaultVersion , 3 )
759+ 		assert .Equal (t , Version (3 ), res )
760+ 		require .Contains (t , weh .changeVersions , "test" )
761+ 		assert .Equal (t , Version (3 ), weh .changeVersions ["test" ])
762+ 		assert .Equal (t , []byte (`["test-3"]` ), weh .workflowInfo .SearchAttributes .IndexedFields [CadenceChangeVersion ], "ensure search attributes are updated" )
763+ 	})
764+ }
765+ 
723766func  testWorkflowExecutionEventHandler (t  * testing.T , registry  * registry ) * workflowExecutionEventHandlerImpl  {
724767	return  newWorkflowExecutionEventHandler (
725768		testWorkflowInfo ,
0 commit comments