public void Test_Insert_Site_Then_UpdateOptimistic() { OrderAddress objOrderAddress = new OrderAddress(); //objOrderAddress.OrderAddressID = 0; objOrderAddress.OrderAddressTypeID = (int)OrderAddressTypes.Site; objOrderAddress.MigrationStatusID = (int)MigrationStatuses.STAGED_for_Processing; objOrderAddress.OrderSystemOfRecordID = (int)OrderSystemOfRecords.EON; objOrderAddress.CDWCustomerOrderNumber = DateTime.UtcNow.Ticks.ToString(); objOrderAddress.CDWAddressOne = "72 E 3RD AVE"; objOrderAddress.CDWCity = "SAN MATEO"; objOrderAddress.CDWState = "CA"; objOrderAddress.CDWPostalCode = "94401"; objOrderAddress.CDWCountry = "USA"; objOrderAddress.CDWFloor = String.Empty; objOrderAddress.CDWRoom = String.Empty; objOrderAddress.CDWSuite = String.Empty; objOrderAddress.CDWCLII = null; objOrderAddress.ValidCLII = false; objOrderAddress.NumberOfFailedGLMSiteCalls = 0; objOrderAddress.ExistsInGLMAsSite = true; objOrderAddress.GLMPLNumber = ""; objOrderAddress.NumberOfFailedGLMSiteCodeExistenceCalls = 0; objOrderAddress.NumberOfFailedGLMSiteCodeCreationCalls = 0; objOrderAddress.GLMSiteCode = ""; objOrderAddress.HasGLMSiteCode = true; objOrderAddress.NumberOfFailedSAPSiteAddressSearchCalls = 0; objOrderAddress.NumberOfFailedSAPSiteAddressImportCalls = 0; objOrderAddress.ExistsInSAPAsSiteAddress = true; objOrderAddress.NumberOfRecordsInSAPWithPL = 0; objOrderAddress.NumberOfFailedGLMServiceLocationSearchCalls = 0; objOrderAddress.NumberOfFailedGLMServiceLocationCreationCalls = 0; objOrderAddress.GLMSLNumber = ""; objOrderAddress.ExistsInGLMAsServiceLocation = true; objOrderAddress.NumberOfFailedGLMSCodeExistenceCalls = 0; objOrderAddress.NumberOfFailedGLMSCodeCreationCalls = 0; objOrderAddress.GLMSCode = ""; objOrderAddress.HasGLMSCode = true; objOrderAddress.NumberOfFailedSAPServiceLocationAddressSearchCalls = 0; objOrderAddress.NumberOfFailedSAPServiceLocationAddressImportCalls = 0; objOrderAddress.ExistsInSAPAsServiceLocationAddress = true; objOrderAddress.NumberOfRecordsInSAPWithSL = 0; objOrderAddress.SourceCreationDate = new DateTime(2018, 08, 01); objOrderAddress.SourceLastModifyDate = new DateTime(2018, 08, 01); objOrderAddress.DateTimeOfLastMigrationStatusUpdate = new DateTime(2018, 08, 01); objOrderAddress.DateTimeOfLastDupDetection = new DateTime(2018, 08, 01); objOrderAddress.DateCreated = new DateTime(2018, 08, 01); objOrderAddress.DateUpdated = new DateTime(2018, 08, 01); string strLastError = String.Empty; Assert.IsTrue(objOrderAddress.Insert(out strLastError)); Assert.IsTrue(objOrderAddress.OrderAddressID > 0); Assert.IsTrue(strLastError == String.Empty); // This will fail... no data hash populated objOrderAddress.CDWCity += " UPDATED VALUE"; Assert.IsFalse(objOrderAddress.UpdateOptimistic(out strLastError)); Assert.IsTrue(strLastError.Contains("Concurrent action violation")); // This should work since it is populated with a method that returns the current data hash OrderAddress objOrderAddressViaGet = new OrderAddress().Get(objOrderAddress.OrderAddressID.Value, out strLastError); objOrderAddressViaGet.CDWCity += " UPDATED VIA GET"; Assert.IsTrue(objOrderAddressViaGet.UpdateOptimistic(out strLastError)); Assert.IsTrue(objOrderAddressViaGet.OrderAddressID > 0); Assert.IsTrue(strLastError == String.Empty); // This should fail since we intentionally override things with a bogus data hash OrderAddress objOrderAddress2ViaGet = new OrderAddress().Get(objOrderAddress.OrderAddressID.Value, out strLastError); objOrderAddress2ViaGet.DataHash += "BogusDataHash"; Assert.IsFalse(objOrderAddress2ViaGet.UpdateOptimistic(out strLastError)); Assert.IsTrue(strLastError.Contains("Concurrent action violation")); }