a575963da9
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
136 lines
6.7 KiB
C#
136 lines
6.7 KiB
C#
// Copyright (c) Microsoft Corporation. All rights reserved. See License.txt in the project root for license information.
|
|
|
|
using System.Web.TestUtil;
|
|
using Xunit;
|
|
|
|
namespace Microsoft.Web.Helpers.Test
|
|
{
|
|
/// <summary>
|
|
///This is a test class for AnalyticsTest and is intended
|
|
///to contain all AnalyticsTest Unit Tests
|
|
///</summary>
|
|
public class AnalyticsTest
|
|
{
|
|
/// <summary>
|
|
///A test for GetYahooAnalyticsHtml
|
|
///</summary>
|
|
[Fact]
|
|
public void GetYahooAnalyticsHtmlTest()
|
|
{
|
|
string account = "My_yahoo_account";
|
|
string actual = Analytics.GetYahooHtml(account).ToString();
|
|
Assert.True(actual.Contains(".yahoo.com") && actual.Contains("My_yahoo_account"));
|
|
}
|
|
|
|
/// <summary>
|
|
///A test for GetStatCounterAnalyticsHtml
|
|
///</summary>
|
|
[Fact]
|
|
public void GetStatCounterAnalyticsHtmlTest()
|
|
{
|
|
int project = 31553;
|
|
string security = "stat_security";
|
|
string actual = Analytics.GetStatCounterHtml(project, security).ToString();
|
|
Assert.True(actual.Contains("statcounter.com/counter/counter_xhtml.js") &&
|
|
actual.Contains(project.ToString()) && actual.Contains(security));
|
|
}
|
|
|
|
/// <summary>
|
|
///A test for GetGoogleAnalyticsHtml
|
|
///</summary>
|
|
[Fact]
|
|
public void GetGoogleAnalyticsHtmlTest()
|
|
{
|
|
string account = "My_google_account";
|
|
string actual = Analytics.GetGoogleHtml(account).ToString();
|
|
Assert.True(actual.Contains("google-analytics.com/ga.js") && actual.Contains("My_google_account"));
|
|
}
|
|
|
|
[Fact]
|
|
public void GetGoogleAnalyticsEscapesJavascript()
|
|
{
|
|
string account = "My_\"google_account";
|
|
string actual = Analytics.GetGoogleHtml(account).ToString();
|
|
string expected = "<script type=\"text/javascript\">\n" +
|
|
"var gaJsHost = ((\"https:\" == document.location.protocol) ? \"https://ssl.\" : \"http://www.\");\n" +
|
|
"document.write(unescape(\"%3Cscript src='\" + gaJsHost + \"google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E\"));\n" +
|
|
"</script>\n" +
|
|
"<script type=\"text/javascript\">\n" +
|
|
"try{\n" +
|
|
"var pageTracker = _gat._getTracker(\"My_\\\"google_account\");\n" +
|
|
"pageTracker._trackPageview();\n" +
|
|
"} catch(err) {}\n" +
|
|
"</script>\n";
|
|
UnitTestHelper.AssertEqualsIgnoreWhitespace(expected, actual);
|
|
}
|
|
|
|
[Fact]
|
|
public void GetGoogleAnalyticsAsyncHtmlTest()
|
|
{
|
|
string account = "My_google_account";
|
|
string actual = Analytics.GetGoogleAsyncHtml(account).ToString();
|
|
Assert.True(actual.Contains("google-analytics.com/ga.js") && actual.Contains("My_google_account"));
|
|
}
|
|
|
|
[Fact]
|
|
public void GetGoogleAnalyticsAsyncHtmlEscapesJavaScript()
|
|
{
|
|
string account = "My_\"google_account";
|
|
string actual = Analytics.GetGoogleAsyncHtml(account).ToString();
|
|
string expected = "<script type=\"text/javascript\">\n" +
|
|
"var _gaq = _gaq || [];\n" +
|
|
"_gaq.push(['_setAccount', 'My_\\\"google_account']);\n" +
|
|
"_gaq.push(['_trackPageview']);\n" +
|
|
"(function() {\n" +
|
|
"var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\n" +
|
|
"ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';\n" +
|
|
"var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\n" +
|
|
"})();\n" +
|
|
"</script>\n";
|
|
UnitTestHelper.AssertEqualsIgnoreWhitespace(expected, actual);
|
|
}
|
|
|
|
[Fact]
|
|
public void GetYahooAnalyticsEscapesJavascript()
|
|
{
|
|
string account = "My_\"yahoo_account";
|
|
string actual = Analytics.GetYahooHtml(account).ToString();
|
|
string expected = "<script type=\"text/javascript\">\n" +
|
|
"window.ysm_customData = new Object();\n" +
|
|
"window.ysm_customData.conversion = \"transId=,currency=,amount=\";\n" +
|
|
"var ysm_accountid = \"My_\\\"yahoo_account\";\n" +
|
|
"document.write(\"<SCR\" + \"IPT language='JavaScript' type='text/javascript' \"\n" +
|
|
"+ \"SRC=//\" + \"srv3.wa.marketingsolutions.yahoo.com\" + \"/script/ScriptServlet\" + \"?aid=\" + ysm_accountid\n" +
|
|
"+ \"></SCR\" + \"IPT>\");\n" +
|
|
"</script>\n";
|
|
UnitTestHelper.AssertEqualsIgnoreWhitespace(expected, actual);
|
|
}
|
|
|
|
[Fact]
|
|
public void GetStatCounterAnalyticsEscapesCorrectly()
|
|
{
|
|
string account = "My_\"stat_account";
|
|
string actual = Analytics.GetStatCounterHtml(2, account).ToString();
|
|
string expected = "<script type=\"text/javascript\">\n" +
|
|
"var sc_project=2;\n" +
|
|
"var sc_invisible=1;\n" +
|
|
"var sc_security=\"My_\\\"stat_account\";\n" +
|
|
"var sc_text=2;\n" +
|
|
"var sc_https=1;\n" +
|
|
"var scJsHost = ((\"https:\" == document.location.protocol) ? \"https://secure.\" : \"http://www.\");\n" +
|
|
"document.write(\"<sc\" + \"ript type='text/javascript' src='\" + " +
|
|
"scJsHost + \"statcounter.com/counter/counter_xhtml.js'></\" + \"script>\");\n" +
|
|
"</script>\n\n" +
|
|
"<noscript>" +
|
|
"<div class=\"statcounter\">" +
|
|
"<a title=\"tumblrstatistics\" class=\"statcounter\" href=\"http://www.statcounter.com/tumblr/\">" +
|
|
"<img class=\"statcounter\" src=\"https://c.statcounter.com/2/0/My_"stat_account/1/\" alt=\"tumblr statistics\"/>" +
|
|
"</a>" +
|
|
"</div>" +
|
|
"</noscript>";
|
|
|
|
UnitTestHelper.AssertEqualsIgnoreWhitespace(expected, actual);
|
|
}
|
|
}
|
|
}
|