public void Constructor_FullConfiguration_Works() { // ARRANGE var expected = new RemindMeWhenSettings { AzureStorage = new AzureStorageSettings { ConnectionString = GetRandomString(), ProcessDocumentQueueName = GetRandomString(), DocumentBlobContainerName = GetRandomString(), DocumentMetadataTableName = GetRandomString() }, RottenTomatoes = new RottenTomatoesSettings { ApiKey = GetRandomString() } }; using (var configurationFile = new ConfigurationFile(expected)) { // ACT RemindMeWhenConfiguration configuration = configurationFile.GetConfiguration(); // ASSERT RemindMeWhenSettings actual = configuration.GetSettings(); actual.ShouldBeEquivalentTo(expected); configurationFile.Delete = true; } }
public ConfigurationFile(RemindMeWhenSettings settings) { // generate the file content string configurationFile = ConfigurationFileFormat.FormatWith(new { RemindMeWhenConfiguration.SectionName, typeof(RemindMeWhenConfiguration).AssemblyQualifiedName, Settings = settings }); // write the file _fileName = Path.GetRandomFileName(); File.WriteAllText(_fileName, configurationFile.Trim()); }
public override void Load() { // load settings RemindMeWhenSettings settings = RemindMeWhenConfiguration.GetCurrentSettings(); Bind <RemindMeWhenSettings>().ToConstant(settings); Bind <AzureStorageSettings>().ToConstant(settings.AzureStorage); Bind <RottenTomatoesSettings>().ToConstant(settings.RottenTomatoes); // bind everything in this assembly Kernel.Bind(x => x.FromThisAssembly().SelectAllClasses().BindAllInterfaces()); // AzureStorage // TODO: create the Azure resources somewhere else... AzureStorageSettings azureStorageSettings = settings.AzureStorage; CloudStorageAccount storageAccount = CloudStorageAccount.Parse(azureStorageSettings.ConnectionString); CloudTableClient tableClient = storageAccount.CreateCloudTableClient(); CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient(); CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient(); CloudTable documentMetadataTable = tableClient.GetTableReference(azureStorageSettings.DocumentMetadataTableName); documentMetadataTable.CreateIfNotExists(); Bind <CloudTable>().ToConstant(documentMetadataTable).WhenInjectedIntoDescendentOf(typeof(DocumentStore)); CloudBlobContainer documentBlobContainer = blobClient.GetContainerReference(azureStorageSettings.DocumentBlobContainerName); documentBlobContainer.CreateIfNotExists(); Bind <CloudBlobContainer>().ToConstant(documentBlobContainer).WhenInjectedIntoDescendentOf(typeof(DocumentStore)); CloudQueue processDocumentQueue = queueClient.GetQueueReference(azureStorageSettings.ProcessDocumentQueueName); processDocumentQueue.CreateIfNotExists(); Bind <CloudQueue>().ToConstant(processDocumentQueue).WhenInjectedIntoDescendentOf(typeof(RottenTomatoesRepository <>)); CloudTable subscriptionTable = tableClient.GetTableReference(azureStorageSettings.SubscriptionTableName); subscriptionTable.CreateIfNotExists(); Bind <CloudTable>().ToConstant(subscriptionTable).WhenInjectedIntoDescendentOf(typeof(SubscriptionStore)); CloudQueue saveSubscriptionQueue = queueClient.GetQueueReference(azureStorageSettings.SaveSubscriptionQueueName); saveSubscriptionQueue.CreateIfNotExists(); Bind <CloudQueue>().ToConstant(saveSubscriptionQueue).WhenInjectedIntoDescendentOf(typeof(SubscriptionRepository)); }