public void GivenUserIsTesterWhenShowThenListAvailableCharactersAndOptionToCreate() { var characters = new List <Character> { new Character { Name = "Sally" }, new Character { Name = "Rick" }, new Character { Name = "Joe" } }; _characterController.GetCharacterData().Returns(characters); _sut.Show(); _characterController.Received(1).GetCharacterData(); _console.Received(1).WriteLine("1 - Sally"); _console.Received(1).WriteLine("2 - Rick"); _console.Received(1).WriteLine("3 - Joe"); _console.Received(1).WriteLine("N - Create a new character."); _console.Received(1).WriteLine("D # - Delete a character where # is the character ID."); _console.Received(0).WriteLine("A - Admin options."); _console.Received(1).Write("Enter selection: "); }
public CharacterViewTest() { _characterController = Substitute.For <ICharacterController>(); var characters = new List <Character> { new Character { Name = "Sally" }, new Character { Name = "Rick" }, new Character { Name = "Joe" } }; _characterController.GetCharacterData().Returns(characters); var user = new User { Email = "*****@*****.**" }; _characterController.User.Returns(user); _characterController.When(x => x.Delete("Sally")) .Do(info => characters.Remove(characters.First(x => x.Name == "Sally"))); _console = Substitute.For <IConsoleWrapper>(); _newCharacter = Substitute.For <INewCharacterView>(); _mainView = Substitute.For <IMainView>(); _sut = new CharacterView(_console, _characterController, _mainView, _newCharacter); }
public void Show() { var characters = _character.GetCharacterData().ToList(); _console.Clear(); _console.WriteLine($"Welcome {_character.User.Email} choose a character to play:"); var i = 1; foreach (var character in characters) { _console.WriteLine($"{i} - {character.Name}"); i++; } _console.WriteLine("N - Create a new character."); _console.WriteLine("D # - Delete a character where # is the character ID."); _console.WriteLine("E - Exit game."); _console.Write("Enter selection: "); var retry = true; var tries = 0; while (retry && tries < 3) { retry = false; var selection = _console.ReadLine(); var split = selection.Split(' '); if (int.TryParse(selection, out _)) { _mainView.Show(characters[Convert.ToInt32(selection) - 1].Name); } else if (selection.ToUpper() == "N") { _newCharacterView.Show(); Show(); } else if (selection.ToUpper().StartsWith('D') && split.Length == 2 && int.TryParse(split[1], out _) && characters.Count > 0 && Convert.ToInt32(split[1]) <= characters.Count) { var name = characters[Convert.ToInt32(split[1]) - 1].Name; _console.Write($"Are you sure you want delete {name}? (Y)es or (N)o: "); var yesNo = _console.ReadLine(); if (yesNo.ToUpper().Trim() == "Y") { _character.Delete(name); _console.WriteLine($"{name} was deleted"); Show(); } else { retry = true; tries = 0; _console.Write("Enter selection: "); } } else if (selection.ToUpper().StartsWith('E')) { _console.Write("Are you sure you want to leave? (Y)es or (N)o: "); var yesNo = _console.ReadLine(); if (yesNo.ToUpper().Trim() == "Y") { break; } retry = true; tries = 0; _console.Write("Enter selection: "); } else { tries++; var returnMessage = tries < 3 ? "Try again." : "Go home..."; _console.WriteLine($"Invalid selection. {returnMessage}"); retry = true; } } }