Example #1
0
            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))
Example #2
0
            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();
            }