public async Task Generated_itn_numbers_should_be_unique()
        {
            var dbContext = CreateDbContextWithDuplicateItnValidation();

            var tagProcessor = new TagProcessor(dbContext, Options.Create(new TagProcessingOptions()));

            while (_currentItn < MaxItnNumbersCount)
            {
                await tagProcessor.GenerateItn();
            }


            EdoContext CreateDbContextWithDuplicateItnValidation()
            {
                var context = MockEdoContextFactory.Create();

                context.Setup(e => e.GetNextItineraryNumber())
                .Returns(() => Task.FromResult(++_currentItn));

                context.Setup(e => e.RegisterItn(It.IsAny <string>()))
                .Returns <string>(itn =>
                {
                    if (_registeredItnNumbers.Contains(itn))
                    {
                        throw new AssertionFailedException($"ITN '{itn}' is duplicated after {_registeredItnNumbers.Count} generations");
                    }

                    _registeredItnNumbers.Add(itn);
                    return(Task.CompletedTask);
                });

                return(context.Object);
            }
        }