public void EfConfigRepositoryFactory_Using_Ioc_Should_Not_Require_ConnectionString()
        {
            var config  = new EfCoreRepositoryConfiguration("TestConfig");
            var factory = new EfCoreConfigRepositoryFactory(config);

            factory.GetInstance <Contact, string>();
        }
        public void EfConfigRepositoryFactory_Using_Ioc_Should_Return_TestObjectEntites_Without_DbContextType_Defined()
        {
            var config  = new EfCoreRepositoryConfiguration("TestConfig");
            var factory = new EfCoreConfigRepositoryFactory(config);

            var repos = factory.GetInstance <Contact, string>();

            var propInfo  = repos.GetType().GetProperty("Context", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public);
            var dbContext = (TestObjectContextCore)propInfo.GetValue(repos, null);

            dbContext.ShouldBeOfType <TestObjectContextCore>();
        }
        public void EfConfigRepositoryFactory_Using_Ioc_Should_Share_DbContext()
        {
            var config  = new EfCoreRepositoryConfiguration("TestConfig", "tmp");
            var factory = new EfCoreConfigRepositoryFactory(config);

            var repos1 = factory.GetInstance <Contact, string>();
            var repos2 = factory.GetInstance <Contact, string>();

            // use reflecton to get the protected Context property
            var propInfo1  = repos1.GetType().GetProperty("Context", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public);
            var dbContext1 = (TestObjectContextCore)propInfo1.GetValue(repos1, null);
            var propInfo2  = repos2.GetType().GetProperty("Context", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public);
            var dbContext2 = (TestObjectContextCore)propInfo2.GetValue(repos2, null);

            dbContext1.ShouldBe(dbContext2);
        }