public void PlayerAggregate_AdjustHandicap_PlayerNotRegistered_ErrorThrown() { PlayerAggregate playerAggregate = PlayerTestData.GetEmptyPlayerAggregate(); Should.Throw <InvalidOperationException>(() => playerAggregate.AdjustHandicap(PlayerTestData.HandicapAdjustment, PlayerTestData.TournamentId, PlayerTestData.GolfClubId, PlayerTestData.MeasuredCourseId, PlayerTestData.ScoreDate)); }
public void PlayerAggregate_AdjustHandicap_HandicapIncrease_HandicapAdjusted() { PlayerAggregate playerAggregate = PlayerTestData.GetRegisteredPlayerAggregate(); playerAggregate.AdjustHandicap(PlayerTestData.HandicapAdjustmentIncrease, PlayerTestData.TournamentId, PlayerTestData.GolfClubId, PlayerTestData.MeasuredCourseId, PlayerTestData.ScoreDate); playerAggregate.ExactHandicap.ShouldBe(PlayerTestData.NewExactHandicapIncreased); playerAggregate.PlayingHandicap.ShouldBe(PlayerTestData.NewPlayingHandicapIncreased); }
public void PlayerAggregate_AdjustHandicap_HandicapAdjustmentIsZero_HandicapNotAdjusted() { PlayerAggregate playerAggregate = PlayerTestData.GetRegisteredPlayerAggregate(); playerAggregate.AdjustHandicap(PlayerTestData.HandicapAdjustmentNoChange, PlayerTestData.TournamentId, PlayerTestData.GolfClubId, PlayerTestData.MeasuredCourseId, PlayerTestData.ScoreDate); playerAggregate.ExactHandicap.ShouldBe(PlayerTestData.ExactHandicap); playerAggregate.PlayingHandicap.ShouldBe(PlayerTestData.PlayingHandicap); }
public static PlayerAggregate GetRegisteredPlayerAggregateWithHandicapAdjustment() { PlayerAggregate playerAggregate = PlayerAggregate.Create(PlayerTestData.AggregateId); playerAggregate.Register(PlayerTestData.FirstName, PlayerTestData.MiddleName, PlayerTestData.LastName, PlayerTestData.Gender, PlayerTestData.DateOfBirth, PlayerTestData.ExactHandicap, PlayerTestData.EmailAddress); playerAggregate.AdjustHandicap(PlayerTestData.HandicapAdjustment, PlayerTestData.TournamentId, PlayerTestData.GolfClubId, PlayerTestData.MeasuredCourseId, PlayerTestData.ScoreDate); return(playerAggregate); }
public void PlayerAggregate_AdjustHandicap_InvalidData_ErrorThrown(Boolean validAdjustment, Boolean validTournamentId, Boolean validGolfClubId, Boolean validMeasuredCourseId, Boolean validScoreDate, Type exceptionType) { PlayerAggregate playerAggregate = PlayerTestData.GetRegisteredPlayerAggregate(); HandicapAdjustmentDataTransferObject handicapAdjustment = validAdjustment ? PlayerTestData.HandicapAdjustment : null; Guid tournamentId = validTournamentId ? PlayerTestData.TournamentId : Guid.Empty; Guid golfClubId = validGolfClubId ? PlayerTestData.GolfClubId : Guid.Empty; Guid measuredCourseId = validMeasuredCourseId ? PlayerTestData.MeasuredCourseId : Guid.Empty; DateTime scoreDate = validScoreDate ? PlayerTestData.ScoreDate: DateTime.MinValue; Should.Throw(() => { playerAggregate.AdjustHandicap(handicapAdjustment, tournamentId, golfClubId, measuredCourseId, scoreDate); }, exceptionType); }
/// <summary> /// Applies the handicap adjustment. /// </summary> /// <param name="score">The score.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns></returns> private async Task ApplyHandicapAdjustment(PlayerScoreRecordDataTransferObject score, CancellationToken cancellationToken) { PlayerAggregate playerAggregate = await this.PlayerRepository.GetLatestVersion(score.PlayerId, cancellationToken); List <HandicapAdjustment> adjustments = this.HandicapAdjustmentCalculatorService.CalculateHandicapAdjustment(playerAggregate.ExactHandicap, score.CSS, score.HoleScores); Logger.LogInformation($"Player Id {playerAggregate.AggregateId} Total Adjustment [{adjustments.Sum(x => x.TotalAdjustment)}]"); foreach (HandicapAdjustment adjustment in adjustments) { Player.HandicapAdjustmentDataTransferObject handicapAdjustment = new Player.HandicapAdjustmentDataTransferObject { TotalAdjustment = adjustment.TotalAdjustment, AdjustmentValuePerStroke = adjustment.AdjustmentValuePerStroke, NumberOfStrokesBelowCss = adjustment.NumberOfStrokesBelowCss }; playerAggregate.AdjustHandicap(handicapAdjustment, score.TournamentId, score.GolfClubId, score.MeasuredCourseId, score.ScoreDate); } await this.PlayerRepository.SaveChanges(playerAggregate, cancellationToken); }