public void OptionsBuilderShouldGenerateOptions() { var serviceProvider = GenerateServiceProvider(); var optionsBuilder = new AutoNumberOptionsBuilder(serviceProvider.GetService <IConfiguration>()); optionsBuilder.SetBatchSize(5); Assert.AreEqual(5, optionsBuilder.Options.BatchSize); optionsBuilder.SetMaxWriteAttempts(10); Assert.AreEqual(10, optionsBuilder.Options.MaxWriteAttempts); optionsBuilder.UseDefaultContainerName(); Assert.AreEqual("unique-urls", optionsBuilder.Options.StorageContainerName); optionsBuilder.UseContainerName("test"); Assert.AreEqual("test", optionsBuilder.Options.StorageContainerName); optionsBuilder.UseDefaultStorageAccount(); Assert.AreEqual(null, optionsBuilder.Options.StorageAccountConnectionString); optionsBuilder.UseStorageAccount("test"); Assert.AreEqual("test123", optionsBuilder.Options.StorageAccountConnectionString); optionsBuilder.UseStorageAccount("test-22"); Assert.AreEqual("test-22", optionsBuilder.Options.StorageAccountConnectionString); }
public static IServiceCollection AddAutoNumber(this IServiceCollection services, IConfiguration configuration, Func <AutoNumberOptionsBuilder, AutoNumberOptions> builder) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } var builderOptions = new AutoNumberOptionsBuilder(configuration); var options = builder(builderOptions); services.AddSingleton <IOptimisticDataStore, BlobOptimisticDataStore>(x => { CloudStorageAccount storageAccount = null; if (options.CloudStorageAccount != null) { storageAccount = options.CloudStorageAccount; } else if (options.StorageAccountConnectionString == null) { storageAccount = x.GetService <CloudStorageAccount>(); } else { storageAccount = CloudStorageAccount.Parse(options.StorageAccountConnectionString); } return(new BlobOptimisticDataStore(storageAccount, options.StorageContainerName)); }); services.AddSingleton <IUniqueIdGenerator, UniqueIdGenerator>(x => new UniqueIdGenerator(x.GetService <IOptimisticDataStore>(), options)); return(services); }