@@ -333,6 +333,37 @@ def test_demote_position():
333
333
assert initially_second .position == 1
334
334
335
335
336
+ def test_cannot_promote_or_demote_removed_packaged_workbasket ():
337
+ """Tests that packaged workbasket positions remain unchanged after
338
+ attempting to reposition a packaged workbasket that has since been removed
339
+ from the queue."""
340
+ with patch (
341
+ "publishing.tasks.create_xml_envelope_file.apply_async" ,
342
+ return_value = MagicMock (id = factory .Faker ("uuid4" )),
343
+ ):
344
+ factories .PackagedWorkBasketFactory ()
345
+
346
+ with patch (
347
+ "publishing.tasks.create_xml_envelope_file.apply_async" ,
348
+ return_value = MagicMock (id = factory .Faker ("uuid4" )),
349
+ ):
350
+ factories .PackagedWorkBasketFactory ()
351
+
352
+ queued_pwb = PackagedWorkBasket .objects .get (position = 1 )
353
+ removed_pwb = PackagedWorkBasket .objects .get (position = 2 )
354
+ removed_pwb .abandon ()
355
+
356
+ removed_pwb = removed_pwb .promote_to_top_position ()
357
+ assert removed_pwb .position == 0
358
+ queued_pwb .refresh_from_db ()
359
+ assert queued_pwb .position == 1
360
+
361
+ removed_pwb = removed_pwb .demote_position ()
362
+ assert removed_pwb .position == 0
363
+ queued_pwb .refresh_from_db ()
364
+ assert queued_pwb .position == 1
365
+
366
+
336
367
def test_pause_and_unpause_queue (unpause_queue ):
337
368
assert not OperationalStatus .is_queue_paused ()
338
369
OperationalStatus .pause_queue (user = None )
0 commit comments