@@ -155,6 +155,38 @@ func TestCreateNewSchedulerVersion(t *testing.T) {
155155
156156}
157157
158+ func TestCreateNewSchedulerVersionAndEnqueueSwitchVersion (t * testing.T ) {
159+ err := validations .RegisterValidations ()
160+ if err != nil {
161+ t .Errorf ("unexpected error %d'" , err )
162+ }
163+
164+ ctx := context .Background ()
165+ mockCtrl := gomock .NewController (t )
166+
167+ schedulerStorage := mockports .NewMockSchedulerStorage (mockCtrl )
168+ operationManager := mock .NewMockOperationManager (mockCtrl )
169+ roomStorage := mockports .NewMockRoomStorage (mockCtrl )
170+ schedulerCache := mockports .NewMockSchedulerCache (mockCtrl )
171+ schedulerManager := NewSchedulerManager (schedulerStorage , schedulerCache , operationManager , roomStorage )
172+
173+ t .Run ("succeeds without conflict checking - called from operation executor" , func (t * testing.T ) {
174+ scheduler := newValidScheduler ()
175+ scheduler .Spec .Version = "v2.0.0"
176+
177+ schedulerStorage .EXPECT ().RunWithTransaction (ctx , gomock .Any ()).DoAndReturn (
178+ func (ctx context.Context , fn func (ports.TransactionID ) error ) error {
179+ return fn (ports .TransactionID ("test-transaction-id" ))
180+ })
181+ schedulerStorage .EXPECT ().CreateSchedulerVersion (ctx , ports .TransactionID ("test-transaction-id" ), scheduler ).Return (nil )
182+ operationManager .EXPECT ().CreateOperation (ctx , scheduler .Name , gomock .Any ()).Return (& operation.Operation {ID : "switch-op-id" }, nil )
183+
184+ opID , err := schedulerManager .CreateNewSchedulerVersionAndEnqueueSwitchVersion (ctx , scheduler )
185+ require .NoError (t , err )
186+ require .Equal (t , "switch-op-id" , opID )
187+ })
188+ }
189+
158190func TestEnqueueNewSchedulerVersionOperation (t * testing.T ) {
159191 mockCtrl := gomock .NewController (t )
160192
0 commit comments