fixed SPRNET-1118 + added sample "NestedEmployeeInfo" to WebQuickStart

This commit is contained in:
eeichinger
2009-04-16 23:07:09 +00:00
parent e935787f6e
commit 71f2834158
11 changed files with 358 additions and 84 deletions

View File

@@ -179,6 +179,80 @@ namespace Spring.Web.UI.Controls
Assert.AreEqual(messageSource, ctl.TheMessageSource);
}
[Test]
public void ReadsErrorsFromClosestValidationContainerByDefault()
{
// indirect containment
Spring.Web.UI.Page page = new Spring.Web.UI.Page();
TestValidationControl vc = new TestValidationControl();
Spring.Web.UI.UserControl inBetweenControl = new Spring.Web.UI.UserControl();
inBetweenControl.Controls.Add(vc);
page.Controls.Add(inBetweenControl);
Assert.AreSame(inBetweenControl, vc.TheValidationContainer);
}
[Test]
public void DoesNotReadErrorsFromCrossValidationContainerByDefault()
{
// containment tree:
//
// Page : IValidationContainer
// - outerVC
// - inBetweenControl1 : IValidationContainer
// - innerVC
Spring.Web.UI.Page page = new Spring.Web.UI.Page();
Spring.Web.UI.UserControl inBetweenControl1 = new Spring.Web.UI.UserControl();
inBetweenControl1.ID = "InBetweenControl1";
TestValidationControl innerVC = new TestValidationControl();
inBetweenControl1.Controls.Add(innerVC);
page.Controls.Add(inBetweenControl1);
TestValidationControl outerVC = new TestValidationControl();
page.Controls.Add(outerVC);
inBetweenControl1.ValidationErrors.AddError("provider", new ErrorMessage("msg"));
Assert.AreSame(inBetweenControl1, innerVC.TheValidationContainer);
Assert.AreSame(page, outerVC.TheValidationContainer);
Assert.AreEqual(1, innerVC.TheValidationContainer.ValidationErrors.GetErrors("provider").Count);
Assert.AreEqual(0, outerVC.TheValidationContainer.ValidationErrors.GetErrors("provider").Count);
}
[Test]
public void CanReadErrorsFromCrossValidationContainerByDefault()
{
// containment tree:
//
// Page : IValidationContainer
// - outerVC
// - inBetweenControl1 : IValidationContainer
// - innerVC
Spring.Web.UI.Page page = new Spring.Web.UI.Page();
Spring.Web.UI.UserControl userControl = new Spring.Web.UI.UserControl();
userControl.ID = "userControl";
TestValidationControl innerVC = new TestValidationControl();
userControl.Controls.Add(innerVC);
page.Controls.Add(userControl);
TestValidationControl outerVC = new TestValidationControl();
page.Controls.Add(outerVC);
userControl.ValidationErrors.AddError("provider", new ErrorMessage("msg"));
Assert.AreSame(userControl, innerVC.TheValidationContainer);
Assert.AreSame(page, outerVC.TheValidationContainer);
Assert.AreEqual(1, innerVC.TheValidationContainer.ValidationErrors.GetErrors("provider").Count);
Assert.AreEqual(0, outerVC.TheValidationContainer.ValidationErrors.GetErrors("provider").Count);
// test local-relative name resolution
outerVC.ValidationContainerName = "userControl";
Assert.AreEqual(1, outerVC.TheValidationContainer.ValidationErrors.GetErrors("provider").Count);
// test global name resolution
outerVC.ValidationContainerName = "::userControl";
Assert.AreEqual(1, outerVC.TheValidationContainer.ValidationErrors.GetErrors("provider").Count);
}
#region TestValidationControl
private class TestValidationControl : AbstractValidationControl