//This Acceptance Test has a corresponding unit test on the CheckDuplicateIdentifier method in TestTransactionalBusinessObject public void Test_Commit_WhenTransactionCommitterHasAddedBOsWithSamePrimaryKey_ShouldThrowDuplicateError() { //---------------Set up test pack------------------- ContactPersonTestBO.LoadClassDefWithCompositePrimaryKeyNameSurname(); var contactPersonTestBO = ContactPersonTestBO.CreateUnsavedContactPerson(); var surname = contactPersonTestBO.Surname; var firstName = contactPersonTestBO.FirstName; var newContactPersonTestBOWithSameSurname = ContactPersonTestBO.CreateUnsavedContactPerson(surname, firstName); var committer = BORegistry.DataAccessor.CreateTransactionCommitter(); committer.AddBusinessObject(contactPersonTestBO); committer.AddBusinessObject(newContactPersonTestBOWithSameSurname); //---------------Assert Precondition---------------- Assert.IsTrue(contactPersonTestBO.Status.IsNew); Assert.IsTrue(newContactPersonTestBOWithSameSurname.Status.IsNew); Assert.AreEqual(contactPersonTestBO.FirstName, newContactPersonTestBOWithSameSurname.FirstName); Assert.AreEqual(contactPersonTestBO.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}, FirstName = {1}.", surname, firstName), exception.Message); }
public void Test_CheckDuplicateIdentifier_WhenTransactionCommitterHasAddedBOsWithSamePrimaryKey_ShouldReturnError() { //---------------Set up test pack------------------- ContactPersonTestBO.LoadClassDefWithCompositePrimaryKeyNameSurname(); var contactPersonTestBO = ContactPersonTestBO.CreateUnsavedContactPerson(); var surname = contactPersonTestBO.Surname; var firstName = contactPersonTestBO.FirstName; var transactionalBusinessObject = new TransactionalBusinessObject(contactPersonTestBO); var newContactPersonTestBOWithSameSurname = ContactPersonTestBO.CreateUnsavedContactPerson(surname, firstName); var transactionalBusinessObjectDuplicate = new TransactionalBusinessObject(newContactPersonTestBOWithSameSurname); var pendingTransactions = new List <ITransactional> { transactionalBusinessObject, transactionalBusinessObjectDuplicate }; //---------------Assert Precondition---------------- Assert.IsTrue(contactPersonTestBO.Status.IsNew); Assert.IsTrue(newContactPersonTestBOWithSameSurname.Status.IsNew); Assert.AreEqual(contactPersonTestBO.FirstName, newContactPersonTestBOWithSameSurname.FirstName); Assert.AreEqual(contactPersonTestBO.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}, FirstName = {1}.", surname, firstName), errorMessages[0]); }