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);
        }
Esempio n. 2
0
        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);
        }