Ejemplo n.º 1
0
        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));
            }
        }
Ejemplo n.º 2
0
        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);
            }
        }