@@ -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