public void ShouldAddANewSequenceUsingWithGroup()
        {
            //Arrange
            var options = new StartupTasksOptions();

            //Act
            options.UsingThisExecutionOrder(s => s.First <TaskAlpha>())
            .WithGroup(s => s.First <TaskBeta>());
            var result = options.Groups;

            //Assert
            Assert.AreEqual(2, result.Count);
        }
        public void ShouldReturnASequenceSpecification()
        {
            //Act
            var options = new StartupTasksOptions();

            options.UsingThisExecutionOrder(s => s.First <TaskAlpha>().Then <TaskBeta>());
            var result = options.Sequence;

            //Assert
            Assert.IsNotNull(result);
            Assert.IsInstanceOfType(result, typeof(List <TaskExecutionParameters>));
            Assert.AreEqual(typeof(TaskAlpha), result[0].TaskType);
            Assert.AreEqual(typeof(TaskBeta), result[1].TaskType);
        }
        public void ShouldReturnTheLastSequenceUsingWithGroup()
        {
            //Arrange
            var options = new StartupTasksOptions();

            options.UsingThisExecutionOrder(s => s.First <TaskAlpha>())
            .WithGroup(s => s.First <TaskBeta>());

            //Act
            var result = options.Sequence;

            //Assert
            Assert.AreEqual(options.Groups[1].Sequence, result);
        }
        public void ShouldReturnAStartupTaskOptionsUsingWithGroup()
        {
            //Arrange
            var options = new StartupTasksOptions();

            options.UsingThisExecutionOrder(s => s.First <TaskAlpha>());

            //Act
            var result = options.WithGroup(s => s.First <TaskBeta>());

            //Assert
            Assert.IsNotNull(result);
            Assert.IsInstanceOfType(result, typeof(StartupTasksOptions));
            Assert.AreSame(options, result);
        }