public void GetProxyFactory_GoodInterface_ReturnsProxy()
        {
            //  Arrange

            var bucketProvider = new Mock <ITestBucketProvider>();

            var generator = new NamedCollectionProxyGenerator(new ProxyModuleBuilder());

            // Act

            var proxyType = generator.GetProxy(typeof(ITestCollectionProvider), typeof(ITestBucketProvider), "scope", "collection");

            var proxy = Activator.CreateInstance(proxyType, bucketProvider.Object);

            // Assert

            Assert.NotNull(proxy);
        }
        public void GetProxyFactory_TwiceWithSameBucketInterfaceAndName_ReturnsSameProxyType()
        {
            //  Arrange

            var bucketProvider = new Mock <ITestBucketProvider>();

            var generator = new NamedCollectionProxyGenerator(new ProxyModuleBuilder());

            // Act

            var proxyType  = generator.GetProxy(typeof(ITestCollectionProvider), typeof(ITestBucketProvider), "scope", "collection");
            var proxyType2 = generator.GetProxy(typeof(ITestCollectionProvider), typeof(ITestBucketProvider), "scope", "collection");

            var proxy  = Activator.CreateInstance(proxyType, bucketProvider.Object);
            var proxy2 = Activator.CreateInstance(proxyType2, bucketProvider.Object);

            // Assert

            Assert.NotNull(proxy);
            Assert.NotNull(proxy2);
            Assert.Equal(proxy.GetType(), proxy2.GetType());
        }