public void Get_WhenClientForBankNotFound_ShouldThrowArgumentException() { //arrange var clientsDictionary = new Dictionary <string, BankApiClientBase>(); var provider = new BankApiClientProvider(clientsDictionary); //act provider.Get("bank"); //assert }
public void Get_WithNullBankParam_ShouldThrowArgumentNullException() { //arrange var clientsDictionary = new Dictionary <string, BankApiClientBase>(); var provider = new BankApiClientProvider(clientsDictionary); //act provider.Get(null); //assert }
public void Get_WhenClientForBankFound_ShouldReturnClient() { //arrange var bank = "bank"; var mockClient = new Mock <BankApiClientBase>(null); var clientsDictionary = new Dictionary <string, BankApiClientBase>() { { bank, mockClient.Object } }; var provider = new BankApiClientProvider(clientsDictionary); //act var client = provider.Get(bank); //assert Assert.IsNotNull(client); }
public static IServiceCollection AddApiClientProvider(this IServiceCollection services, IEnumerable <BankApiClientConfiguration> bankApiClientConfigurations) { var bankApisClients = new Dictionary <string, BankApiClientBase>(); foreach (var bankApiClientConfiguration in bankApiClientConfigurations) { var assembly = Assembly.Load(bankApiClientConfiguration.AssemblyFullName); var type = assembly.GetType(bankApiClientConfiguration.TypeName); var client = Activator.CreateInstance(type, bankApiClientConfiguration) as BankApiClientBase; if (client == null) { throw new Exception($"Client failed to create for BankApiConfiguration with ID {bankApiClientConfiguration.Id}"); } bankApisClients.Add(bankApiClientConfiguration.Bank.Name, client); } var bankApiClientProvider = new BankApiClientProvider(bankApisClients); services.AddSingleton <IBankApiClientProvider>(bankApiClientProvider); return(services); }