public void AsyncFuncDoesNotRunWhenRunning()
        {
            //arrange
            var func = new Mock<ICommand>();

            func.Setup(f => f.Progress.Status).Returns(StatusEnum.Running);

            var container = new Mock<IAsyncCommandContainer>();
            ICommand a = new AsyncManager(func.Object, "", container.Object);

            //act
            a.Start();

            //assert
            func.Verify(f => f.Start(), Times.Never());
        }
        public void RemovalTimerStartsWhenJobIsFinished()
        {
            var func = new Mock<ICommand>();
            var container = new Mock<IAsyncCommandContainer>();

            func.Setup(f => f.Progress.Status).ReturnsInOrder(StatusEnum.NotStarted, StatusEnum.Running);
            container.Setup(c => c.Exists(It.IsAny<string>(), It.IsAny<Type>())).Returns(true);
            var asyncFunc = new AsyncManager(func.Object, "", container.Object);

            asyncFunc.Start();

            container.Verify(c => c.SetInactive("", func.Object.GetType()));
        }
        public void RemovalTimerStopsWhenJobStartsRunning()
        {
            var func = new Mock<ICommand>();
            var container = new Mock<IAsyncCommandContainer>();

            func.Setup(f => f.Progress.Status).Returns(StatusEnum.Running);
            func.Setup(f => f.Start()).Callback(() => container.Verify(c => c.SetActive("", func.Object.GetType())));
            container.Setup(c => c.Exists(It.IsAny<string>(), It.IsAny<Type>())).Returns(true);
            var asyncFunc = new AsyncManager(func.Object, "", container.Object);

            asyncFunc.Start();
        }
        public void JobNotRemovedWhenFinishesAndShouldBeRemovedOnCompleteIsFalse()
        {
            var func = new Mock<ICommand>();
            var container = new Mock<IAsyncCommandContainer>();
            IAsyncCommand a = new AsyncManager(func.Object, "", container.Object);

            //act
            func.Setup(f => f.Progress.Status).Returns(StatusEnum.NotStarted);

            a.Start();

            //assert
            container.Verify(c => c.Remove("", func.Object.GetType()), Times.Never());
        }