//This Acceptance Test has a corresponding unit test on the CheckDuplicateIdentifier method in TestTransactionalBusinessObject public void Test_Commit_WhenTransactionCommitterHasAddedBOAndUpdatedBOWithSameUniqueKey_ShouldThrowDuplicateError() { //---------------Set up test pack------------------- ContactPersonTestBO.LoadDefaultClassDefWithKeyOnSurname(); var surname = BOTestUtils.RandomString; var contactPersonTestBO = ContactPersonTestBO.CreateUnsavedContactPerson(BOTestUtils.RandomString, BOTestUtils.RandomString); var newContactPersonTestBOWithSameSurname = ContactPersonTestBO.CreateUnsavedContactPerson(surname, BOTestUtils.RandomString); var committer = BORegistry.DataAccessor.CreateTransactionCommitter(); committer.AddBusinessObject(contactPersonTestBO); committer.CommitTransaction(); contactPersonTestBO.Surname = surname; committer.AddBusinessObject(contactPersonTestBO); committer.AddBusinessObject(newContactPersonTestBOWithSameSurname); //---------------Assert Precondition---------------- Assert.IsFalse(contactPersonTestBO.Status.IsNew); Assert.IsTrue(contactPersonTestBO.Status.IsDirty); Assert.IsTrue(newContactPersonTestBOWithSameSurname.Status.IsNew); Assert.AreEqual(surname, contactPersonTestBO.Surname); Assert.AreEqual(surname, newContactPersonTestBOWithSameSurname.Surname); //---------------Execute Test ---------------------- var exception = Assert.Throws <BusObjDuplicateConcurrencyControlException>(() => { committer.CommitTransaction(); }); //---------------Test Result ----------------------- Assert.AreEqual(string.Format("A 'Contact Person Test BO' already exists with the same identifier: Surname = {0}.", surname), exception.Message); }
public void Test_CheckDuplicateIdentifier_WhenTransactionCommitterHasAddedBOAndUpdatedBOWithSameUniqueKey_ShouldReturnError() { //---------------Set up test pack------------------- ContactPersonTestBO.LoadDefaultClassDefWithKeyOnSurname(); var surname = BOTestUtils.RandomString; var contactPersonTestBO = ContactPersonTestBO.CreateUnsavedContactPerson(BOTestUtils.RandomString, BOTestUtils.RandomString); contactPersonTestBO.Save(); contactPersonTestBO.Surname = surname; var transactionalBusinessObject = new TransactionalBusinessObject(contactPersonTestBO); var newContactPersonTestBOWithSameSurname = ContactPersonTestBO.CreateUnsavedContactPerson(surname, BOTestUtils.RandomString); var transactionalBusinessObjectDuplicate = new TransactionalBusinessObject(newContactPersonTestBOWithSameSurname); var pendingTransactions = new List <ITransactional> { transactionalBusinessObject, transactionalBusinessObjectDuplicate }; //---------------Assert Precondition---------------- Assert.IsFalse(contactPersonTestBO.Status.IsNew); Assert.IsTrue(contactPersonTestBO.Status.IsDirty); Assert.IsTrue(newContactPersonTestBOWithSameSurname.Status.IsNew); Assert.AreEqual(surname, contactPersonTestBO.Surname); Assert.AreEqual(surname, newContactPersonTestBOWithSameSurname.Surname); //---------------Execute Test ---------------------- var errorMessages = new List <string>(); transactionalBusinessObject.CheckDuplicateIdentifier(pendingTransactions, errorMessages); //---------------Test Result ----------------------- Assert.AreEqual(1, errorMessages.Count); Assert.AreEqual(string.Format("A 'Contact Person Test BO' already exists with the same identifier: Surname = {0}.", surname), errorMessages[0]); }
//This Acceptance Test has a corresponding unit test on the CheckDuplicateIdentifier method in TestTransactionalBusinessObject public void Test_Commit_WhenTransactionCommitterHasAddedBOWithSameUniqueKeyAsMarkedForDeleteBO_WhenDeletedBOInTransaction_ShouldNotThrowDuplicateError() { //---------------Set up test pack------------------- BORegistry.BusinessObjectManager = new BusinessObjectManagerNull(); ContactPersonTestBO.LoadDefaultClassDefWithKeyOnSurname(); var surname = BOTestUtils.RandomString; var contactPersonTestBO = ContactPersonTestBO.CreateUnsavedContactPerson(surname, BOTestUtils.RandomString); contactPersonTestBO.Save(); var committer = BORegistry.DataAccessor.CreateTransactionCommitter(); contactPersonTestBO.MarkForDelete(); committer.AddBusinessObject(contactPersonTestBO); var newContactPersonTestBOWithSameSurname = ContactPersonTestBO.CreateUnsavedContactPerson(surname, BOTestUtils.RandomString); committer.AddBusinessObject(newContactPersonTestBOWithSameSurname); //---------------Assert Precondition---------------- Assert.IsFalse(contactPersonTestBO.Status.IsNew); Assert.IsTrue(contactPersonTestBO.Status.IsDeleted); Assert.IsTrue(newContactPersonTestBOWithSameSurname.Status.IsNew); Assert.IsFalse(newContactPersonTestBOWithSameSurname.Status.IsDeleted); Assert.AreEqual(surname, contactPersonTestBO.Props["Surname"].PersistedPropertyValueString); //---------------Execute Test ---------------------- committer.CommitTransaction(); //---------------Test Result ----------------------- Assert.IsFalse(newContactPersonTestBOWithSameSurname.Status.IsNew); Assert.IsTrue(contactPersonTestBO.Status.IsDeleted); newContactPersonTestBOWithSameSurname.MarkForDelete(); newContactPersonTestBOWithSameSurname.Save(); }
public void Test_CheckDuplicateIdentifier_WhenTransactionCommitterHasAddedBOWithSameUniqueKeyAsMarkedForDeleteBO_WhenDeletedBONotInPendingTransactions_ShouldReturnError() { //---------------Set up test pack------------------- BORegistry.BusinessObjectManager = new BusinessObjectManagerNull(); ContactPersonTestBO.LoadDefaultClassDefWithKeyOnSurname(); var surname = BOTestUtils.RandomString; var contactPersonTestBO = ContactPersonTestBO.CreateUnsavedContactPerson(surname, BOTestUtils.RandomString); contactPersonTestBO.Save(); contactPersonTestBO.MarkForDelete(); var transactionalBusinessObjectForDeletedDuplicate = new TransactionalBusinessObject(contactPersonTestBO); var newContactPersonTestBOWithSameSurname = ContactPersonTestBO.CreateUnsavedContactPerson(surname, BOTestUtils.RandomString); var transactionalBusinessObject = new TransactionalBusinessObject(newContactPersonTestBOWithSameSurname); var pendingTransactions = new List <ITransactional> { transactionalBusinessObject }; //---------------Assert Precondition---------------- Assert.IsFalse(transactionalBusinessObjectForDeletedDuplicate.IsNew()); Assert.IsTrue(transactionalBusinessObjectForDeletedDuplicate.IsDeleted); Assert.IsTrue(transactionalBusinessObject.IsNew()); Assert.IsFalse(transactionalBusinessObject.IsDeleted); Assert.AreEqual(surname, contactPersonTestBO.Props["Surname"].PersistedPropertyValueString); //---------------Execute Test ---------------------- var errorMessages = new List <string>(); transactionalBusinessObject.CheckDuplicateIdentifier(pendingTransactions, errorMessages); //---------------Test Result ----------------------- Assert.AreEqual(1, errorMessages.Count); Assert.AreEqual(string.Format("A 'Contact Person Test BO' already exists with the same identifier: Surname = {0}.", surname), errorMessages[0]); }