public async Task RunningNumber_GetNext_ShouldIncreaseProjection() { using (var connection = this._testInfrastructure.OpenDatabaseConnection()) { // Arrange var runningNumberRepository = new RunningNumberRepository(); var runningNumberCounterRepository = new RunningNumberCounterRepository(); var commandDispatcher = this._testInfrastructure.DiContainer.GetInstance <IMediator>(); var nextNumberCommand = new CreateRunningNumberCommand(RunningNumberCounterArea.Achievement); var achievementCounterId = RunningNumberCounterCommandHandler.AreaToIdentityMapping[RunningNumberCounterArea.Achievement]; var runningNumberBefore = await runningNumberCounterRepository.GetByIdAsync(connection, achievementCounterId); // Act var attachResult = await commandDispatcher.Send(nextNumberCommand); var newNumber = await runningNumberRepository.GetByIdAsync(connection, attachResult.RunningNumberId); var runningNumberAfter = await runningNumberCounterRepository.GetByIdAsync(connection, achievementCounterId); // Assert Assert.That(newNumber, Is.Not.Null); Assert.That(newNumber.RunningNumberCounterId, Is.EqualTo(achievementCounterId)); Assert.That(runningNumberAfter.CurrentNumber, Is.GreaterThan(runningNumberBefore.CurrentNumber)); } }
public async Task Handle(AddNextNumberEvent notification, CancellationToken cancellationToken) { using (var connection = this._dbConnectionFactory.OpenConnection()) { var runningNumberCounterRepository = new RunningNumberCounterRepository(); var runningNumberCounterId = notification.AggregateId; var runningNumberRepository = new RunningNumberRepository(); var runningNumber = $"{notification.Prefix}-{notification.NextNumberInRow}"; await runningNumberRepository.CreateNewRunningNumberAsync(connection, notification.NextNumberId, runningNumberCounterId, runningNumber); await runningNumberCounterRepository.IncreaseCounterAsync(connection, runningNumberCounterId); } }