[Test] // Checks that deletion is prevented when a child exists public void Test_MultipleRelationshipDeletion_PreventDelete_Drivers() { CheckIfTestShouldBeIgnored(); //---------------Set up test pack------------------- Car car = TestUtilsCar.CreateSavedCar(); TestProjectNoDBSpecificProps.BO.Driver boForRelationshipDrivers = TestUtilsDriver.CreateUnsavedValidDriver(); boForRelationshipDrivers.Car = car; boForRelationshipDrivers.Save(); //---------------Assert Preconditions--------------- Assert.AreEqual(1, car.Drivers.Count); IRelationshipDef relationshipDef = ClassDef.Get <Car>().RelationshipDefCol["Drivers"]; Assert.AreEqual(DeleteParentAction.Prevent, relationshipDef.DeleteParentAction); //---------------Execute Test ---------------------- try { car.MarkForDelete(); car.Save(); Assert.Fail("Should have thrown exception due to deletion prevention"); } //---------------Test Result ----------------------- catch (BusObjDeleteException ex) { StringAssert.Contains("You cannot delete Car identified by ", ex.Message); StringAssert.Contains("via the Drivers relationship", ex.Message); } }
[Test] // Checks that a related collection loads correctly (no tampering with class defs) public void Test_LoadThroughMultipleRelationship_Drivers() { CheckIfTestShouldBeIgnored(); //---------------Set up test pack------------------- BORegistry.DataAccessor = new DataAccessorInMemory(); Car car = TestUtilsCar.CreateSavedCar(); TestProjectNoDBSpecificProps.BO.Driver boForRelationshipDrivers = TestUtilsDriver.CreateUnsavedValidDriver(); boForRelationshipDrivers.Car = car; boForRelationshipDrivers.Save(); BusinessObjectManager.Instance.ClearLoadedObjects(); GC.Collect(); TestUtilsShared.WaitForGC(); //---------------Assert Preconditions--------------- Assert.AreEqual(1, car.Drivers.Count); //---------------Execute Test ---------------------- TestProjectNoDBSpecificProps.BO.Driver loadedRelatedBO = Broker.GetBusinessObject <TestProjectNoDBSpecificProps.BO.Driver>(boForRelationshipDrivers.ID); Car loadedCar = Broker.GetBusinessObject <Car>(car.ID); //---------------Test Result ----------------------- Assert.AreEqual(1, loadedCar.Drivers.Count); Assert.AreEqual(boForRelationshipDrivers, loadedCar.Drivers[0]); Assert.AreEqual(loadedRelatedBO, loadedCar.Drivers[0]); Assert.AreEqual(loadedRelatedBO, car.Drivers[0]); }