public void If_AsDateRange_ForceBlock_ThenBlockGetsReprocessedAndDequeued() { // ARRANGE var fromDate = DateTime.UtcNow.AddHours(-12); var toDate = DateTime.UtcNow; // create a block bool startedOk; using (var executionContext = CreateTaskExecutionContext()) { startedOk = executionContext.TryStart(); if (startedOk) { var maxBlockRange = new TimeSpan(24, 0, 0); var rangeBlocks = executionContext.GetDateRangeBlocks(x => x.WithRange(fromDate, toDate, maxBlockRange)); foreach (var rangeBlock in rangeBlocks) { rangeBlock.Start(); rangeBlock.Complete(); } } } // add this processed block to the forced queue var lastBlockId = _blocksHelper.GetLastBlockId(TestConstants.ApplicationName, TestConstants.TaskName); _blocksHelper.EnqueueForcedBlock(lastBlockId); // ACT - reprocess the forced block using (var executionContext = CreateTaskExecutionContext()) { startedOk = executionContext.TryStart(); if (startedOk) { var rangeBlocks = executionContext.GetDateRangeBlocks(x => x.OnlyOldDateBlocks()); Assert.AreEqual(1, rangeBlocks.Count); Assert.AreEqual(fromDate.ToString("yyyyMMdd HH:mm:ss"), rangeBlocks[0].DateRangeBlock.StartDate.ToString("yyyyMMdd HH:mm:ss")); Assert.AreEqual(toDate.ToString("yyyyMMdd HH:mm:ss"), rangeBlocks[0].DateRangeBlock.EndDate.ToString("yyyyMMdd HH:mm:ss")); foreach (var rangeBlock in rangeBlocks) { rangeBlock.Start(); rangeBlock.Complete(); } } } // The forced block will have been dequeued so it should not be processed again using (var executionContext = CreateTaskExecutionContext()) { startedOk = executionContext.TryStart(); if (startedOk) { var rangeBlocks = executionContext.GetDateRangeBlocks(x => x.OnlyOldDateBlocks()); Assert.AreEqual(0, rangeBlocks.Count); } } }
public void If_ForceBlock_ThenBlockGetsReprocessedAndDequeued() { // ARRANGE var fromDate = DateTime.UtcNow.AddHours(-12); var toDate = DateTime.UtcNow; // create a block bool startedOk; using (var executionContext = CreateTaskExecutionContext()) { startedOk = executionContext.TryStart(); if (startedOk) { var blocks = executionContext.GetObjectBlocks <string>(x => x.WithObject("Testing Hello")); foreach (var block in blocks) { block.Start(); block.Complete(); } } } // add this processed block to the forced queue var lastBlockId = _blocksHelper.GetLastBlockId(TestConstants.ApplicationName, TestConstants.TaskName); _blocksHelper.EnqueueForcedBlock(lastBlockId); // ACT - reprocess the forced block using (var executionContext = CreateTaskExecutionContext()) { startedOk = executionContext.TryStart(); if (startedOk) { var blocks = executionContext.GetObjectBlocks <string>(x => x.WithObject("Testing Goodbye")); Assert.AreEqual(2, blocks.Count); Assert.AreEqual("Testing Hello", blocks[0].Block.Object); Assert.AreEqual("Testing Goodbye", blocks[1].Block.Object); foreach (var block in blocks) { block.Start(); block.Complete(); } } } // The forced block will have been dequeued so it should not be processed again using (var executionContext = CreateTaskExecutionContext()) { startedOk = executionContext.TryStart(); if (startedOk) { var blocks = executionContext.GetObjectBlocks <string>(x => x.WithNoNewBlocks()); Assert.AreEqual(0, blocks.Count); } } }