public void When_ConfigValue_Is_Missing()
        {
            var services = new ServiceCollection();

            Environment.SetEnvironmentVariable(nameof(ITransactionEventApiConfiguration.TransactionStoreConnectionStringCsv), "");
            Environment.SetEnvironmentVariable(nameof(ITransactionEventApiConfiguration.ShareName), "");

            ClassInTest.ConfigureServices(services);

            Assert.That(() => services.BuildServiceProvider().GetRequiredService <ITransactionEventApiConfiguration>(),
                        Throws.Exception.InstanceOf <ConfigurationBindException>().With.Message.EqualTo(
                            "Error binding configuration: TransactionStoreConnectionStringCsv - Value must be at least 1 characters. Got " + Environment.NewLine + "ShareName - Value must be at least 1 characters. Got "));
        }
        public void Configuration_Can_Be_Parsed()
        {
            var services = new ServiceCollection();

            ClassInTest.ConfigureServices(services);

            Environment.SetEnvironmentVariable(nameof(ITransactionEventApiConfiguration.TransactionStoreConnectionStringCsv), "string1,string2");
            Environment.SetEnvironmentVariable(nameof(ITransactionEventApiConfiguration.ShareName), "transactions");

            var config = services.BuildServiceProvider().GetRequiredService <ITransactionEventApiConfiguration>();

            Assert.That(config.ShareName, Is.EqualTo("transactions"));
            Assert.That(config.TransactionStoreConnectionStringCsv, Is.EqualTo("string1,string2"));
        }
        public void Can_Resolve_Transaction_Service()
        {
            var services = new ServiceCollection();

            ClassInTest.ConfigureServices(services);

            Assert.That(services.Any(s =>
                                     s.ServiceType == typeof(IEnumerable <ShareClient>)), "No share client was added");

            Assert.That(services.Any(s =>
                                     s.ServiceType == typeof(IEnumerable <IFileShare>)), "No file store was added");

            services.Replace(new ServiceDescriptor(typeof(IEnumerable <ShareClient>),
                                                   new [] { Mock.Of <ShareClient>() }));

            services.BuildServiceProvider().GetRequiredService <ITransactionService>();
        }