public void GetWebAnalytics()
        {
            IPageAssemblyInstruction pageAssemblyInfo = null;

            pageAssemblyInfo = InitializeTestPageAssemblyInfo();
            WebAnalyticsSettings webAnalyticsSettings = null;

            webAnalyticsSettings = pageAssemblyInfo.GetWebAnalytics();
            Assert.IsNotNull(webAnalyticsSettings);
            Assert.IsTrue(webAnalyticsSettings.Props.Count > 0);
            Assert.IsTrue(webAnalyticsSettings.Evars.Count > 0);
        }
        /// <summary>
        /// Uses the WebAnalyticsPageLoad helper class to render the required omniture java script
        /// for Web Analytics.
        /// </summary>
        /// <param name="output">HtmlTextWriter object</param>
        protected override void RenderContents(HtmlTextWriter output)
        {
            base.RenderContents(output);
            IPageAssemblyInstruction pgInstruction        = PageAssemblyContext.Current.PageAssemblyInstruction;
            WebAnalyticsSettings     webAnalyticsSettings = pgInstruction.GetWebAnalytics();
            string configChannelName = "";

            // If web analytics are present, create a new instance of WebAnalyticsPageload,
            // set its variables, and use those to draw the analytics HTML.
            if (webAnalyticsSettings != null)
            {
                WebAnalyticsPageLoad webAnalyticsPageLoad = new WebAnalyticsPageLoad();
                webAnalyticsPageLoad.SetLanguage(PageAssemblyContext.Current.PageAssemblyInstruction.GetField("language"));

                // Use pretty url to get channel name from the mapping, mapping information is in web.config
                string prettyUrl = pgInstruction.GetUrl("PrettyUrl").UriStem;
                if (!string.IsNullOrEmpty(prettyUrl))
                {
                    configChannelName = WebAnalyticsOptions.GetChannelForUrlPath(prettyUrl);
                }

                // Get the channel name from the section details. As of the cancer.gov Feline release, analytics channels
                // are set in the navons, not Web.config. The old functionality is being used in the catch block for now.
                try
                {
                    string        sectionPath = pgInstruction.SectionPath;
                    SectionDetail detail      = SectionDetailFactory.GetSectionDetail(sectionPath);
                    string        channelName = WebAnalyticsOptions.GetChannelsFromSectionDetail(detail);
                    webAnalyticsPageLoad.SetChannel(channelName);
                    webAnalyticsPageLoad.SetReportSuites(detail);
                }
                catch (Exception ex)
                {
                    log.Warn("RenderContents(): Error retrieving analytics channel.", ex);
                    webAnalyticsPageLoad.SetChannel(configChannelName);
                }

                foreach (KeyValuePair <WebAnalyticsOptions.eVars, string> kvp in webAnalyticsSettings.Evars)
                {
                    webAnalyticsPageLoad.AddEvar(kvp.Key, kvp.Value);
                }

                foreach (KeyValuePair <WebAnalyticsOptions.Events, string> kvp in webAnalyticsSettings.Events)
                {
                    webAnalyticsPageLoad.AddEvent(kvp.Key);
                }

                foreach (KeyValuePair <WebAnalyticsOptions.Props, string> kvp in webAnalyticsSettings.Props)
                {
                    webAnalyticsPageLoad.AddProp(kvp.Key, kvp.Value);
                }

                // Draw the control HTML based on the control ID
                switch (this.ID)
                {
                // Draw analytics HTML data element
                case "WebAnalyticsData":
                    webAnalyticsPageLoad.DrawAnalyticsDataTag(output);
                    break;

                // Draw s_code script block
                // This should NOT be used once DTM Analytics are in place
                case "WebAnalyticsControl1":
                case "WebAnalyticsLegacy":
                    output.Write(webAnalyticsPageLoad.Tag());
                    break;

                default:
                    break;
                }
            }
        }