public void MultitenantTests_Configure_Validate_Valid() { var container = new StashboxContainer(); container.Register <IA, A>(); var md = new TenantDistributor(container); md.ConfigureTenant("A", c => c.Register <D>()); md.Validate(); }
public void MultitenantTests_Configure_Validate_Root_And_Tenants_Throws() { var container = new StashboxContainer(); container.Register <D>(); var md = new TenantDistributor(container); md.ConfigureTenant("A", c => c.Register <D>()); var exception = Assert.Throws <AggregateException>(() => md.Validate()); Assert.Equal(2, exception.InnerExceptions.Count); }
public void MultitenantTests_Configure_Dep() { var container = new StashboxContainer(); container.Register <D>(); container.Register <IA, A>(); var md = new TenantDistributor(container); md.ConfigureTenant("A", c => c.Register <IA, B>()); var tenant = md.GetTenant("A"); Assert.IsType <A>(container.Resolve <D>().Ia); Assert.IsType <B>(md.GetTenant("A").Resolve <D>().Ia); }
public async Task MultitenantTests_Dispose_Async_Tenant() { var container = new StashboxContainer(c => c.WithDisposableTransientTracking()); var md = new TenantDistributor(container); md.ConfigureTenant("C", c => c.Register <IA, C>()); var tenant = md.GetTenant("C"); var inst = (C)tenant.Resolve <IA>(); await md.DisposeAsync(); Assert.True(inst.Disposed); Assert.Throws <ObjectDisposedException>(() => container.Resolve <IA>()); Assert.Throws <ObjectDisposedException>(() => tenant.Resolve <IA>()); }