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]); }