public void VerifyThatOverridesAndForeignKeyConstraintsWork() { var fromObject = new User { Uuid = Guid.NewGuid(), Name = "John Doe" }; var toObject = new Usergroup { Iid = 1, Name = "Admin" }; fromObject.Usergroup_Id = toObject.Iid; DatabaseSession.Instance.Connector.CreateTableWithColumns(toObject); DatabaseSession.Instance.Connector.CreateTableWithColumns(fromObject); Assert.Throws <InvalidDataException>(() => DatabaseSession.Instance.Connector.CreateForeignKeyConstraint(fromObject.GetType().GetProperty("Usergroup_Id"), fromObject, toObject.GetType().GetProperty(toObject.PrimaryKey), toObject)); DatabaseSession.Instance.Connector.CreatePrimaryKeyConstraint(toObject); Assert.Throws <InvalidDataException>( () => DatabaseSession.Instance.Connector.DeleteForeignKeyConstraint( fromObject.GetType().GetProperty("Usergroup_Id"), fromObject, toObject.GetType().GetProperty(toObject.PrimaryKey), toObject)); Assert.DoesNotThrow(() => DatabaseSession.Instance.Connector.CreateForeignKeyConstraint(fromObject.GetType().GetProperty("Usergroup_Id"), fromObject, toObject.GetType().GetProperty(toObject.PrimaryKey), toObject)); toObject.Save(); Assert.DoesNotThrow(() => fromObject.Save()); DatabaseSession.Instance.Connector.DeleteForeignKeyConstraint(fromObject.GetType().GetProperty("Usergroup_Id"), fromObject, toObject.GetType().GetProperty(toObject.PrimaryKey), toObject); Assert.DoesNotThrow(() => toObject.Delete()); DatabaseSession.Instance.Connector.DeleteTable(new User()); DatabaseSession.Instance.Connector.DeleteTable(new Usergroup()); }
public void VerifyThatOverridesAndForeignKeyConstraintsWork() { var fromObject = new User { Id = Guid.NewGuid(), Name = "John Doe" }; var toObject = new Usergroup { Iid = 1, Name = "Admin" }; fromObject.Usergroup_Id = toObject.Iid; DatabaseSession.Instance.Connector.CreateTableWithColumns(toObject); DatabaseSession.Instance.Connector.CreateTableWithColumns(fromObject); Assert.Throws<InvalidDataException>(() => DatabaseSession.Instance.Connector.CreateForeignKeyConstraint(fromObject.GetType().GetProperty("Usergroup_Id"), fromObject, toObject.GetType().GetProperty(toObject.PrimaryKey), toObject)); DatabaseSession.Instance.Connector.CreatePrimaryKeyConstraint(toObject); Assert.Throws<InvalidDataException>( () => DatabaseSession.Instance.Connector.DeleteForeignKeyConstraint( fromObject.GetType().GetProperty("Usergroup_Id"), fromObject, toObject.GetType().GetProperty(toObject.PrimaryKey), toObject)); Assert.DoesNotThrow(() => DatabaseSession.Instance.Connector.CreateForeignKeyConstraint(fromObject.GetType().GetProperty("Usergroup_Id"), fromObject, toObject.GetType().GetProperty(toObject.PrimaryKey), toObject)); Assert.Throws<InvalidDataException>(() => fromObject.Save()); toObject.Save(); Assert.DoesNotThrow(() => fromObject.Save()); Assert.Throws<InvalidDataException>(() => toObject.Delete()); DatabaseSession.Instance.Connector.DeleteForeignKeyConstraint(fromObject.GetType().GetProperty("Usergroup_Id"), fromObject, toObject.GetType().GetProperty(toObject.PrimaryKey), toObject); Assert.DoesNotThrow(() => toObject.Delete()); DatabaseSession.Instance.Connector.DeleteTable(new User()); DatabaseSession.Instance.Connector.DeleteTable(new Usergroup()); }