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"); }
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()); }
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); }
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"); }
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()); }
/// <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>(); }