public void Test_Success_WhenAddingObjectsOfDifferentTypesWithSameDataAccessors()
        {
            //---------------Set up test pack-------------------
            IDataAccessor defaultDataAccessor = new DataAccessorInMemory();

            DataStoreInMemory    dataStore1            = new DataStoreInMemory();
            DataAccessorInMemory dataAccessorInMemory1 = new DataAccessorInMemory(dataStore1);

            MyBO.LoadDefaultClassDef();
            MyRelatedBo.LoadClassDef();
            MyBO        bo1 = new MyBO();
            MyRelatedBo bo2 = new MyRelatedBo();

            Dictionary <Type, IDataAccessor> dataAccessors = new Dictionary <Type, IDataAccessor>();

            dataAccessors.Add(typeof(MyBO), dataAccessorInMemory1);
            dataAccessors.Add(typeof(MyRelatedBo), dataAccessorInMemory1);

            //---------------Execute Test ----------------------
            ITransactionCommitter transactionCommitter1 = new TransactionCommitterMultiSource(defaultDataAccessor,
                                                                                              dataAccessors);

            transactionCommitter1.AddBusinessObject(bo1);
            transactionCommitter1.AddBusinessObject(bo2);
            transactionCommitter1.CommitTransaction();
            //---------------Test Result -----------------------
            Assert.IsNotNull(dataStore1.Find <MyBO>(bo1.ID));
            Assert.IsNotNull(dataStore1.Find <MyRelatedBo>(bo2.ID));
            //---------------Tear down -------------------------
        }
Exemplo n.º 2
0
        public void Test_ClearDeadThreads()
        {
            //---------------Set up test pack-------------------
            var dataAccessorMain = new DataAccessorInMemory();
            var dataAccessor     = new DataAccessorThreadSplitter(dataAccessorMain);
            var expectedDataAccessorForThread = new DataAccessorInMemory();
            var thread = new Thread(() =>
            {
                dataAccessor.AddDataAccessorForThread(expectedDataAccessorForThread);
                Thread.Sleep(100);
            });

            thread.Start();
            //---------------Assert preconditions---------------
            Assert.AreSame(expectedDataAccessorForThread, dataAccessor.GetDataAccessorForThread(thread));
            //---------------Execute Test ----------------------
            thread.Join();
            dataAccessor.ClearDeadThreads();
            //---------------Test Result -----------------------
            try
            {
                Assert.IsNull(dataAccessor.GetDataAccessorForThread(thread));
                Assert.Fail("An exception should be thrown");
            } catch (HabaneroDeveloperException ex)
            {
                StringAssert.Contains("Data accessor for thread does not exist", ex.Message);
            }
        }
Exemplo n.º 3
0
        public void Test_SavingToMultipleSources()
        {
            //---------------Set up test pack-------------------
            DataStoreInMemory dataStore1 = new DataStoreInMemory();
            DataStoreInMemory dataStore2 = new DataStoreInMemory();

            DataAccessorInMemory dataAccessorInMemory1 = new DataAccessorInMemory(dataStore1);
            DataAccessorInMemory dataAccessorInMemory2 = new DataAccessorInMemory(dataStore2);

            DataAccessorMultiSource dataAccessor = new DataAccessorMultiSource(new DataAccessorInMemory());

            dataAccessor.AddDataAccessor(typeof(MyBO), dataAccessorInMemory1);
            dataAccessor.AddDataAccessor(typeof(MyRelatedBo), dataAccessorInMemory2);
            MyBO.LoadDefaultClassDef();
            MyRelatedBo.LoadClassDef();
            var bo1 = new MyBO();
            var bo2 = new MyRelatedBo();
            //---------------Execute Test ----------------------
            ITransactionCommitter committer1 = dataAccessor.CreateTransactionCommitter();

            committer1.AddBusinessObject(bo1);
            committer1.CommitTransaction();

            ITransactionCommitter committer2 = dataAccessor.CreateTransactionCommitter();

            committer2.AddBusinessObject(bo2);
            committer2.CommitTransaction();

            //---------------Test Result -----------------------
            Assert.IsNotNull(dataStore1.Find <MyBO>(bo1.ID));
            Assert.IsNotNull(dataStore2.Find <MyRelatedBo>(bo2.ID));
            //---------------Tear down -------------------------
        }
Exemplo n.º 4
0
        public void Test_StandardConstructor_CreatesADataStore()
        {
            //---------------Set up test pack-------------------
            //---------------Execute Test ----------------------
            DataAccessorInMemory dataAccessorInMemory = new DataAccessorInMemory();

            //---------------Test Result -----------------------
            Assert.IsNotNull(dataAccessorInMemory.DataStoreInMemory);
        }
Exemplo n.º 5
0
 public void TestFixtureSetup()
 {
     //Code that is executed before any test is run in this class. If multiple tests
     // are executed then it will still only be called once.
     ClassDef.ClassDefs.Clear();
     _dataStore              = new DataStoreInMemory();
     _dataAccessor           = new DataAccessorInMemory(_dataStore);
     BORegistry.DataAccessor = _dataAccessor;
     ContactPersonTestBO.LoadDefaultClassDef();
 }
Exemplo n.º 6
0
        public void Test_Constructor_UsesPassedInDataStore()
        {
            //---------------Set up test pack-------------------
            DataStoreInMemory dataStore = MockRepository.GenerateMock <DataStoreInMemory>();
            //---------------Execute Test ----------------------
            DataAccessorInMemory dataAccessorInMemory = new DataAccessorInMemory(dataStore);

            //---------------Test Result -----------------------
            Assert.AreSame(dataStore, dataAccessorInMemory.DataStoreInMemory);
        }
Exemplo n.º 7
0
        public void Test_UsesBusinessObjectLoaderInMemory()
        {
            //---------------Set up test pack-------------------

            //---------------Execute Test ----------------------
            DataAccessorInMemory dataAccessorInMemory = new DataAccessorInMemory();

            //---------------Test Result -----------------------
            Assert.IsInstanceOf(typeof(BusinessObjectLoaderInMemory), dataAccessorInMemory.BusinessObjectLoader);
        }
Exemplo n.º 8
0
        public void TestDataAccessorInMemoryConstructor()
        {
            //---------------Set up test pack-------------------

            //---------------Execute Test ----------------------
            IDataAccessor dataAccessor = new DataAccessorInMemory();

            //---------------Test Result -----------------------
            Assert.IsInstanceOf(typeof(BusinessObjectLoaderInMemory), dataAccessor.BusinessObjectLoader);
            //---------------Tear Down -------------------------
        }
Exemplo n.º 9
0
        public void TestDataAccessorInMemory_CreateTransactionCommitter()
        {
            //---------------Set up test pack-------------------

            //---------------Execute Test ----------------------
            IDataAccessor dataAccessor = new DataAccessorInMemory();

            //---------------Test Result -----------------------
            Assert.IsInstanceOf(typeof(TransactionCommitterInMemory), dataAccessor.CreateTransactionCommitter());
            //---------------Tear Down -------------------------
        }
Exemplo n.º 10
0
 public void SetupTest()
 {
     //Runs every time that any testmethod is executed
     //base.SetupTest();
     ClassDef.ClassDefs.Clear();
     _dataStore              = new DataStoreInMemory();
     _dataAccessor           = new DataAccessorInMemory(_dataStore);
     BORegistry.DataAccessor = _dataAccessor;
     ContactPersonTestBO.LoadClassDefOrganisationTestBORelationship_MultipleReverse();
     OrganisationTestBO.LoadDefaultClassDef();
 }
        public void Test_DefaultDataAccessor_OneObject()
        {
            //---------------Set up test pack-------------------
            DataStoreInMemory dataStore           = new DataStoreInMemory();
            IDataAccessor     defaultDataAccessor = new DataAccessorInMemory(dataStore);

            MyBO.LoadDefaultClassDef();
            MyBO bo = new MyBO();
            //---------------Execute Test ----------------------
            ITransactionCommitter transactionCommitter = new TransactionCommitterMultiSource(defaultDataAccessor, new Dictionary <Type, IDataAccessor>());

            transactionCommitter.AddBusinessObject(bo);
            transactionCommitter.CommitTransaction();
            //---------------Test Result -----------------------
            Assert.IsNotNull(dataStore.Find <MyBO>(bo.ID));
            //---------------Tear down -------------------------
        }
        public void Test_ShouldThrowError_WhenAddingObjectsOfDifferentTypesWithDifferentDataAccessors()
        {
            //---------------Set up test pack-------------------
            IDataAccessor defaultDataAccessor = new DataAccessorInMemory();

            DataStoreInMemory    dataStore1            = new DataStoreInMemory();
            DataStoreInMemory    dataStore2            = new DataStoreInMemory();
            DataAccessorInMemory dataAccessorInMemory1 = new DataAccessorInMemory(dataStore1);
            DataAccessorInMemory dataAccessorInMemory2 = new DataAccessorInMemory(dataStore2);

            MyBO.LoadDefaultClassDef();
            MyRelatedBo.LoadClassDef();
            MyBO        bo1 = new MyBO();
            MyRelatedBo bo2 = new MyRelatedBo();

            Dictionary <Type, IDataAccessor> dataAccessors = new Dictionary <Type, IDataAccessor>();

            dataAccessors.Add(typeof(MyBO), dataAccessorInMemory1);
            dataAccessors.Add(typeof(MyRelatedBo), dataAccessorInMemory2);

            //---------------Execute Test ----------------------
            try
            {
                ITransactionCommitter transactionCommitter1 = new TransactionCommitterMultiSource(defaultDataAccessor, dataAccessors);
                transactionCommitter1.AddBusinessObject(bo1);
                transactionCommitter1.AddBusinessObject(bo2);
                transactionCommitter1.CommitTransaction();
                Assert.Fail("Error should have occurred");
            } catch (HabaneroDeveloperException ex)
            //---------------Test Result -----------------------
            {
                Assert.IsNull(dataStore1.Find <MyBO>(bo1.ID));
                Assert.IsNull(dataStore1.Find <MyRelatedBo>(bo2.ID));
                Assert.IsNull(dataStore2.Find <MyBO>(bo1.ID));
                Assert.IsNull(dataStore2.Find <MyRelatedBo>(bo2.ID));

                StringAssert.Contains("MyRelatedBo", ex.DeveloperMessage);
                StringAssert.Contains("was added to a TransactionCommitterMultiSource which has been set up with a different source to this type", ex.DeveloperMessage);

                //correct
            }
            //---------------Tear down -------------------------
        }
Exemplo n.º 13
0
        public void Test_WithThread()
        {
            //---------------Set up test pack-------------------
            var dataAccessorMain = new DataAccessorInMemory();
            var dataAccessor     = new DataAccessorThreadSplitter(dataAccessorMain);
            var expectedDataAccessorForThread = new DataAccessorInMemory();
            var thread = new Thread(() =>
            {
                dataAccessor.AddDataAccessorForThread(expectedDataAccessorForThread);
                Thread.Sleep(1000);
            });

            thread.Start();
            Thread.Sleep(500);
            //---------------Execute Test ----------------------
            var dataAccessorForThread = dataAccessor.GetDataAccessorForThread(thread);

            //---------------Test Result -----------------------
            Assert.AreSame(expectedDataAccessorForThread, dataAccessorForThread);
        }
Exemplo n.º 14
0
        public void Test_LoadingFromMultipleSources()
        {
            //---------------Set up test pack-------------------
            DataStoreInMemory dataStore1 = new DataStoreInMemory();
            DataStoreInMemory dataStore2 = new DataStoreInMemory();

            MyBO.LoadDefaultClassDef();
            TransactionCommitterInMemory committer1 = new TransactionCommitterInMemory(dataStore1);
            var bo1 = new MyBO();

            committer1.AddBusinessObject(bo1);
            committer1.CommitTransaction();

            MyRelatedBo.LoadClassDef();
            TransactionCommitterInMemory committer2 = new TransactionCommitterInMemory(dataStore2);
            var bo2 = new MyRelatedBo();

            committer2.AddBusinessObject(bo2);
            committer2.CommitTransaction();

            DataAccessorInMemory dataAccessorInMemory1 = new DataAccessorInMemory(dataStore1);
            DataAccessorInMemory dataAccessorInMemory2 = new DataAccessorInMemory(dataStore2);

            //---------------Execute Test ----------------------

            //---------------Test Result -----------------------
            DataAccessorMultiSource dataAccessor = new DataAccessorMultiSource(new DataAccessorInMemory());

            dataAccessor.AddDataAccessor(typeof(MyBO), dataAccessorInMemory1);
            dataAccessor.AddDataAccessor(typeof(MyRelatedBo), dataAccessorInMemory2);
            var loadedBo1 = dataAccessor.BusinessObjectLoader.GetBusinessObject <MyBO>(bo1.ID);
            var loadedBo2 = dataAccessor.BusinessObjectLoader.GetBusinessObject <MyRelatedBo>(bo2.ID);

            //---------------Tear down -------------------------

            Assert.AreSame(loadedBo1, bo1);
            Assert.AreSame(loadedBo2, bo2);
        }