public void TestPersistSimpleBO_UpdateNonDirty() { //---------------Set up test pack------------------- MockBO mockBo = CreateSavedMockBO(); TransactionCommitterDB committerDB = new TransactionCommitterDB(DatabaseConnection.CurrentConnection); Guid? mockBOProp1 = mockBo.MockBOProp1; committerDB.AddTransaction(new TransactionalBusinessObjectDB(mockBo, committerDB.DatabaseConnection)); //---------------Execute Test ---------------------- committerDB.CommitTransaction(); //---------------Test Result ----------------------- TransactionCommitterTestHelper.AssertBOStateIsValidAfterInsert_Updated(mockBo); BORegistry.DataAccessor.BusinessObjectLoader.Refresh(mockBo); Assert.AreEqual(mockBOProp1, mockBo.MockBOProp1); }
public void TestPersistSimpleBO_Insert_InvalidData() { //---------------Set up test pack------------------- ContactPersonTestBO.LoadDefaultClassDef(); ContactPersonTestBO contactPersonTestBO = new ContactPersonTestBO(); TransactionCommitterDB committerDB = new TransactionCommitterDB(DatabaseConnection.CurrentConnection); committerDB.AddTransaction(new TransactionalBusinessObjectDB(contactPersonTestBO, committerDB.DatabaseConnection)); //---------------Execute Test ---------------------- try { committerDB.CommitTransaction(); Assert.Fail("Expected to throw an BusObjectInAnInvalidStateException"); } //---------------Test Result ----------------------- catch (BusObjectInAnInvalidStateException ex) { StringAssert.Contains("'ContactPersonTestBO.Surname' is a compulsory field and has no value", ex.Message); } }
public void TestPersistSimpleBO_NewDelete() { //---------------Set up test pack------------------- MockBO mockBo = new MockBO(); TransactionCommitterInMemory inMemoryCommitter = new TransactionCommitterInMemory(new DataStoreInMemory()); inMemoryCommitter.AddBusinessObject(mockBo); inMemoryCommitter.CommitTransaction(); TransactionCommitterDB committerDB = new TransactionCommitterDB(DatabaseConnection.CurrentConnection); mockBo.MarkForDelete(); committerDB.AddTransaction(new TransactionalBusinessObjectDB(mockBo, committerDB.DatabaseConnection)); //---------------Execute Test ---------------------- committerDB.CommitTransaction(); //---------------Test Result ----------------------- BOTestUtils.AssertBOStateIsValidAfterDelete(mockBo); AssertMockBONotInDatabase(mockBo.MockBOID); }
public void TestPersistSimpleBO_Delete_InvalidData() { //---------------Set up test pack------------------- ContactPersonTestBO.LoadClassDefWithAddressesRelationship_DeleteRelated(); ContactPersonTestBO contactPersonTestBO = ContactPersonTestBO.CreateSavedContactPersonNoAddresses(); contactPersonTestBO.Surname = null; TransactionCommitterDB committerDB = new TransactionCommitterDB(DatabaseConnection.CurrentConnection); committerDB.AddTransaction(new TransactionalBusinessObjectDB(contactPersonTestBO, committerDB.DatabaseConnection)); //---------------Execute Test ---------------------- contactPersonTestBO.MarkForDelete(); committerDB.CommitTransaction(); //---------------Test Result ----------------------- BOTestUtils.AssertBOStateIsValidAfterDelete(contactPersonTestBO); }
public void TestPersistSimpleBO_Insert() { //---------------Set up test pack------------------- MockBO mockBo = new MockBO(); TransactionCommitterDB committerDB = new TransactionCommitterDB(DatabaseConnection.CurrentConnection); committerDB.AddTransaction(new TransactionalBusinessObjectDB(mockBo, committerDB.DatabaseConnection)); //---------------Execute Test ---------------------- committerDB.CommitTransaction(); //---------------Test Result ----------------------- TransactionCommitterTestHelper.AssertBOStateIsValidAfterInsert_Updated(mockBo); // BOLoader.Instance.Refresh(mockBo); BORegistry.DataAccessor.BusinessObjectLoader.Refresh(mockBo); //MockBO savedMockBO = // BOLoader.Instance.GetBusinessObject<MockBO>("MockBOID = '" + mockBo.MockBOID.ToString("B") + "'"); Criteria criteria = new Criteria("MockBOID", Criteria.ComparisonOp.Equals, mockBo.MockBOID); MockBO savedMockBO = BORegistry.DataAccessor.BusinessObjectLoader.GetBusinessObject<MockBO>(criteria); Assert.AreSame(mockBo, savedMockBO); }
public void TestMultipleStatementsInOneITransactional() { //---------------Set up test pack------------------- TransactionCommitterDB committerDB = new TransactionCommitterDB(DatabaseConnection.CurrentConnection); StubDatabaseTransactionMultiple transactional1 = new StubDatabaseTransactionMultiple(); committerDB.AddTransaction(transactional1); //---------------Execute Test ---------------------- committerDB.CommitTransaction(); //---------------Test Result ----------------------- AssertTransactionsInTableAre(2); }
public void TestDeleteRelatedWithFailureAfter() { //---------------Set up test pack------------------- AddressTestBO address; var contactPersonTestBO = CreateContactPersonWithOneAddress(out address); contactPersonTestBO.MarkForDelete(); TransactionCommitterDB committerDB = new TransactionCommitterDB(DatabaseConnection.CurrentConnection); committerDB.AddBusinessObject(contactPersonTestBO); committerDB.AddTransaction(new StubDatabaseFailureTransaction()); //---------------Execute Test ---------------------- try { committerDB.CommitTransaction(); Assert.Fail(); } catch (NotImplementedException) { } //---------------Test Result ----------------------- AssertBusinessObjectInDatabase(contactPersonTestBO); AssertBusinessObjectInDatabase(address); Assert.IsTrue(address.Status.IsDeleted); Assert.IsTrue(address.Status.IsEditing); Assert.IsFalse(address.Status.IsNew); Assert.IsTrue(contactPersonTestBO.Status.IsDeleted); Assert.IsTrue(contactPersonTestBO.Status.IsEditing); Assert.IsFalse(contactPersonTestBO.Status.IsNew); }
public void TestDeleteRelatedWithFailure_CancelEditsOnParent() { //---------------Set up test pack------------------- AddressTestBO address; ContactPersonTestBO contactPersonTestBO = ContactPersonTestBO.CreateContactPersonWithOneAddress_CascadeDelete(out address, TestUtil.GetRandomString()); contactPersonTestBO.MarkForDelete(); TransactionCommitterDB committerDB = new TransactionCommitterDB(DatabaseConnection.CurrentConnection); committerDB.AddBusinessObject(contactPersonTestBO); committerDB.AddTransaction(new StubDatabaseFailureTransaction()); try { committerDB.CommitTransaction(); Assert.Fail(); } catch (NotImplementedException) { } //---------------Execute Test ---------------------- contactPersonTestBO.CancelEdits(); //---------------Test Result ----------------------- Assert.IsFalse(contactPersonTestBO.Status.IsEditing); Assert.IsFalse(contactPersonTestBO.Status.IsDeleted); Assert.Ignore( "This test is being ignored due to the fact that we do not have a philosophy for compositional parents deleting their children etc"); Assert.IsFalse(address.Status.IsEditing); Assert.IsFalse(address.Status.IsDeleted); }
public void TestDatabaseTransaction_SuccessTwoTransactions() { //---------------Set up test pack------------------- TransactionCommitterDB committerDB = new TransactionCommitterDB(DatabaseConnection.CurrentConnection); StubDatabaseTransaction transactional1 = new StubDatabaseTransaction(); StubDatabaseTransaction transactional2 = new StubDatabaseTransaction(); committerDB.AddTransaction(transactional1); committerDB.AddTransaction(transactional2); //---------------Execute Test ---------------------- committerDB.CommitTransaction(); //---------------Test Result ----------------------- AssertTransactionsInTableAre(2); }
public void TestDatabaseTransaction_Failure() { //---------------Set up test pack------------------- TransactionCommitterDB committerDB = new TransactionCommitterDB(DatabaseConnection.CurrentConnection); StubDatabaseTransaction transactional1 = new StubDatabaseTransaction(); StubDatabaseFailureTransaction transactional2 = new StubDatabaseFailureTransaction(); committerDB.AddTransaction(transactional1); committerDB.AddTransaction(transactional2); //---------------Execute Test ---------------------- try { committerDB.CommitTransaction(); } catch (NotImplementedException) { } //---------------Test Result ----------------------- Assert.IsFalse(transactional1.Committed); Assert.IsFalse(transactional2.Committed); AssertTransactionsInTableAre(0); }