static void CreateFieldTemplate_OnLoad_2 (Page p) { MetaModel m = MetaModel.Default; MetaTable t = m.GetTable ("EmployeeTable"); MetaColumn mc = t.GetColumn ("FirstName"); var ftf = new FieldTemplateFactory (); // Without this, the class will fail miserably by passing invalid virtual path to internal .NET's // mapping routines... ftf.Initialize (m); IFieldTemplate template = ftf.CreateFieldTemplate (mc, DataBoundControlMode.ReadOnly, null); Assert.IsNotNull (template, "#A1"); var ftuc = template as FieldTemplateUserControl; Assert.IsNotNull (ftuc, "#A2"); Assert.AreEqual (ftf.TemplateFolderVirtualPath + "Text.ascx", ftuc.AppRelativeVirtualPath, "#A2-1"); template = ftf.CreateFieldTemplate (mc, DataBoundControlMode.ReadOnly, "Boolean"); Assert.IsNotNull (template, "#B1"); ftuc = template as FieldTemplateUserControl; Assert.IsNotNull (ftuc, "#B2"); Assert.AreEqual (ftf.TemplateFolderVirtualPath + "Boolean.ascx", ftuc.AppRelativeVirtualPath, "#B2-2"); template = ftf.CreateFieldTemplate (mc, DataBoundControlMode.ReadOnly, "NoSuchTemplate"); Assert.IsNotNull (template, "#D1"); ftuc = template as FieldTemplateUserControl; Assert.IsNotNull (ftuc, "#D2"); Assert.AreEqual (ftf.TemplateFolderVirtualPath + "Text.ascx", ftuc.AppRelativeVirtualPath, "#D2-2"); template = ftf.CreateFieldTemplate (mc, DataBoundControlMode.ReadOnly, "MyCustomUIHintTemplate_Text"); Assert.IsNotNull (template, "#E1"); ftuc = template as FieldTemplateUserControl; Assert.IsNotNull (ftuc, "#E2"); Assert.AreEqual (ftf.TemplateFolderVirtualPath + "MyCustomUIHintTemplate_Text.ascx", ftuc.AppRelativeVirtualPath, "#E2-2"); mc = t.GetColumn ("FavoriteColor"); AssertExtensions.Throws<HttpException> (() => { template = ftf.CreateFieldTemplate (mc, DataBoundControlMode.ReadOnly, "PlainControlTemplate"); }, "#F1"); mc = t.GetColumn ("FavoriteColor"); template = ftf.CreateFieldTemplate (mc, DataBoundControlMode.ReadOnly, "CustomColor"); Assert.IsNotNull (template, "#G1"); ftuc = template as FieldTemplateUserControl; Assert.IsNotNull (ftuc, "#G2"); Assert.AreEqual (ftf.TemplateFolderVirtualPath + "CustomColor.ascx", ftuc.AppRelativeVirtualPath, "#G2-2"); }
public void CreateFieldTemplate () { // This test is (sort of) bogus as the .NET code completely falls apart when invoked outside // real web request environment. Talk about code testability... // // Most of the exceptions thrown below come from methods other than CreateFieldTemplate MetaModel m = Utils.CommonInitialize (); MetaTable t = m.Tables[TestDataContext.TableBaz]; MetaColumn mc = t.GetColumn ("Column1"); var ftf = new FieldTemplateFactory (); // And here we go again... AssertExtensions.Throws<NullReferenceException> (() => { ftf.CreateFieldTemplate (null, DataBoundControlMode.ReadOnly, "Integer.ascx"); }, "#A1"); #if TARGET_DOTNET // Not going to emulate those on Mono. There are limits... // ...and again AssertExtensions.Throws<NullReferenceException> (() => { ftf.CreateFieldTemplate (mc, DataBoundControlMode.ReadOnly, null); }, "#A2"); // ...and again AssertExtensions.Throws<NullReferenceException> (() => { ftf.CreateFieldTemplate (mc, DataBoundControlMode.ReadOnly, String.Empty); }, "#A3"); // ...and again AssertExtensions.Throws<NullReferenceException> (() => { ftf.CreateFieldTemplate (mc, DataBoundControlMode.ReadOnly, "NoSuchTemplate"); }, "#A4"); #endif }