public async Task Breadcrumb_IfIsSpecifiedItIsWrittenToTheScreen() { // Arrange string titleOfMenu1 = "Title of menu 1"; string titleOfMenu2 = "Title of menu 2"; string titleOfMenu3 = "Title of menu 3"; var classUnderTest = new ConsoleMenuController(_mockConsoleMenuRepository.Object, _mockConsoleCommand.Object, _mockPromptHelper.Object); BuildThreeLevelMenu(classUnderTest, titleOfMenu2, titleOfMenu3); _mockPromptHelper.SetupSequence(s => s.GetNumber(It.IsAny <string>(), It.IsAny <int>())) .Returns(3) // User presses 3 and goes to menu2 .Returns(3) // User presses 3 and goes to menu3 .Returns(0) // Users exits menu3 and returns to menu2 .Returns(0) // Users exits menu2 and returns to menu1 .Returns(0); // Users exits menu1 and the app too // Act await classUnderTest.DisplayMenuAsync("Menu1", titleOfMenu1, BreadCrumbType.Concatenate); // Assert _mockConsoleCommand.Verify(v => v.WriteLine(titleOfMenu1), Times.Exactly(2)); _mockConsoleCommand.Verify(v => v.WriteLine($"{titleOfMenu1} > {titleOfMenu2}"), Times.Exactly(2)); _mockConsoleCommand.Verify(v => v.WriteLine($"{titleOfMenu1} > {titleOfMenu2} > {titleOfMenu3}"), Times.Once); }
public async Task Breadcrumb_ParentDoesNotHaveTitleItIsExcludedFromTheTrail( string titleOfMenu1, string titleOfMenu2, string titleOfMenu3, string expectMenu1, string expectMenu2, string expectMenu3, string message) { // Arrange var classUnderTest = new ConsoleMenuController(_mockConsoleMenuRepository.Object, _mockConsoleCommand.Object, _mockPromptHelper.Object); BuildThreeLevelMenu(classUnderTest, titleOfMenu2, titleOfMenu3); _mockPromptHelper.SetupSequence(s => s.GetNumber(It.IsAny <string>(), It.IsAny <int>())) .Returns(3) // User presses 3 and goes to menu2 .Returns(3) // User presses 3 and goes to menu3 .Returns(0) // Users exits menu3 and returns to menu2 .Returns(0) // Users exits menu2 and returns to menu1 .Returns(0); // Users exits menu1 and the app too // Act await classUnderTest.DisplayMenuAsync("Menu1", titleOfMenu1, BreadCrumbType.Concatenate); // Assert if (string.IsNullOrWhiteSpace(expectMenu1) == false) { _mockConsoleCommand.Verify(v => v.WriteLine(expectMenu1), Times.Exactly(2), message); } if (string.IsNullOrWhiteSpace(expectMenu2) == false) { _mockConsoleCommand.Verify(v => v.WriteLine(expectMenu2), Times.Exactly(2), message); } if (string.IsNullOrWhiteSpace(expectMenu3) == false) { _mockConsoleCommand.Verify(v => v.WriteLine(expectMenu3), Times.Once, message); } }
public async Task Title_IfSpecifiedItIsWrittenToTheScreen() { // Arrange var classUnderTest = new ConsoleMenuController(_mockConsoleMenuRepository.Object, _mockConsoleCommand.Object, _mockPromptHelper.Object); string titleOfMenu1 = "Title of menu 1"; BuildThreeLevelMenu(classUnderTest, string.Empty, string.Empty); _mockPromptHelper.Setup(s => s.GetNumber(It.IsAny <string>(), It.IsAny <int>())) .Returns(0); //Users exits menu1 and the app too // Act await classUnderTest.DisplayMenuAsync("Menu1", titleOfMenu1); // Assert _mockConsoleCommand.Verify(v => v.WriteLine(titleOfMenu1), Times.Once); }