Exemple #1
0
        public async Task DoWorkAsync_ExceptionInFinally_Async()
        {
            // Arrange
            var loggerMock  = new Mock <ILogger>();
            var invokedOnce = false;
            var wuMock      = new Mock <IWorkUnit <ScaffoldingStateModel> >();
            var instance    = new AsyncExecutorBaseTestImplementation(loggerMock.Object, () =>
            {
                if (invokedOnce)
                {
                    return(null);
                }
                invokedOnce = true;
                return(wuMock.Object);
            });
            var project       = new SqlProject("a", "b", "c");
            var configuration = ConfigurationModel.GetDefault();
            var targetVersion = new Version(1, 0);
            var stateList     = new List <bool>();

            Task HandlerFunc(bool b)
            {
                stateList.Add(b);
                if (stateList.Count == 2)
                {
                    throw new Exception("test exception");
                }
                return(Task.CompletedTask);
            }

            var model = new ScaffoldingStateModel(project, configuration, targetVersion, HandlerFunc);
            var cts   = new CancellationTokenSource();

            // Act
            await instance.CallDoWorkAsync(model, cts.Token);

            // Assert
            Assert.IsTrue(model.Result);
            Assert.AreEqual(2, stateList.Count);
            Assert.IsTrue(stateList[0]);
            Assert.IsFalse(stateList[1]);
            wuMock.Verify(m => m.Work(model, cts.Token), Times.Once);
            loggerMock.Verify(m => m.LogInfoAsync("started"), Times.Once);
            loggerMock.Verify(m => m.LogInfoAsync("Creation was canceled by the user."), Times.Never);
            loggerMock.Verify(m => m.LogInfoAsync(It.Is <string>(s => s.StartsWith("completed stateModel in"))), Times.Once);
        }
Exemple #2
0
        public async Task DoWorkAsync_PreviousUnitFailed_Async()
        {
            // Arrange
            var loggerMock = new Mock <ILogger>();
            var instance   = new AsyncExecutorBaseTestImplementation(loggerMock.Object, () =>
            {
                Assert.Fail("This shouldn't be called");
                return(null);
            });
            var project       = new SqlProject("a", "b", "c");
            var configuration = ConfigurationModel.GetDefault();
            var targetVersion = new Version(1, 0);
            var stateList     = new List <bool>();

            Task HandlerFunc(bool b)
            {
                stateList.Add(b);
                return(Task.CompletedTask);
            }

            var model = new ScaffoldingStateModel(project, configuration, targetVersion, HandlerFunc)
            {
                Result = false
            };

            // Act
            await instance.CallDoWorkAsync(model, CancellationToken.None);

            // Assert
            Assert.IsFalse(model.Result);
            Assert.AreEqual(2, stateList.Count);
            Assert.IsTrue(stateList[0]);
            Assert.IsFalse(stateList[1]);
            loggerMock.Verify(m => m.LogInfoAsync("started"), Times.Once);
            loggerMock.Verify(m => m.LogInfoAsync("Creation was canceled by the user."), Times.Never);
            loggerMock.Verify(m => m.LogInfoAsync(It.Is <string>(s => s.StartsWith("completed stateModel in"))), Times.Once);
        }