示例#1
0
        //[Authorize(Policy = PolicyNames.ProcessHandicapCalculationsPolicy)]
        public async Task <IActionResult> ProcessHandicapCalculations([FromQuery] Guid tournamentId,
                                                                      CancellationToken cancellationToken)
        {
            StartHandicapCalculationProcessForTournamentCommand command = StartHandicapCalculationProcessForTournamentCommand.Create(tournamentId);

            await this.CommandRouter.Route(command, cancellationToken);

            return(this.NoContent());
        }
示例#2
0
        /// <summary>
        /// Handles the command.
        /// </summary>
        /// <param name="command">The command.</param>
        /// <param name="cancellationToken">The cancellation token.</param>
        /// <returns></returns>
        private async Task HandleCommand(StartHandicapCalculationProcessForTournamentCommand command,
                                         CancellationToken cancellationToken)
        {
            // Get the tournament for validation
            TournamentAggregate tournament = await this.TournamentRepository.GetLatestVersion(command.TournamentId, cancellationToken);

            // Rehydrate the aggregate
            HandicapCalculationProcessAggregate handicapCalculationProcessAggregate =
                await this.HandicapCalculationProcessRepository.GetLatestVersion(command.TournamentId, cancellationToken);

            // Call the aggregate method
            handicapCalculationProcessAggregate.StartHandicapCalculationProcess(tournament, DateTime.Now);

            // Save the changes
            await this.HandicapCalculationProcessRepository.SaveChanges(handicapCalculationProcessAggregate, cancellationToken);
        }
        public void HandicapCalculationCommandHandler_HandleCommand_StartHandicapCalculationProcessForTournamentCommand_CommandHandled()
        {
            Mock <IAggregateRepository <HandicapCalculationProcessAggregate> > handicapCalculationProcessRepository = new Mock <IAggregateRepository <HandicapCalculationProcessAggregate> >();

            handicapCalculationProcessRepository.Setup(h => h.GetLatestVersion(It.IsAny <Guid>(), CancellationToken.None))
            .ReturnsAsync(HandicapCalculationProcessTestData.GetEmptyHandicapCalculationProcessAggregate());
            Mock <IAggregateRepository <TournamentAggregate> > tournamentRepository = new Mock <IAggregateRepository <TournamentAggregate> >();

            tournamentRepository.Setup(t => t.GetLatestVersion(It.IsAny <Guid>(), CancellationToken.None))
            .ReturnsAsync(TournamentTestData.GetCompletedTournamentAggregateWithCSSCalculatedAggregate());

            HandicapCalculationCommandHandler handler = new HandicapCalculationCommandHandler(handicapCalculationProcessRepository.Object,
                                                                                              tournamentRepository.Object);

            StartHandicapCalculationProcessForTournamentCommand command = HandicapCalculationProcessTestData.GetStartHandicapCalculationProcessForTournamentCommand();

            Should.NotThrow(async() => { await handler.Handle(command, CancellationToken.None); });
        }
示例#4
0
 public static StartHandicapCalculationProcessForTournamentCommand GetStartHandicapCalculationProcessForTournamentCommand()
 {
     return(StartHandicapCalculationProcessForTournamentCommand.Create(HandicapCalculationProcessTestData.TournamentId));
 }
示例#5
0
 /// <summary>
 /// Creates the handler.
 /// </summary>
 /// <param name="command">The command.</param>
 /// <returns></returns>
 private ICommandHandler CreateHandler(StartHandicapCalculationProcessForTournamentCommand command)
 {
     return(new HandicapCalculationCommandHandler(this.HandicapCalculationProcessRepository, this.TournamentRepository));
 }