Esempio n. 1
0
        public void Schedule_ShouldRunTaskImmediatelyIfThereAreNone()
        {
            var runner = CreateJobRunner();
            var jobRun = new FakeJobRun();

            runner.Enqueue(jobRun);
            runner.ProcessQueue();

            jobRun.WasRunCalled.Should().BeTrue();
        }
Esempio n. 2
0
        public void FindStatusById_ShouldFindQueuedStatus()
        {
            var runner = CreateJobRunner();
            var jobRun = new FakeJobRun();

            runner.Enqueue(jobRun);

            var status = runner.FindStatusById(jobRun.Id);

            status.Id.Should().Be(jobRun.Id);
        }
Esempio n. 3
0
        public void Schedule_ShouldImmediatelyProcessTasks()
        {
            var task   = new FakeJobRun();
            var runner = CreateJobRunner();

            runner.Enqueue(task);

            task.WasRunCalled.Should()
            .BeTrue(
                "because scheduling a scheduled task should immediately process it to make manually submitted tasks faster");
        }
Esempio n. 4
0
        public void Resume_ShouldStartProcessingJobsAgain()
        {
            var task   = new FakeJobRun();
            var runner = CreateJobRunner();

            runner.Pause();
            runner.Enqueue(task);
            runner.Resume();

            task.WasRunCalled.Should().BeTrue("because runner resumed");
        }
Esempio n. 5
0
        public void Pause_ShouldNotProcessNewJobs()
        {
            var task   = new FakeJobRun();
            var runner = CreateJobRunner();

            runner.Pause();

            runner.Enqueue(task);

            task.WasRunCalled.Should().BeFalse("because the runner is paused");
        }
Esempio n. 6
0
        public void TimerAction_ShouldProcessTasks()
        {
            var timerFactory = new FakeTimerFactory();
            var runner       = CreateJobRunner(timerFactory: timerFactory);
            var task         = new FakeJobRun();

            runner.Enqueue(task);

            timerFactory.FireTimerAction();

            task.WasRunCalled.Should().BeTrue("because the timer fired which should process tasks");
        }
Esempio n. 7
0
        public void FindStatusById_ShouldFindFinishedTask()
        {
            var runner = CreateJobRunner();
            var task   = new FakeJobRun();

            runner.Enqueue(task);
            runner.ProcessQueue();
            runner.ProcessQueue();

            var status = runner.FindStatusById(task.Id);

            status.Id.Should().Be(task.Id);
        }
Esempio n. 8
0
        public void ProcessTasks_ShouldExecuteTaskInBackground()
        {
            var actionExecutor = new FakeActionExecutor();
            var runner         = CreateJobRunner(actionExecutor);
            var scheduledTask  = new FakeJobRun();

            runner.Enqueue(scheduledTask);
            runner.ProcessQueue();
            runner.ProcessQueue();

            actionExecutor.WasExecuted.Should()
            .BeTrue(
                "because the scheduler should use the action executor to run its tasks so in the real program they'll run in the background");
        }
Esempio n. 9
0
        public void ProcessQueue_ShouldNotRunWhenAnotherTaskIsRunning()
        {
            var runner          = CreateJobRunner();
            var longRunningTask = new FakeJobRun()
            {
                FinishTaskImmediately = false
            };
            var anotherTask = new FakeJobRun();

            runner.Enqueue(longRunningTask);
            runner.ProcessQueue();
            runner.Enqueue(anotherTask);
            runner.ProcessQueue();
            runner.ProcessQueue();

            anotherTask.WasRunCalled.Should().BeFalse();
        }