コード例 #1
0
        public async Task ProcessStartupActionsAsync__Asynchronous_ExecutesCorrectly_WhenStepsAreSuccessful()
        {
            // Arrange
            string stepName = "step";

            DateTime start = DateTime.Now;

            IStartupProcessor processor = defaultStartupProcessor;

            processor.Steps = new List <string> {
                stepName, stepName
            };
            processor.Asynchronous = true;

            Mock <IStep> stepMock = new Mock <IStep>(MockBehavior.Strict);

            stepMock.Setup(step => step.ExecuteAsync())
            .ReturnsAsync(ExecutionStatus.Success);
            stepMock.Setup(step => step.FailOnParallelFailures)
            .Returns(GroupClause.Undefined);
            stepMock.Setup(step => step.ParallelCount)
            .Returns <uint?>(null);

            var registry = new Mock <IRegistry>(MockBehavior.Strict);

            registry.Setup(reg => reg.GetStartupProcessors())
            .Returns(new List <IStartupProcessor>()
            {
                processor
            });
            registry.Setup(reg => reg.GetStep(It.IsAny <string>()))
            .Returns <string>(n => stepMock.Object);

            var    logger = new Mock <ILogger <Engine> >(MockBehavior.Loose);
            Engine engine = new Engine(logger.Object, registry.Object);

            // Act
            await engine.ProcessStartupActionsAsync().ConfigureAwait(false);

            // Verify
            Assert.IsTrue(true);
        }
コード例 #2
0
        public async Task ProcessStartupActionsAsync_Throws_WhenStepsFail()
        {
            // Arrange
            string stepName = "step";

            DateTime start = DateTime.Now;

            IStartupProcessor processor = defaultStartupProcessor;

            processor.Steps = new List <string> {
                stepName, stepName
            };
            processor.Asynchronous = false;

            Mock <IStep> stepMock = new Mock <IStep>(MockBehavior.Strict);

            stepMock.Setup(step => step.ExecuteAsync())
            .ReturnsAsync(ExecutionStatus.Fail);
            stepMock.Setup(step => step.FailOnParallelFailures)
            .Returns(GroupClause.Undefined);
            stepMock.Setup(step => step.ParallelCount)
            .Returns <uint?>(null);

            var registry = new Mock <IRegistry>(MockBehavior.Strict);

            registry.Setup(reg => reg.GetStartupProcessors())
            .Returns(new List <IStartupProcessor>()
            {
                processor
            });
            registry.Setup(reg => reg.GetStep(It.IsAny <string>()))
            .Returns <string>(n => stepMock.Object);

            var    logger = new Mock <ILogger <Engine> >(MockBehavior.Loose);
            Engine engine = new Engine(logger.Object, registry.Object);

            // Act & Verify
            await Assert.ThrowsExceptionAsync <InvalidOperationException>(() =>
                                                                          engine.ProcessStartupActionsAsync());
        }