public void Test_Valid_Relationship_1_M_Relationships_PrimaryAndForeignKeyDoesNotMatchRelationshipCardinality() { //----------------------Test Setup ---------------------- const string classDefsString = @" <classes> <class name=""TestRelatedClass"" assembly=""Habanero.Test.BO.Loaders"" > <property name=""TestRelatedClassID"" type=""Guid"" /> <property name=""TestClassID"" type=""Guid"" /> <primaryKey> <prop name=""TestRelatedClassID""/> </primaryKey> <relationship name=""TestClass"" type=""multiple"" relatedClass=""TestClass"" relatedAssembly=""Habanero.Test.BO.Loaders"" reverseRelationship=""TestRelatedClass"" owningBOHasForeignKey=""true"" > <relatedProperty property=""TestClassID"" relatedProperty=""TestClassID"" /> </relationship> </class> <class name=""TestClass"" assembly=""Habanero.Test.BO.Loaders"" > <property name=""TestClassID"" type=""Guid"" /> <primaryKey> <prop name=""TestClassID""/> </primaryKey> <relationship name=""TestRelatedClass"" type=""single"" relatedClass=""TestRelatedClass"" relatedAssembly=""Habanero.Test.BO.Loaders"" reverseRelationship=""TestClass"" owningBOHasForeignKey=""true"" > <relatedProperty property=""TestClassID"" relatedProperty=""TestClassID"" /> </relationship> </class> </classes> " ; XmlClassDefsLoader loader = CreateXmlClassDefsLoader(); //--------------------Execute Test------------------------- ClassDefCol classDefList = loader.LoadClassDefs(classDefsString); //---------------Test Result ----------------------- Assert.AreEqual(2, classDefList.Count); Assert.IsTrue(classDefList.Contains("Habanero.Test.BO.Loaders", "TestClass"), "Class 'TestClass' should have been loaded."); Assert.IsTrue(classDefList.Contains("Habanero.Test.BO.Loaders", "TestRelatedClass"), "Class 'TestRelatedClass' should have been loaded."); Assert.Fail("wRITE TEST THSI should throw validation error"); IClassDef classDef = classDefList.FindByClassName("TestClass"); IRelationshipDef relationshipDef = classDef.RelationshipDefCol["TestRelatedClass"]; IClassDef reverseClassDef = classDefList.FindByClassName("TestRelatedClass"); IRelationshipDef reverseRelationshipDef = reverseClassDef.RelationshipDefCol["TestClass"]; Assert.IsFalse(relationshipDef.OwningBOHasForeignKey); Assert.IsTrue(reverseRelationshipDef.OwningBOHasForeignKey); }
public void Test_Valid_Relationship_ShouldSetOwningClassDef() { //----------------------Test Setup ---------------------- const string classDefsString = @" <classes> <class name=""TestRelatedClass"" assembly=""Habanero.Test.BO.Loaders"" > <property name=""TestRelatedClassID"" type=""Guid"" /> <property name=""TestClassID"" type=""Guid"" /> <primaryKey isObjectID=""false""> <prop name=""TestRelatedClassID""/> <prop name=""TestClassID""/> </primaryKey> <relationship name=""TestClass"" type=""single"" relatedClass=""TestClass"" relatedAssembly=""Habanero.Test.BO.Loaders"" owningBOHasForeignKey=""true"" > <relatedProperty property=""TestClassID"" relatedProperty=""TestClassID"" /> </relationship> </class> <class name=""TestClass"" assembly=""Habanero.Test.BO.Loaders"" > <property name=""TestClassID"" type=""Guid"" /> <primaryKey> <prop name=""TestClassID""/> </primaryKey> </class> </classes> " ; XmlClassDefsLoader loader = CreateXmlClassDefsLoader(); //--------------------Execute Test------------------------- ClassDefCol classDefList = loader.LoadClassDefs(classDefsString); //---------------Test Result ----------------------- IClassDef reverseClassDef = classDefList.FindByClassName("TestRelatedClass"); IRelationshipDef reverseRelDef = reverseClassDef.RelationshipDefCol["TestClass"]; Assert.AreSame(reverseClassDef, reverseRelDef.OwningClassDef); }
public void Test_Valid_Relationship_1_M_Relationships_CanDetermine_OwningBOHasForeignKey_SecondClass_NotSetUp() { //----------------------Test Setup ---------------------- const string classDefsString = @" <classes> <class name=""TestClass"" assembly=""Habanero.Test.BO.Loaders"" > <property name=""TestClassID"" type=""Guid"" /> <primaryKey> <prop name=""TestClassID""/> </primaryKey> <relationship name=""TestRelatedClass"" type=""multiple"" relatedClass=""TestRelatedClass"" relatedAssembly=""Habanero.Test.BO.Loaders"" reverseRelationship=""TestClass"" owningBOHasForeignKey=""true"" > <relatedProperty property=""TestClassID"" relatedProperty=""TestClassID"" /> </relationship> </class> <class name=""TestRelatedClass"" assembly=""Habanero.Test.BO.Loaders"" > <property name=""TestRelatedClassID"" type=""Guid"" /> <property name=""TestClassID"" type=""Guid"" /> <primaryKey> <prop name=""TestRelatedClassID""/> </primaryKey> <relationship name=""TestClass"" type=""single"" relatedClass=""TestClass"" relatedAssembly=""Habanero.Test.BO.Loaders"" reverseRelationship=""TestRelatedClass"" > <relatedProperty property=""TestClassID"" relatedProperty=""TestClassID"" /> </relationship> </class> </classes> " ; XmlClassDefsLoader loader = CreateXmlClassDefsLoader(); ClassDefCol classDefList = loader.LoadClassDefs(classDefsString); ClassDefValidator validator = new ClassDefValidator(GetDefClassFactory()); IClassDef classDef = classDefList.FindByClassName("TestClass"); IRelationshipDef relationshipDef = classDef.RelationshipDefCol["TestRelatedClass"]; IClassDef reverseClassDef = classDefList.FindByClassName("TestRelatedClass"); IRelationshipDef reverseRelationshipDef = reverseClassDef.RelationshipDefCol["TestClass"]; //---------------Assert PreConditions--------------- Assert.IsFalse(relationshipDef.OwningBOHasForeignKey); Assert.IsTrue(reverseRelationshipDef.OwningBOHasForeignKey); //--------------------Execute Test------------------------- validator.ValidateClassDefs(classDefList); //---------------Test Result ----------------------- Assert.IsFalse(relationshipDef.OwningBOHasForeignKey); Assert.IsTrue(reverseRelationshipDef.OwningBOHasForeignKey); }
public void Test_Valid_Relationship_SingleSingleRelationships_OnlyOneHasOwningBOHasForeignKey() { //----------------------Test Setup ---------------------- const string classDefsString = @" <classes> <class name=""TestClass"" assembly=""Habanero.Test.BO.Loaders"" > <property name=""TestClassID"" type=""Guid"" /> <primaryKey> <prop name=""TestClassID""/> </primaryKey> <relationship name=""TestRelatedClass"" type=""single"" relatedClass=""TestRelatedClass"" relatedAssembly=""Habanero.Test.BO.Loaders"" owningBOHasForeignKey=""true"" reverseRelationship=""TestClass""> <relatedProperty property=""TestClassID"" relatedProperty=""TestClassID"" /> </relationship> </class> <class name=""TestRelatedClass"" assembly=""Habanero.Test.BO.Loaders"" > <property name=""TestRelatedClassID"" type=""Guid"" /> <property name=""TestClassID"" type=""Guid"" /> <primaryKey> <prop name=""TestRelatedClassID""/> </primaryKey> <relationship name=""TestClass"" type=""single"" relatedClass=""TestClass"" relatedAssembly=""Habanero.Test.BO.Loaders"" reverseRelationship=""TestRelatedClass"" owningBOHasForeignKey=""false"" > <relatedProperty property=""TestClassID"" relatedProperty=""TestClassID"" /> </relationship> </class> </classes> " ; XmlClassDefsLoader loader = CreateXmlClassDefsLoader(); ClassDefCol classDefList = loader.LoadClassDefs(classDefsString); ClassDefValidator validator = new ClassDefValidator(GetDefClassFactory()); //--------------------Assert PreConditions--------------- IClassDef classDef = classDefList.FindByClassName("TestClass"); IRelationshipDef relationshipDef = classDef.RelationshipDefCol["TestRelatedClass"]; Assert.IsTrue(relationshipDef.OwningBOHasForeignKey, "This defaults to true"); IClassDef revesreclassDef = classDefList.FindByClassName("TestClass"); IRelationshipDef reverserelationshipDef = revesreclassDef.RelationshipDefCol["TestRelatedClass"]; Assert.IsTrue(reverserelationshipDef.OwningBOHasForeignKey, "This defaults to true"); //--------------------Execute Test------------------------- validator.ValidateClassDefs(classDefList); //---------------Test Result ----------------------- Assert.IsFalse(relationshipDef.OwningBOHasForeignKey, "Should have converted this to false"); Assert.IsFalse(reverserelationshipDef.OwningBOHasForeignKey, "Should have converted this to false"); }
public void TestFindByClassName_NotFound_EmptyCol() { //---------------Set up test pack------------------- ClassDefCol col = new ClassDefCol(); //---------------Execute Test ---------------------- IClassDef foundClass = col.FindByClassName("DoesNotExist"); //---------------Test Result ----------------------- Assert.IsNull(foundClass); }
public void TestFindByClassName_Found() { //---------------Set up test pack------------------- ClassDefCol col = new ClassDefCol(); ClassDef classDef1 = new ClassDef("assembly", "class1", null, null, null, null, null); ClassDef classDef2 = new ClassDef("assembly", "class2", null, null, null, null, null); ClassDef classDef3 = new ClassDef("assembly", "class3", null, null, null, null, null); col.Add(classDef1); col.Add(classDef2); col.Add(classDef3); //---------------Execute Test ---------------------- IClassDef foundClass1 = col.FindByClassName("class1"); IClassDef foundClass2 = col.FindByClassName("class2"); IClassDef foundClass3 = col.FindByClassName("class3"); //---------------Test Result ----------------------- Assert.AreSame(classDef1, foundClass1); Assert.AreSame(classDef2, foundClass2); Assert.AreSame(classDef3, foundClass3); }
public void TestFindByClassName_NotFound() { //---------------Set up test pack------------------- ClassDefCol col = new ClassDefCol(); ClassDef classDef1 = new ClassDef("assembly", "class1", null, null, null, null, null); ClassDef classDef2 = new ClassDef("assembly", "class2", null, null, null, null, null); ClassDef classDef3 = new ClassDef("assembly", "class3", null, null, null, null, null); col.Add(classDef1); col.Add(classDef2); col.Add(classDef3); //---------------Execute Test ---------------------- IClassDef foundClass = col.FindByClassName("DoesNotExist"); //---------------Test Result ----------------------- Assert.IsNull(foundClass); }
public void Test_Valid_Relationship_1_1_NoReverse_RelatatedProp_IsPartOfCompositePrimaryKey() { //----------------------Test Setup ---------------------- const string classDefsString = @" <classes> <class name=""TestRelatedClass"" assembly=""Habanero.Test.BO.Loaders"" > <property name=""TestRelatedClassID"" type=""Guid"" /> <property name=""TestClassID"" type=""Guid"" /> <primaryKey isObjectID=""false""> <prop name=""TestRelatedClassID""/> <prop name=""TestClassID""/> </primaryKey> <relationship name=""TestClass"" type=""single"" relatedClass=""TestClass"" relatedAssembly=""Habanero.Test.BO.Loaders"" owningBOHasForeignKey=""true"" > <relatedProperty property=""TestClassID"" relatedProperty=""TestClassID"" /> </relationship> </class> <class name=""TestClass"" assembly=""Habanero.Test.BO.Loaders"" > <property name=""TestClassID"" type=""Guid"" /> <primaryKey> <prop name=""TestClassID""/> </primaryKey> </class> </classes> " ; XmlClassDefsLoader loader = CreateXmlClassDefsLoader(); //--------------------Execute Test------------------------- ClassDefCol classDefList = loader.LoadClassDefs(classDefsString); //---------------Test Result ----------------------- Assert.AreEqual(2, classDefList.Count); Assert.IsTrue(classDefList.Contains("Habanero.Test.BO.Loaders", "TestClass"), "Class 'TestClass' should have been loaded."); Assert.IsTrue(classDefList.Contains("Habanero.Test.BO.Loaders", "TestRelatedClass"), "Class 'TestRelatedClass' should have been loaded."); IClassDef reverseClassDef = classDefList.FindByClassName("TestRelatedClass"); IRelationshipDef relationshipDef = reverseClassDef.RelationshipDefCol["TestClass"]; Assert.IsTrue(relationshipDef.OwningBOHasForeignKey); }