public void TestUpdateThrowExceptionThenInteractive() { tester.SetInputs(new[] { "y" }); manager = new DownloadManager(tester.Mock()); var packageInitialMock = new Mock <IPackage>(); packageInitialMock.Setup((o) => o.GetInstallationSource()).Returns(InstallationSource.Dist); packageInitialMock.Setup((o) => o.GetDistType()).Returns("foo"); var packageTargetMock = new Mock <IPackage>(); packageTargetMock.Setup((o) => o.GetInstallationSource()).Returns(InstallationSource.Dist); packageTargetMock.Setup((o) => o.GetDistType()).Returns("foo"); var downloaderMock = new Mock <IDownloader>(); downloaderMock.Setup((o) => o.InstallationSource).Returns(InstallationSource.Dist); downloaderMock.Setup((o) => o.Update(packageInitialMock.Object, packageTargetMock.Object, "cwd")) .Throws(new RuntimeException("want interactive")); manager.SetDownloader("foo", downloaderMock.Object); manager.Update(packageInitialMock.Object, packageTargetMock.Object, "cwd"); downloaderMock.Verify((o) => o.Remove(packageInitialMock.Object, "cwd")); downloaderMock.Verify((o) => o.Install(packageTargetMock.Object, "cwd")); }
public void TestAskConfirmation() { var tester = new TesterIOConsole(); tester.SetInputs(new[] { "yes" }); var ioConsole = tester.Mock(); var answer = ioConsole.AskConfirmation("Do you like me?", false); Assert.AreEqual(true, answer); }
public void TestAsk() { var tester = new TesterIOConsole(); tester.SetInputs(new[] { "menghanyu" }); var ioConsole = tester.Mock(); var answer = ioConsole.Ask("What's your name?", "miaomiao"); Assert.AreEqual("menghanyu", (string)answer); Assert.AreEqual("What's your name?", tester.GetDisplay()); }
public void TestSetHelper() { var tester = new TesterIOConsole(); tester.SetInputs(new[] { "menghanyu" }); var ioConsole = tester.Mock(); ioConsole.SetHelperQuestion(new HelperQuestionDefault()); var answer = ioConsole.Ask("What's your name?", "miaomiao"); Assert.AreEqual("menghanyu", (string)answer); Assert.AreEqual( @" What's your name? [miaomiao]: > ", tester.GetDisplay()); }
public void TestAskAndValidate() { var tester = new TesterIOConsole(); tester.SetInputs(new[] { "menghanyu", "miaomiao" }); var ioConsole = tester.Mock(); var answer = ioConsole.AskAndValidate("What's your name?", (value) => { if (value == "menghanyu") { throw new System.Exception("Not allowed to be called menghanyu"); } return(value); }); Assert.AreEqual("miaomiao", (string)answer); }
public void TestTesterIOConsoleMock() { var tester = new TesterIOConsole(); tester.SetInputs(new[] { "menghanyu" }); var io = tester.Mock(AbstractTester.OptionStdErrorSeparately(true)); Assert.AreEqual("menghanyu", (string)io.Ask("what's your name?", "miaomiao")); io.Write("hello world"); Assert.AreEqual( @"hello world ", tester.GetDisplay()); io.WriteError("hello world error"); Assert.AreEqual( @"what's your name?hello world error ", tester.GetDisplayError()); }
public void TestAskChoiceMult() { var tester = new TesterIOConsole(); tester.SetInputs(new[] { "0,tutu", "menghanyu" }); var choices = new[] { "miaomiao", "menghanyu", "tutu", }; var ioConsole = tester.Mock(); var answer = ioConsole.AskChoiceMult("What's your name?", choices, "tutu"); CollectionAssert.AreEqual(new[] { 0, 2 }, answer); answer = ioConsole.AskChoiceMult("What's your name?", choices, "miaomiao"); CollectionAssert.AreEqual(new[] { 1 }, answer); }
public void TestHasLocalChangeInteractWithUser() { var packageMock = new Mock <IPackage>(); packageMock.Setup((o) => o.GetSourceReference()) .Returns("ref"); packageMock.Setup((o) => o.GetSourceUris()) .Returns(new[] { "https://github.com/bucket/bucket" }); packageMock.Setup((o) => o.GetVersion()) .Returns("1.0.0.0"); var processMock = new Mock <IProcessExecutor>(); var expectedGitCommand = WinCompat("git show-ref --head -d"); processMock.Setup(expectedGitCommand, expectedCwd: WinCompat(root)); expectedGitCommand = WinCompat("git status --porcelain --untracked-files=no"); var stdout = @" M 1-foo/bar.cs M 2-foo/baz.cs M 3-foobar.json M 4-foo/aux/bar.cs M 5-foobar.json M 6-foo/aux/bar.cs M 7-foo/aux/bar.cs M 8-foo/aux/bar.cs M 9-foo/aux/bar.cs M 10-foo/aux/bar.cs M 11-foo/aux/bar.cs M 12-foo/aux/bar.cs "; processMock.Setup(expectedGitCommand, actualOut: stdout, expectedCwd: WinCompat(root)); expectedGitCommand = WinCompat("git stash --include-untracked"); processMock.Setup(expectedGitCommand, expectedCwd: WinCompat(root)); expectedGitCommand = WinCompat("git diff HEAD"); stdout = @"index 8ba5bbe..9cda3f0 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ foobarbaz foobarbaz +foo foobarbaz foobarbaz "; processMock.Setup(expectedGitCommand, actualOut: stdout, expectedCwd: WinCompat(root)); expectedGitCommand = WinCompat("git stash pop"); processMock.Setup(expectedGitCommand, expectedCwd: WinCompat(root)); expectedGitCommand = WinCompat("git log ref..ref --pretty=format:'%h - %an: %s'"); stdout = @"c5bd155 - foo: bar ccf0f2f - bar: baz ac027b9 - foo: baz"; processMock.Setup(expectedGitCommand, actualOut: stdout, expectedCwd: WinCompat(root)); if (!Directory.Exists(root + "/.git")) { Directory.CreateDirectory(root + "/.git"); } tester.SetInputs(new[] { "v", "d", "?", "s" }); io = tester.Mock(AbstractTester.OptionVerbosity(OutputOptions.VerbosityVerbose)); var downloader = CreateDownloaderMock(process: processMock.Object); downloader.Update(packageMock.Object, packageMock.Object, root); var display = tester.GetDisplay(); StringAssert.Contains(display, "The package has modified files"); StringAssert.Contains(display, "2 more files modified, choose \"v\" to view the full list."); StringAssert.Contains(display, "Discard changes [y,n,v,d,s,?,h]?"); StringAssert.Contains(display, "stash changes and try to reapply them after the update."); StringAssert.Contains(display, "Re-applying stashed changes"); StringAssert.Contains(display, "Pulling in changes:"); processMock.VerifyAll(); }