public void ViewSeasonsCommand_HappyPath() { // Arrange // Instantiate class under test. var viewModel = new GamePredictorWindowViewModel(_sharedService, _windowService); // Set up needed infrastructure of class under test. var seasonCount = 3; var lastSeason = 1920; var seasonIDs = new List <int>(seasonCount); for (int i = lastSeason; i > lastSeason - seasonCount; i--) { var seasonID = i; seasonIDs.Add(seasonID); } A.CallTo(() => _windowService.GetSeasonIDs()).Returns(seasonIDs); // Act viewModel.ViewSeasonsCommand.Execute(null); // Assert A.CallTo(() => _windowService.GetSeasonIDs()).MustHaveHappenedOnceExactly(); Assert.IsInstanceOf <ReadOnlyCollection <int> >(viewModel.GuestSeasons); Assert.IsInstanceOf <ReadOnlyCollection <int> >(viewModel.HostSeasons); Assert.AreEqual(lastSeason, viewModel.GuestSelectedSeason); Assert.AreEqual(lastSeason, viewModel.HostSelectedSeason); }
public void ViewSeasonsCommand_Should() { // Arrange var seasonRepository = A.Fake <ISeasonRepository>(); var seasons = new List <Season> { new Season { Year = 1920 }, new Season { Year = 1921 }, new Season { Year = 1922 } }; A.CallTo(() => seasonRepository.GetSeasons()).Returns(seasons); var teamSeasonRepository = A.Fake <ITeamSeasonRepository>(); var gamePredictorService = A.Fake <IGamePredictorService>(); var messageBoxService = A.Fake <IMessageBoxService>(); var testObject = new GamePredictorWindowViewModel(seasonRepository, teamSeasonRepository, gamePredictorService, messageBoxService); // Act testObject.ViewSeasonsCommand.Execute(null !); // Assert A.CallTo(() => seasonRepository.GetSeasons()).MustHaveHappenedOnceExactly(); testObject.GuestSeasons.ShouldBeOfType <ReadOnlyCollection <int> >(); testObject.GuestSelectedSeason.ShouldBe(testObject.GuestSeasons.First()); testObject.HostSeasons.ShouldBeOfType <ReadOnlyCollection <int> >(); testObject.HostSelectedSeason.ShouldBe(testObject.HostSeasons.First()); }
public void ValidateDataEntry_HostSeasonIsNull_ThrowsDataValidationException() { // Arrange // Instantiate class under test. var viewModel = new GamePredictorWindowViewModel(_sharedService, _windowService) { GuestName = "Guest", HostName = "Host" }; // Set up needed infrastructure of class under test. A.CallTo(() => _sharedService.FindTeamSeason(viewModel.GuestName, viewModel.GuestSelectedSeason)) .Returns(new TeamSeason()); A.CallTo(() => _sharedService.FindTeamSeason(viewModel.HostName, viewModel.HostSelectedSeason)) .Returns(null); // Act var ex = Assert.Throws <DataValidationException>(() => viewModel.ValidateDataEntry()); // Assert A.CallTo(() => _sharedService.FindTeamSeason(viewModel.GuestName, viewModel.GuestSelectedSeason)) .MustHaveHappenedOnceExactly(); A.CallTo(() => _sharedService.FindTeamSeason(viewModel.HostName, viewModel.HostSelectedSeason)) .MustHaveHappenedOnceExactly(); Assert.AreEqual(WpfGlobals.Constants.TeamNotInDatabaseMessage, ex.Message); }
public void ValidateDataEntry_GuestSeasonAndHostSeasonAreNotNull_ThrowsNoException() { // Arrange // Instantiate class under test. var viewModel = new GamePredictorWindowViewModel(_sharedService, _windowService) { GuestName = "Guest", HostName = "Host" }; // Set up needed infrastructure of class under test. A.CallTo(() => _sharedService.FindTeamSeason(viewModel.GuestName, viewModel.GuestSelectedSeason)) .Returns(new TeamSeason()); A.CallTo(() => _sharedService.FindTeamSeason(viewModel.HostName, viewModel.HostSelectedSeason)) .Returns(new TeamSeason()); // Act var result = viewModel.ValidateDataEntry(); // Assert A.CallTo(() => _sharedService.FindTeamSeason(viewModel.GuestName, viewModel.GuestSelectedSeason)) .MustHaveHappenedOnceExactly(); A.CallTo(() => _sharedService.FindTeamSeason(viewModel.HostName, viewModel.HostSelectedSeason)) .MustHaveHappenedOnceExactly(); Assert.IsInstanceOf <Matchup>(result); }
public void CalculatePredictionCommand_DataValidationExceptionCaught_ShowsExceptionMessage() { // Arrange // Instantiate class under test. var viewModel = new GamePredictorWindowViewModel(_sharedService, _windowService) { GuestName = null, HostName = "Host" }; // Act viewModel.CalculatePredictionCommand.Execute(null); // Assert #region ValidateDataEntry() A.CallTo(() => _sharedService.FindTeamSeason(viewModel.GuestName, viewModel.GuestSelectedSeason)) .MustHaveHappenedOnceExactly(); A.CallTo(() => _sharedService.FindTeamSeason(viewModel.HostName, viewModel.HostSelectedSeason)) .MustHaveHappenedOnceExactly(); #endregion ValidateDataEntry() A.CallTo(() => _sharedService.ShowExceptionMessage(A <DataValidationException> .Ignored)) .MustHaveHappenedOnceExactly(); }
public void CalculatePredictionCommand_HappyPath() { // Arrange // Instantiate class under test. var viewModel = new GamePredictorWindowViewModel(_sharedService, _windowService) { GuestName = "Guest", HostName = "Host" }; // Set up needed infrastructure of class under test. var guestSeason = new TeamSeason { TeamName = "Guest", SeasonID = 2017, OffensiveFactor = 1.1, OffensiveAverage = 22, DefensiveFactor = 0.9, DefensiveAverage = 20 }; A.CallTo(() => _sharedService.FindTeamSeason(viewModel.GuestName, viewModel.GuestSelectedSeason)) .Returns(guestSeason); var hostSeason = new TeamSeason { TeamName = "Host", SeasonID = 2017, OffensiveFactor = 1.2, OffensiveAverage = 23, DefensiveFactor = 0.8, DefensiveAverage = 19 }; A.CallTo(() => _sharedService.FindTeamSeason(viewModel.HostName, viewModel.HostSelectedSeason)) .Returns(hostSeason); // Act viewModel.CalculatePredictionCommand.Execute(null); // Assert #region ValidateDataEntry() A.CallTo(() => _sharedService.FindTeamSeason(viewModel.GuestName, viewModel.GuestSelectedSeason)) .MustHaveHappenedOnceExactly(); A.CallTo(() => _sharedService.FindTeamSeason(viewModel.HostName, viewModel.HostSelectedSeason)) .MustHaveHappenedOnceExactly(); #endregion ValidateDataEntry() Assert.AreEqual((int)((guestSeason.OffensiveFactor * hostSeason.DefensiveAverage + hostSeason.DefensiveFactor * guestSeason.OffensiveAverage) / 2d), viewModel.GuestScore); Assert.AreEqual((int)((hostSeason.OffensiveFactor * guestSeason.DefensiveAverage + guestSeason.DefensiveFactor * hostSeason.OffensiveAverage) / 2d), viewModel.HostScore); }
//[TestCase] public void TestCase1() { // Arrange // Instantiate class under test. var viewModel = new GamePredictorWindowViewModel(_sharedService, _windowService); // TODO: Define argument variables of method under test. // TODO: Set up needed infrastructure of class under test. // Act // TODO: Call method under test. // Assert // TODO: Assert results of call to method under test. }
public void CalculatePredictionCommand_GenericExceptionCaught_ShowsExceptionMessage() { // Arrange // Instantiate class under test. var viewModel = new GamePredictorWindowViewModel(_sharedService, _windowService); // Set up needed infrastructure of class under test. var ex = new Exception(); A.CallTo(() => _sharedService.FindTeamSeason(A <string> .Ignored, A <int> .Ignored)).Throws(ex); // Act viewModel.CalculatePredictionCommand.Execute(null); // Assert A.CallTo(() => _sharedService.ShowExceptionMessage(ex, "Exception")).MustHaveHappenedOnceExactly(); }
public void GuestSeasonsSetter_WhenValueIsNull_ShouldThrowArgumentNullException() { // Arrange var seasonRepository = A.Fake <ISeasonRepository>(); var teamSeasonRepository = A.Fake <ITeamSeasonRepository>(); var gamePredictorService = A.Fake <IGamePredictorService>(); var messageBoxService = A.Fake <IMessageBoxService>(); var testObject = new GamePredictorWindowViewModel(seasonRepository, teamSeasonRepository, gamePredictorService, messageBoxService); // Act Func <ReadOnlyCollection <int> > func = () => testObject.GuestSeasons = null !; // Assert var ex = func.ShouldThrow <ArgumentNullException>(); ex.ParamName.ShouldBe <string>($"{testObject.GetType()}.{nameof(testObject.GuestSeasons)}"); }
public void CalculatePredictionCommand_WhenDataEntryIsValid_ShouldCallGamePredictorServicePredictGameScore() { // Arrange var seasonRepository = A.Fake <ISeasonRepository>(); var teamSeasonRepository = A.Fake <ITeamSeasonRepository>(); var guestName = "Guest"; TeamSeason guestSeason = new TeamSeason(); A.CallTo(() => teamSeasonRepository.GetTeamSeasonByTeamAndSeason(guestName, A <int> .Ignored)) .Returns(guestSeason); var hostName = "Host"; TeamSeason hostSeason = new TeamSeason(); A.CallTo(() => teamSeasonRepository.GetTeamSeasonByTeamAndSeason(hostName, A <int> .Ignored)) .Returns(hostSeason); var gamePredictorService = A.Fake <IGamePredictorService>(); double guestScore = 7.00d; double hostScore = 14.00d; A.CallTo(() => gamePredictorService.PredictGameScore(A <TeamSeason> .Ignored, A <TeamSeason> .Ignored)) .Returns((guestScore, hostScore)); var messageBoxService = A.Fake <IMessageBoxService>(); var testObject = new GamePredictorWindowViewModel(seasonRepository, teamSeasonRepository, gamePredictorService, messageBoxService) { GuestName = guestName, HostName = hostName }; // Act testObject.CalculatePredictionCommand.Execute(null !); // Assert A.CallTo(() => messageBoxService.Show(A <string> .Ignored, "Invalid Data", MessageBoxButton.OK, MessageBoxImage.Error)).MustNotHaveHappened(); A.CallTo(() => gamePredictorService.PredictGameScore(guestSeason, hostSeason)) .MustHaveHappenedOnceExactly(); testObject.GuestScore.ShouldBe((int)guestScore); testObject.HostScore.ShouldBe((int)hostScore); }
public void GuestSeasonsSetter_WhenValueIsNotNullAndDoesNotEqualGuestSeasons_ShouldAssignValueToGuestSeasons() { // Arrange var seasonRepository = A.Fake <ISeasonRepository>(); var teamSeasonRepository = A.Fake <ITeamSeasonRepository>(); var gamePredictorService = A.Fake <IGamePredictorService>(); var messageBoxService = A.Fake <IMessageBoxService>(); var testObject = new GamePredictorWindowViewModel(seasonRepository, teamSeasonRepository, gamePredictorService, messageBoxService); var guestSeasons = new ReadOnlyCollection <int>(new List <int>()); // Act Func <ReadOnlyCollection <int> > func = () => testObject.GuestSeasons = guestSeasons; // Assert func.ShouldNotThrow(); testObject.GuestSeasons.ShouldBeOfType <ReadOnlyCollection <int> >(); testObject.GuestSeasons.ShouldBe(guestSeasons); }
public void GuestNameSetter_WhenValueDoesNotEqualGuestName_ShouldAssignValueToGuestName() { // Arrange var seasonRepository = A.Fake <ISeasonRepository>(); var teamSeasonRepository = A.Fake <ITeamSeasonRepository>(); var gamePredictorService = A.Fake <IGamePredictorService>(); var messageBoxService = A.Fake <IMessageBoxService>(); var testObject = new GamePredictorWindowViewModel(seasonRepository, teamSeasonRepository, gamePredictorService, messageBoxService) { GuestName = "Team" }; var guestName = "Guest"; // Act testObject.GuestName = guestName; // Assert testObject.GuestName.ShouldBe(guestName); }
public void GuestSelectedSeasonSetter_WhenValueDoesNotEqualGuestSelectedSeason_ShouldAssignValueToSelectedGuestSeason() { // Arrange var seasonRepository = A.Fake <ISeasonRepository>(); var teamSeasonRepository = A.Fake <ITeamSeasonRepository>(); var gamePredictorService = A.Fake <IGamePredictorService>(); var messageBoxService = A.Fake <IMessageBoxService>(); var testObject = new GamePredictorWindowViewModel(seasonRepository, teamSeasonRepository, gamePredictorService, messageBoxService) { GuestSelectedSeason = 1920 }; var guestSelectedSeason = 1921; // Act testObject.GuestSelectedSeason = guestSelectedSeason; // Assert testObject.GuestSelectedSeason.ShouldBe(guestSelectedSeason); }
public void HostScoreSetter_WhenValueDoesNotEqualHostScore_ShouldAssignValueToHostScore() { // Arrange var seasonRepository = A.Fake <ISeasonRepository>(); var teamSeasonRepository = A.Fake <ITeamSeasonRepository>(); var gamePredictorService = A.Fake <IGamePredictorService>(); var messageBoxService = A.Fake <IMessageBoxService>(); var testObject = new GamePredictorWindowViewModel(seasonRepository, teamSeasonRepository, gamePredictorService, messageBoxService) { HostScore = 0 }; var hostScore = 7; // Act testObject.HostScore = hostScore; // Assert testObject.HostScore.ShouldBe(hostScore); }
public void CalculatePredictionCommand_WhenHostSeasonNotFoundInDataStore_ShouldShowTeamNotInDatabaseMessageErrorMessage() { // Arrange var seasonRepository = A.Fake <ISeasonRepository>(); var teamSeasonRepository = A.Fake <ITeamSeasonRepository>(); var guestName = "Guest"; TeamSeason guestSeason = new TeamSeason(); A.CallTo(() => teamSeasonRepository.GetTeamSeasonByTeamAndSeason(guestName, A <int> .Ignored)) .Returns(guestSeason); var hostName = "Host"; TeamSeason hostSeason = null !; A.CallTo(() => teamSeasonRepository.GetTeamSeasonByTeamAndSeason(hostName, A <int> .Ignored)) .Returns(hostSeason); var gamePredictorService = A.Fake <IGamePredictorService>(); var messageBoxService = A.Fake <IMessageBoxService>(); var testObject = new GamePredictorWindowViewModel(seasonRepository, teamSeasonRepository, gamePredictorService, messageBoxService) { GuestName = guestName, HostName = hostName }; // Act testObject.CalculatePredictionCommand.Execute(null !); // Assert A.CallTo(() => messageBoxService.Show( "Please make sure that both teams are in the league and that both team names are spelled correctly.", "Invalid Data", MessageBoxButton.OK, MessageBoxImage.Error)).MustHaveHappenedOnceExactly(); A.CallTo(() => gamePredictorService.PredictGameScore(A <TeamSeason> .Ignored, A <TeamSeason> .Ignored)) .MustNotHaveHappened(); }
public void ViewSeasonsCommand_ExceptionCaught_ShowsExceptionMessage() { // Arrange // Instantiate class under test. var viewModel = new GamePredictorWindowViewModel(_sharedService, _windowService); // Set up needed infrastructure of class under test. var ex = new Exception(); A.CallTo(() => _windowService.GetSeasonIDs()).Throws(ex); // Act viewModel.ViewSeasonsCommand.Execute(null); // Assert A.CallTo(() => _sharedService.ShowExceptionMessage(ex, "Exception")).MustHaveHappenedOnceExactly(); Assert.IsNull(viewModel.GuestSeasons); Assert.IsNull(viewModel.HostSeasons); Assert.AreEqual(0, viewModel.GuestSelectedSeason); Assert.AreEqual(0, viewModel.HostSelectedSeason); }
public void CalculatePredictionCommand_WhenGuestNameIsValidAndHostNameIsWhiteSpace_ShouldShowBothTeamsNeededErrorMessage() { // Arrange var seasonRepository = A.Fake <ISeasonRepository>(); var teamSeasonRepository = A.Fake <ITeamSeasonRepository>(); var gamePredictorService = A.Fake <IGamePredictorService>(); var messageBoxService = A.Fake <IMessageBoxService>(); var testObject = new GamePredictorWindowViewModel(seasonRepository, teamSeasonRepository, gamePredictorService, messageBoxService) { GuestName = "Team", HostName = " " }; // Act testObject.CalculatePredictionCommand.Execute(null !); // Assert A.CallTo(() => messageBoxService.Show("Please enter names for both teams.", "Invalid Data", MessageBoxButton.OK, MessageBoxImage.Error)).MustHaveHappenedOnceExactly(); A.CallTo(() => gamePredictorService.PredictGameScore(A <TeamSeason> .Ignored, A <TeamSeason> .Ignored)) .MustNotHaveHappened(); }