Exemplo n.º 1
0
        public void Execute_ReturnsError_WhenBuildAndUpdateDependenciesVisitor_Fails()
        {
            bool checkoutCalled = false;
            var  algorithm      = Container.Resolve <IDependencyVisitorAlgorithm>();

            algorithm.Arrange(a => a.TraverseDependencies(Arg.IsAny <IVisitor>(), Arg.AnyString))
            .DoInstead((IVisitor visitor, string directory) =>
            {
                if (visitor is CheckOutBranchVisitor)
                {
                    checkoutCalled     = true;
                    visitor.ReturnCode = ReturnCode.Success;
                    return;
                }

                visitor.ReturnCode = ReturnCode.FailedToRunBuildScript;
            });


            var options  = new UpdateSubOptions();
            var instance = new UpdateCommand(options);

            var code = instance.Execute();

            Assert.IsTrue(checkoutCalled, "Dependencies should have been checked out first.");
            Assert.AreEqual(ReturnCode.FailedToRunBuildScript, code, "Invalid Return Code");
        }
Exemplo n.º 2
0
        public void Execute_ReturnsSucccess_WhenBuildAndUpdateDependenciesVisitor_Succeeds()
        {
            string[] packages =
            {
                "TestPackage.0.1.2",
                "TestPackage.Busi.3.1.2"
            };

            bool checkoutCalled = false;
            var  algorithm      = Container.Resolve <IDependencyVisitorAlgorithm>();

            algorithm.Arrange(a => a.TraverseDependencies(Arg.IsAny <IVisitor>(), Arg.AnyString))
            .DoInstead((IVisitor visitor, string directory) =>
            {
                if (visitor is VerifyCorrectBranchVisitor)
                {
                    checkoutCalled     = true;
                    visitor.ReturnCode = ReturnCode.Success;
                    return;
                }

                Assert.IsTrue(visitor is BuildAndUpdateDependenciesVisitor);

                foreach (var package in packages)
                {
                    ((BuildAndUpdateDependenciesVisitor)visitor).UpdatedPackages.Add(package);
                }

                visitor.ReturnCode = ReturnCode.Success;
            });

            var console = Container.Resolve <IConsole>();

            StringBuilder output = new StringBuilder();

            console.Arrange(c => c.WriteLine(Arg.AnyString))
            .DoInstead((string text) =>
            {
                output.AppendLine(text);
            });

            var expected = "Updated packages: " + Environment.NewLine +
                           "    " + string.Join(Environment.NewLine + "    ", packages) + Environment.NewLine +
                           "Update complete!" + Environment.NewLine;


            var options  = new UpdateSubOptions();
            var instance = new UpdateCommand(options);

            var code = instance.Execute();

            Assert.IsTrue(checkoutCalled, "Dependencies should have been checked out first.");
            Assert.AreEqual(ReturnCode.Success, code, "Invalid Return Code");
            Assert.AreEqual(expected, output.ToString());
        }
Exemplo n.º 3
0
        private static int UpdateCommand(UpdateSubOptions updateSubOptions)
        {
            if (updateSubOptions.Packages == null || updateSubOptions.Packages.Count == 0)
            {
                ConsoleHelper.WriteError("No Packages specified");
                return(1);
            }

            App.UpdatePackages(updateSubOptions.Packages);

            return(0);
        }
Exemplo n.º 4
0
        public void Execute_ReturnsError_WhenCheckOutBranchVisitor_Fails()
        {
            var algorithm = Container.Resolve <IDependencyVisitorAlgorithm>();

            algorithm.Arrange(a => a.TraverseDependencies(Arg.IsAny <IVisitor>(), Arg.AnyString))
            .DoInstead((IVisitor visitor, string directory) =>
            {
                Assert.IsNotNull(visitor as CheckOutBranchVisitor, "The first visitor should be of type CheckOutBranchVisitor");
                visitor.ReturnCode = ReturnCode.FailedToRunGitCommand;
            });


            var options  = new UpdateSubOptions();
            var instance = new UpdateCommand(options);

            var code = instance.Execute();

            Assert.AreEqual(ReturnCode.FailedToRunGitCommand, code, "Invalid Return Code");
        }
Exemplo n.º 5
0
        public void Execute_ReturnsSucccess_WhenBuildAndUpdateDependenciesVisitor_Succeeds()
        {
            bool checkoutCalled = false;
            var  algorithm      = Container.Resolve <IDependencyVisitorAlgorithm>();

            algorithm.Arrange(a => a.TraverseDependencies(Arg.IsAny <IVisitor>(), Arg.AnyString))
            .DoInstead((IVisitor visitor, string directory) =>
            {
                if (visitor is CheckOutBranchVisitor)
                {
                    checkoutCalled     = true;
                    visitor.ReturnCode = ReturnCode.Success;
                    return;
                }

                Assert.IsTrue(visitor is BuildAndUpdateDependenciesVisitor);
                visitor.ReturnCode = ReturnCode.Success;
            });

            var console = Container.Resolve <IConsole>();

            StringBuilder output = new StringBuilder();

            console.Arrange(c => c.WriteLine(Arg.AnyString))
            .DoInstead((string text) =>
            {
                output.AppendLine(text);
            });


            var options  = new UpdateSubOptions();
            var instance = new UpdateCommand(options);

            var code = instance.Execute();

            Assert.IsTrue(checkoutCalled, "Dependencies should have been checked out first.");
            Assert.AreEqual(ReturnCode.Success, code, "Invalid Return Code");
            Assert.AreEqual("Update complete!" + Environment.NewLine, output.ToString());
        }
Exemplo n.º 6
0
 /// <summary>
 /// Creates a new <see cref="UpdateCommand"/>
 /// </summary>
 /// <param name="options">The <see cref="UpdateSubOptions"/> that configure the command.</param>
 public UpdateCommand(UpdateSubOptions options)
 {
     _options   = options;
     _console   = DependencyInjection.Resolve <IConsole>();
     _algorithm = DependencyInjection.Resolve <IDependencyVisitorAlgorithm>();
 }