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 <CreateRunningNumberResponse> Handle(CreateRunningNumberCommand request, CancellationToken cancellationToken) { var runningNumberCounterId = AreaToIdentityMapping[request.CounterArea]; var aggregate = this.AggregateRepository.GetById <RunningNumberCounterAggregateRoot>(runningNumberCounterId); var nextNumberId = this.GuidGenerator.GenerateGuid(); aggregate.AddNextNumber(nextNumberId); await this.AggregateRepository.SaveAsync(aggregate); return(new CreateRunningNumberResponse(nextNumberId)); }
public async Task RunningNumber_GetNext_IncreasesCounter() { // Arrange var aggregateRepository = this._testInfrastructure.DiContainer.GetInstance <IAggregateRepository>(); var commandDispatcher = this._testInfrastructure.DiContainer.GetInstance <IMediator>(); var nextNumberCommand = new CreateRunningNumberCommand(RunningNumberCounterArea.Achievement); var attachResult = await commandDispatcher.Send(nextNumberCommand); var runningNumberCounter = aggregateRepository.GetById <RunningNumberCounterAggregateRoot>( RunningNumberCounterCommandHandler.AreaToIdentityMapping[RunningNumberCounterArea.Achievement]); var nextNumber = runningNumberCounter.Numbers.Single(x => x.RunningNumberId == attachResult.RunningNumberId); Assert.That(nextNumber, Is.Not.Null); }