diff --git a/internal/uploads/worker_queue_test.go b/internal/uploads/worker_queue_test.go index cb71d3a..0fa613c 100644 --- a/internal/uploads/worker_queue_test.go +++ b/internal/uploads/worker_queue_test.go @@ -90,3 +90,19 @@ func TestWorkerHasRoom_SaysWhetherASubmitWouldBeAccepted(t *testing.T) { require.NoError(t, submit(w, "bob", 1)) assert.False(t, w.HasRoom("carol"), "the queue as a whole is at its cap") } + +func TestWorkerHasRoom_AgreesWithSubmitAtEveryStepAndIsFalseOnceStopped(t *testing.T) { + w := queueWorker(t, 2, 1) + for i, user := range []string{"a", "a", "b", "c"} { + room := w.HasRoom(user) + err := submit(w, user, i) + assert.Equal(t, room, err == nil, "step %d (%s): HasRoom=%v but Submit returned %v", i, user, room, err) + } + + r := newWRig(t, time.Minute) + stopped := uploads.NewWorker(r.st, r.conv, r.tr, r.tmp, time.Minute) + ctx, cancel := context.WithCancel(context.Background()) + cancel() + stopped.Run(ctx) + assert.False(t, stopped.HasRoom("a"), "a worker that has stopped has no room") +}