public void itShouldCallCleanupOnFILOBasis() { var commands = new List <BaseCommand>(); var command1 = new MockCommandWithCleanup(); commands.Add(command1); var command2 = new MockCommandWithCleanup(); commands.Add(command2); var failingCmd = new MockFailingCommand(); commands.Add(failingCmd); var runner = new CommandsRunner(commands); var result = runner.Run(); Assert.IsFalse(result); var firstCommandCleanupReport = runner.Reports.First(r => r.ReportType.IsCleanupReport() && r.Reporter.Id == command1.Id); var latestCleanupReportTimestamp = runner.Reports.Max(r => r.ReportedOn); var earliestCleanupReport = runner.Reports.Where(r => r.ReportType.IsCleanupReport()) .OrderBy(r => r.ReportedOn) .First(); Assert.IsTrue(firstCommandCleanupReport.ReportedOn > earliestCleanupReport.ReportedOn); Assert.AreEqual(firstCommandCleanupReport.ReportedOn, latestCleanupReportTimestamp); }
public void itShouldCallCleanupOfInvokedCommandsOnSuccess() { var command1 = new MockCommandWithCleanup(); var commands = new List <BaseCommand>(); commands.Add(command1); var runner = new CommandsRunner(commands); var result = runner.Run(); Assert.IsTrue(result); Assert.IsTrue(runner.Reports.Any(r => r.ReportType.IsCleanupReport() && r.Reporter.Id == command1.Id)); }
public void itShouldHandleExceptionsDuringCleanupButNotAffectOverallOutcome() { var commands = new List <BaseCommand>(); var command1 = new MockCommandWithCleanup(); commands.Add(command1); var command2 = new MockCommandWithCleanupThrowingException(); commands.Add(command2); var runner = new CommandsRunner(commands); var result = runner.Run(); Assert.IsTrue(result); }
public void itShouldCallCleanupOfInvokedCommandsOnly() { var commands = new List <BaseCommand>(); var command1 = new MockCommandWithCleanup(); commands.Add(command1); var command2 = new MockFailingCommand(); commands.Add(command2); var command3 = new MockCommandWithCleanup(); commands.Add(command3); var runner = new CommandsRunner(commands); var result = runner.Run(); Assert.IsFalse(result); Assert.IsTrue(runner.WasCommandStarted(command1)); Assert.IsTrue(runner.Reports.Any(r => r.ReportType.IsCleanupReport() && r.Reporter.Id == command1.Id)); Assert.IsTrue(!runner.WasCommandStarted(command3)); Assert.IsFalse(runner.Reports.Any(r => r.ReportType.IsCleanupReport() && r.Reporter.Id == command3.Id)); }