#region License
/*
* Copyright 2002-2007 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#endregion
#region Imports
using System;
using System.IO;
using System.Web;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using NUnit.Framework;
using Spring.TestSupport;
#endregion
namespace Spring.Web.UI.Controls{
/// <summary>
/// Tests behaviour of the <Head> server control
/// </summary>
/// <author>Erich Eichinger</author>
[TestFixture]
public class HeadTests
{
private const string CRLF = "\r\n";
#if NET_2_0
[Test]
public void DontRenderHeadTagIfNestedWithinStandardHeadControl()
{
using (new TestWebContext("/", "testpage.aspx"))
{
TestPage page = new TestPage(HttpContext.Current);
HtmlHead htmlHead = new HtmlHead();
Head head = new Head();
head.Controls.Add(new LiteralControl("literal child"));
htmlHead.Controls.Add(head);
page.Controls.Add(htmlHead);
// initialize page to force head control initialization
page.InitRecursive(null);
string result = page.Render(string.Empty);
string expect = @"<head>literal child<title></title></head>";
Assert.AreEqual(expect, result);
}
}
#endif
[Test]
public void StyleBlockRendersTypeAttribute()
{
TestPage page = new TestPage();
Head head = new Head();
page.Controls.Add(head);
page.Styles.Add("stylename", "stylevalue");
string result = page.Render(string.Empty);
string expect = @"<head><style type=""text/css"">stylename { stylevalue }</style></head>";
Assert.AreEqual(expect, result);
}
[Test]
public void StyleFileRendersTypeAttributeAndUsesCssRootPath()
{
const string STYLESHEETPATH = "filepath";
using (new TestWebContext("/", "testpage.aspx"))
{
TestPage page = new TestPage(HttpContext.Current);
Head head = new Head();
page.Controls.Add(head);
page.CssRoot = "testcssroot";
page.StyleFiles.Add("filename", STYLESHEETPATH);
string result = page.Render(string.Empty);
string expect = string.Format(@"<head><link rel=""stylesheet"" type=""text/css"" href=""/testcssroot/{0}"" /></head>", STYLESHEETPATH);
Assert.AreEqual(expect, result);
}
}
[Test]
public void ScriptBlockRendersTypeAttribute()
{
TestPage page = new TestPage();
Head head = new Head();
page.Controls.Add(head);
page.RegisterHeadScriptBlock( "scriptname", "scriptcode" );
string result = page.Render(string.Empty);
string expect = @"<head><script type=""text/javascript"">scriptcode</script></head>";
Assert.AreEqual(expect, result);
}
[Test]
public void ScriptEventRendersTypeAttribute()
{
TestPage page = new TestPage();
Head head = new Head();
page.Controls.Add(head);
page.RegisterHeadScriptEvent("scriptname", "elementname", "eventname", "scriptcode");
string result = page.Render(string.Empty);
string expect = @"<head><script type=""text/javascript"" for=""elementname"" event=""eventname"">scriptcode</script></head>";
Assert.AreEqual(expect, result);
}
[Test]
public void ScriptFileRendersTypeAttributeAndUsesScriptsRootPath()
{
const string SCRIPTFILEPATH = "filepath";
using (new TestWebContext("/", "testpage.aspx"))
{
TestPage page = new TestPage(HttpContext.Current);
Head head = new Head();
page.Controls.Add(head);
page.ScriptsRoot = "testscriptroot";
page.RegisterHeadScriptFile("filename", SCRIPTFILEPATH);
string result = page.Render(string.Empty);
string expect = string.Format(@"<head><script type=""text/javascript"" src=""/testscriptroot/{0}""></script></head>", SCRIPTFILEPATH);
Assert.AreEqual(expect, result);
}
}
[Test]
public void RenderChildrenFirst()
{
TestPage page = new TestPage();
Head head = new Head();
page.Controls.Add(head);
head.Controls.Add(new LiteralControl("literal child"));
page.Styles.Add("stylename", "stylevalue");
string result = page.Render(string.Empty);
string expect = @"<head>literal child<style type=""text/css"">stylename { stylevalue }</style></head>";
Assert.AreEqual( expect, result);
}
}
}
|