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");
        }
Example #5
0
        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);
        }
Example #6
0
        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);
        }
Example #7
0
        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);
        }
Example #9
0
 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);
 }
Example #10
0
 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);
 }
Example #11
0
 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);
 }