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); } }