A strategy class that parameterizes a UnitOfWorkTestContext with database specific implementations
This class is a companion to UnitOfWorkTestContext. Its purpose is to encapsulate behind a common interface the database specific implementations of behaviour required to construct and manage the test context
예제 #1
0
        public readonly string CurrentNHibernateSessionKey = Guid.NewGuid().ToString(); //= "CurrentNHibernateSession.Key";

        #region << Static Method >>

        /// <summary>
        /// 인자에 맞는 <see cref="UnitOfWorkTestContext"/>의 인스턴스를 빌드한다.
        /// </summary>
        /// <param name="containerConfigPath">IoC 환경설정 파일경로</param>
        /// <param name="dbStrategy">테스트용 DB 생성 전략</param>
        /// <param name="mappingInfo">NHibernate용 Entity 정보</param>
        /// <returns>테스트용 UnitOfWork</returns>
        /// <param name="configAction">추가 환경설정 작업용 델리게이트</param>
        public static UnitOfWorkTestContext For(string containerConfigPath,
                                                UnitOfWorkTestContextDbStrategy dbStrategy,
                                                MappingInfo mappingInfo,
                                                Action <NHibernate.Cfg.Configuration> configAction)
        {
            return(new NHUnitOfWorkTestContext(dbStrategy, containerConfigPath, mappingInfo, configAction));
        }
예제 #2
0
 /// <summary>
 /// 생성자
 /// </summary>
 /// <param name="dbStrategy">테스트용 DB 생성 전략</param>
 /// <param name="windsorConfigPath">IoC 환경설정 파일경로</param>
 /// <param name="mappingInfo">NHibernate 매핑 정보</param>
 /// <param name="configAction">Configuration 빌드 시 추가할 사항을 정의한 Action</param>
 public NHUnitOfWorkTestContext(UnitOfWorkTestContextDbStrategy dbStrategy,
                                string windsorConfigPath,
                                MappingInfo mappingInfo,
                                Action <Configuration> configAction)
     : base(dbStrategy, windsorConfigPath, mappingInfo, configAction)
 {
 }
예제 #3
0
 /// <summary>
 /// 인자에 맞는 <see cref="UnitOfWorkTestContext"/>의 인스턴스를 빌드한다.
 /// </summary>
 /// <param name="containerConfigPath">IoC 환경설정 파일경로</param>
 /// <param name="dbStrategy">테스트용 DB 생성 전략</param>
 /// <param name="mappingInfo">NHibernate용 Entity 정보</param>
 /// <returns>테스트용 UnitOfWork</returns>
 /// <param name="configAction">추가 환경설정 작업용 델리게이트</param>
 /// <param name="conventions">명명규칙</param>
 public static UnitOfWorkTestContext FluentFor(string containerConfigPath,
                                               UnitOfWorkTestContextDbStrategy dbStrategy,
                                               MappingInfo mappingInfo,
                                               Action<NHibernate.Cfg.Configuration> configAction,
                                               params IConvention[] conventions) {
     return new FluentNHUnitOfWorkTestContext(dbStrategy, containerConfigPath, mappingInfo, configAction, conventions);
 }
 public FluentNHUnitOfWorkTestContext(UnitOfWorkTestContextDbStrategy dbStrategy,
                                      string windsorConfigPath,
                                      MappingInfo mappingInfo,
                                      Action<Configuration> configAction,
                                      params IConvention[] conventions)
     : base(dbStrategy, windsorConfigPath, mappingInfo, configAction) {
     _conventions = conventions;
 }
 public void CanCreateUnitOfWorkContextFor_MsSql2005Express()
 {
     if (UnitOfWorkTestContextDbStrategy.IsSqlServer2005OrAboveInstalled())
     {
         VerifyCanCreateUnitOfWorkContextFor(null, DatabaseEngine.MsSql2005Express);
         VerifyCanCreateUseAndDisposeSession();
     }
 }
예제 #6
0
 /// <summary>
 /// 인자에 맞는 <see cref="UnitOfWorkTestContext"/>의 인스턴스를 빌드한다.
 /// </summary>
 /// <param name="containerConfigPath">IoC 환경설정 파일경로</param>
 /// <param name="dbStrategy">테스트용 DB 생성 전략</param>
 /// <param name="mappingInfo">NHibernate용 Entity 정보</param>
 /// <returns>테스트용 UnitOfWork</returns>
 /// <param name="configAction">추가 환경설정 작업용 델리게이트</param>
 /// <param name="conventions">명명규칙</param>
 public static UnitOfWorkTestContext FluentFor(string containerConfigPath,
                                               UnitOfWorkTestContextDbStrategy dbStrategy,
                                               MappingInfo mappingInfo,
                                               Action <NHibernate.Cfg.Configuration> configAction,
                                               params IConvention[] conventions)
 {
     return(new FluentNHUnitOfWorkTestContext(dbStrategy, containerConfigPath, mappingInfo, configAction, conventions));
 }
예제 #7
0
 /// <summary>
 /// 인자에 맞는 <see cref="UnitOfWorkTestContext"/>의 인스턴스를 빌드한다.
 /// </summary>
 /// <param name="container">Container</param>
 /// <param name="dbStrategy">테스트용 DB 생성 전략</param>
 /// <param name="mappingInfo">NHibernate용 Entity 정보</param>
 /// <param name="configAction">추가 환경설정 작업용 델리게이트</param>
 /// <returns>테스트용 UnitOfWork</returns>
 public static UnitOfWorkTestContext For(IWindsorContainer container,
                                         UnitOfWorkTestContextDbStrategy dbStrategy,
                                         MappingInfo mappingInfo,
                                         Action<NHibernate.Cfg.Configuration> configAction) {
     var context = For(string.Empty, dbStrategy, mappingInfo, configAction);
     context._container = container;
     return context;
 }
 public void CanCreateUnitOfWorkContextFor_MsSql2005_IoC()
 {
     if (UnitOfWorkTestContextDbStrategy.IsSqlServer2005OrAboveInstalled())
     {
         VerifyCanCreateUnitOfWorkContextFor(ContainerFilePath, DatabaseEngine.MsSql2005);
         VerifyCanCreateUseAndDisposeSession();
         VerifyCanCreateUseAndDisposeUnitOfWork();
     }
 }
예제 #9
0
 public FluentNHUnitOfWorkTestContext(UnitOfWorkTestContextDbStrategy dbStrategy,
                                      string windsorConfigPath,
                                      MappingInfo mappingInfo,
                                      Action <Configuration> configAction,
                                      params IConvention[] conventions)
     : base(dbStrategy, windsorConfigPath, mappingInfo, configAction)
 {
     _conventions = conventions;
 }
        public void NewUnitOfWorkContextCreatedForDifferentDatabaseNames()
        {
            if (UnitOfWorkTestContextDbStrategy.IsSqlServer2005OrAboveInstalled())
            {
                VerifyCanCreateUnitOfWorkContextFor(ContainerFilePath, DatabaseEngine.MsSql2005, "TestDb1");
                VerifyCanCreateUnitOfWorkContextFor(ContainerFilePath, DatabaseEngine.MsSql2005, "TestDb2");

                Assert.AreEqual(2, Contexts.Count);
            }
        }
예제 #11
0
        /// <summary>
        /// 인자에 맞는 <see cref="UnitOfWorkTestContext"/>의 인스턴스를 빌드한다.
        /// </summary>
        /// <param name="container">Container</param>
        /// <param name="dbStrategy">테스트용 DB 생성 전략</param>
        /// <param name="mappingInfo">NHibernate용 Entity 정보</param>
        /// <param name="configAction">추가 환경설정 작업용 델리게이트</param>
        /// <returns>테스트용 UnitOfWork</returns>
        public static UnitOfWorkTestContext For(IWindsorContainer container,
                                                UnitOfWorkTestContextDbStrategy dbStrategy,
                                                MappingInfo mappingInfo,
                                                Action <NHibernate.Cfg.Configuration> configAction)
        {
            var context = For(string.Empty, dbStrategy, mappingInfo, configAction);

            context._container = container;
            return(context);
        }
예제 #12
0
        /// <summary>
        /// 인자에 맞는 <see cref="UnitOfWorkTestContext"/>의 인스턴스를 빌드한다.
        /// </summary>
        /// <param name="dbStrategy">테스트용 DB 생성 전략</param>
        /// <param name="containerConfigPath">IoC 환경설정 파일경로</param>
        /// <param name="mappingInfo">NHibernate 매핑 정보</param>
        /// <param name="configAction">Configuration 빌드 시 추가할 사항을 정의한 Action</param>
        protected UnitOfWorkTestContext(UnitOfWorkTestContextDbStrategy dbStrategy,
                                        string containerConfigPath,
                                        MappingInfo mappingInfo,
                                        Action <NHibernate.Cfg.Configuration> configAction)
        {
            _containerConfigPath = containerConfigPath ?? string.Empty;
            _dbStrategy          = dbStrategy;
            _mappingInfo         = mappingInfo;

            _dbStrategy.TestContext = this;

            ConfigAction = configAction;
        }
예제 #13
0
        /// <summary>
        /// Release unmanaged resources. 내부 Container를 메모리에서 해제한다.
        /// </summary>
        public void Dispose()
        {
            _dbStrategy  = null;
            _mappingInfo = null;

            UnitOfWork.Stop();
            //UnitOfWork.CurrentSession = null;

            if (_container != null)
            {
                _container.Dispose();
                _container = null;
            }
        }
예제 #14
0
            protected internal UnitOfWorkTestContext GetUnitOfWorkTestContext()
            {
                Predicate <UnitOfWorkTestContext> criteria;

                if (_container == null)
                {
                    criteria = ctx => ctx.ContainerConfigPath == StringOrEmpty(_containerConfigPath) &&
                               ctx.DatabaseEngine == _root.DatabaseEngine &&
                               ctx.DatabaseName == _root.DatabaseName;
                }
                else
                {
                    criteria = ctx => ctx.Container == _container &&
                               ctx.DatabaseEngine == _root.DatabaseEngine &&
                               ctx.DatabaseName == _root.DatabaseName;
                }

                var context = Contexts.Find(criteria);

                if (context == null)
                {
                    var dbStrategy = UnitOfWorkTestContextDbStrategy.For(_root.DatabaseEngine,
                                                                         _root.DatabaseName,
                                                                         _root.NHibernateConfigurationProperties);

                    context = (_container != null)
                                  ? UnitOfWorkTestContext.FluentFor(_container, dbStrategy, _root.MappingInfo, _root.ConfigAction,
                                                                    _root.Conventions)
                                  : UnitOfWorkTestContext.FluentFor(_containerConfigPath, dbStrategy, _root.MappingInfo,
                                                                    _root.ConfigAction, _root.Conventions);

                    Contexts.Add(context);

                    if (IsDebugEnabled)
                    {
                        log.Debug("Create another UnitOfWorkContext for: [{0}]", context);
                    }
                }
                return(context);
            }
예제 #15
0
 /// <summary>
 /// 생성자
 /// </summary>
 /// <param name="dbStrategy">테스트용 DB 생성 전략</param>
 /// <param name="windsorConfigPath">IoC 환경설정 파일경로</param>
 /// <param name="mappingInfo">NHibernate 매핑 정보</param>
 /// <param name="configAction">Configuration 빌드 시 추가할 사항을 정의한 Action</param>
 public NHUnitOfWorkTestContext(UnitOfWorkTestContextDbStrategy dbStrategy,
                                string windsorConfigPath,
                                MappingInfo mappingInfo,
                                Action<Configuration> configAction)
     : base(dbStrategy, windsorConfigPath, mappingInfo, configAction) {}
예제 #16
0
        /// <summary>
        /// 인자에 맞는 <see cref="UnitOfWorkTestContext"/>의 인스턴스를 빌드한다.
        /// </summary>
        /// <param name="dbStrategy">테스트용 DB 생성 전략</param>
        /// <param name="containerConfigPath">IoC 환경설정 파일경로</param>
        /// <param name="mappingInfo">NHibernate 매핑 정보</param>
        /// <param name="configAction">Configuration 빌드 시 추가할 사항을 정의한 Action</param>
        protected UnitOfWorkTestContext(UnitOfWorkTestContextDbStrategy dbStrategy,
                                        string containerConfigPath,
                                        MappingInfo mappingInfo,
                                        Action<NHibernate.Cfg.Configuration> configAction) {
            _containerConfigPath = containerConfigPath ?? string.Empty;
            _dbStrategy = dbStrategy;
            _mappingInfo = mappingInfo;

            _dbStrategy.TestContext = this;

            ConfigAction = configAction;
        }
예제 #17
0
        public readonly string CurrentNHibernateSessionKey = Guid.NewGuid().ToString(); //= "CurrentNHibernateSession.Key";

        #region << Static Method >>

        /// <summary>
        /// 인자에 맞는 <see cref="UnitOfWorkTestContext"/>의 인스턴스를 빌드한다.
        /// </summary>
        /// <param name="containerConfigPath">IoC 환경설정 파일경로</param>
        /// <param name="dbStrategy">테스트용 DB 생성 전략</param>
        /// <param name="mappingInfo">NHibernate용 Entity 정보</param>
        /// <returns>테스트용 UnitOfWork</returns>
        /// <param name="configAction">추가 환경설정 작업용 델리게이트</param>
        public static UnitOfWorkTestContext For(string containerConfigPath,
                                                UnitOfWorkTestContextDbStrategy dbStrategy,
                                                MappingInfo mappingInfo,
                                                Action<NHibernate.Cfg.Configuration> configAction) {
            return new NHUnitOfWorkTestContext(dbStrategy, containerConfigPath, mappingInfo, configAction);
        }
예제 #18
0
        /// <summary>
        /// Release unmanaged resources. 내부 Container를 메모리에서 해제한다.
        /// </summary>
        public void Dispose() {
            _dbStrategy = null;
            _mappingInfo = null;

            UnitOfWork.Stop();
            //UnitOfWork.CurrentSession = null;

            if(_container != null) {
                _container.Dispose();
                _container = null;
            }
        }