public async Task RunsExecutionsInOrder() { // Arrange var executionMock1 = MockDependencyExecution("1"); var executionMock2 = MockDependencyExecution("2"); var executionMock3 = MockDependencyExecution("3"); var sequenceVerifier = new SequenceVerifier(); executionMock3 .InSequence(sequenceVerifier.Sequence) .Setup(execution => execution.Execute(default))
public async Task RunsExecutionsInOrder() { // Arrange var executionMock1 = MockDependencyExecution("1", "One"); var executionMock2 = MockDependencyExecution("2", "Two"); var executionMock3 = MockDependencyExecution("3", "Three"); var sequenceVerifier = new SequenceVerifier(); executionMock3 .InSequence(sequenceVerifier.Sequence) .Setup(execution => execution.Execute( It.Is <ExecutionResultCollection <string, string> >(results => results.Values.Count == 0), default)) .ReturnsAsync("Three") .Callback(sequenceVerifier.NextCallback()); executionMock2 .InSequence(sequenceVerifier.Sequence) .Setup(execution => execution.Execute( It.Is <ExecutionResultCollection <string, string> >(results => results.Values.Count == 1 && results.Values.Any(result => result.Key == "3")), default)) .ReturnsAsync("Two") .Callback(sequenceVerifier.NextCallback()); executionMock1 .InSequence(sequenceVerifier.Sequence) .Setup(execution => execution.Execute( It.Is <ExecutionResultCollection <string, string> >(results => results.Values.Count == 2 && results.Values.Any(result => result.Key == "3") && results.Values.Any(result => result.Key == "2")), default)) .ReturnsAsync("One") .Callback(sequenceVerifier.NextCallback()); var executions = new[] { executionMock3.Object, executionMock2.Object, executionMock1.Object, }; var keys = new[] { executionMock3.Object.Key, executionMock2.Object.Key, executionMock1.Object.Key, }; _mocker.GetMock <IDependencyExecutionSorter <string> >() .Setup(dependencyExecutionSorter => dependencyExecutionSorter.Sort(executions)) .Returns(keys); var sut = CreateSystemUnderTest(); // Act await sut.ExecuteAll(executions, default); // Assert executionMock1.Verify(execution => execution.Execute(It.IsAny <ExecutionResultCollection <string, string> >(), default)); executionMock2.Verify(execution => execution.Execute(It.IsAny <ExecutionResultCollection <string, string> >(), default)); executionMock3.Verify(execution => execution.Execute(It.IsAny <ExecutionResultCollection <string, string> >(), default)); sequenceVerifier.VerifyAll(); }