public void Fail() { ITaskRuntimeInfo taskInfo = this.Repository.TaskRuntimeInfo.Add(); ITask task = new FakeTask(); this.Repository.Tasks.Add(taskInfo.TaskId, task); this.DateTimeProvider.UtcNow = DateTime.UtcNow; Exception error = new TypeNotFoundInRedisException("Dummy Error"); using (FakeTaskWorker worker = new FakeTaskWorker()) { worker.PredefineMethodCall(w => w.StartTask(task, null), () => { throw error; }); this.TaskWorkerFactory.PredefineResult(worker, f => f.CreateTaskWorker(task)); try { this.TaskWorkerBootstrap.StartTask(taskInfo.TaskId); } catch (TypeNotFoundInRedisException) { } worker.AssertMethodCallOnce(w => w.Dispose()); } this.MessageBus.Tasks.Receiver.AssertMethodCallOnce(mb => mb.UnsubscribeFromAllChannels()); this.Repository.TaskRuntimeInfo.AssertMethodCallOnceWithArguments(r => r.Fail(taskInfo.TaskId, this.DateTimeProvider.UtcNow, error)); }
public void Fail() { ITaskRuntimeInfo taskInfo = this.Repository.Add(); Guid taskProcessorId = Guid.NewGuid(); DateTime timestampUtc = DateTime.UtcNow; Exception error = new TypeNotFoundInRedisException("Hello Error"); this.Repository.Start(taskInfo.TaskId, taskProcessorId, DateTime.UtcNow.AddMinutes(-1)); this.Repository.Fail(taskInfo.TaskId, timestampUtc, error); taskInfo = this.Repository.GetById(taskInfo.TaskId); Assert.AreEqual(TaskStatus.Failed, taskInfo.Status); this.AssertEqual(timestampUtc, taskInfo.CompletedUtc.Value); Assert.AreEqual(error.ToString(), taskInfo.Error); Assert.IsFalse(this.Repository.CheckIsPendingOrActive(taskInfo.TaskId)); Assert.IsFalse(this.Repository.GetPending(false).Any(t => t.TaskId == taskInfo.TaskId)); Assert.IsFalse(this.Repository.GetPending(true).Any(t => t.TaskId == taskInfo.TaskId)); Assert.IsFalse(this.Repository.GetPendingAndActive()[TaskStatus.Pending].Any(t => t.TaskId == taskInfo.TaskId)); Assert.IsFalse(this.Repository.GetPendingAndActive()[TaskStatus.InProgress].Any(t => t.TaskId == taskInfo.TaskId)); Assert.IsFalse(this.Repository.GetActive().Any(t => t.TaskId == taskInfo.TaskId)); Assert.IsTrue(this.Repository.GetFailed().Any(t => t.TaskId == taskInfo.TaskId)); Assert.IsTrue(this.Repository.GetArchive().Any(t => t.TaskId == taskInfo.TaskId)); }