public void GetVirtualPath_IPageTemplate_ReturnsNull()
        {
            // Arrange
            var resolver = new LayoutResolver();
            var dummyPageTemplate = new DummyFrameworkSpecificPageTemplate(PageTemplateFramework.Mvc);

            using (var objFactory = new ObjectFactoryContainerRegion())
            {
                ObjectFactory.Container.RegisterType<ConfigManager, ConfigManager>(typeof(XmlConfigProvider).Name.ToUpperInvariant(), new InjectionConstructor(typeof(XmlConfigProvider).Name));
                ObjectFactory.Container.RegisterType<XmlConfigProvider, DummyConfigProvider>();
                
                Config.RegisterSection<VirtualPathSettingsConfig>();
                Config.RegisterSection<ControlsConfig>();

                VirtualPathManager.AddVirtualFileResolver<DummyVirtualFileResolver>(TestVp, "DummyVirtualFileResolver");

                // Act
                try
                {
                    string resolvedVirtualPath = resolver.GetVirtualPath(dummyPageTemplate);

                    // Assert
                    Assert.IsNull(resolvedVirtualPath, "Resolved VirtualPath should be null.");
                }
                finally
                {
                    VirtualPathManager.RemoveVirtualFileResolver(TestVp);
                }
            }
        }
        public void GetVirtualPath_InvalidCharacters_ReturnsCleanVirtualPath()
        {
            //Arrange
            string dirtyTitle = "Some<>*Test:?Title";
            string cleanVirtualPath = "~/SfLayouts/Some_Test_Title.master";
            string resolvedVirtualPath;
            LayoutResolver resolver = new LayoutResolver();

            using (var objFactory = new ObjectFactoryContainerRegion())
            {
                ObjectFactory.Container.RegisterType<ConfigManager, ConfigManager>(typeof(XmlConfigProvider).Name.ToUpperInvariant(),
                    new InjectionConstructor(typeof(XmlConfigProvider).Name));
                ObjectFactory.Container.RegisterType<XmlConfigProvider, DummyConfigProvider>();
                Config.RegisterSection<VirtualPathSettingsConfig>();
                Config.RegisterSection<ControlsConfig>();
                VirtualPathManager.AddVirtualFileResolver<DummyVirtualFileResolver>(LayoutResolverTests.testVp, "DummyVirtualFileResolver");

                var dummyPageTemplate = new DummyPageTemplateWithTitle(PageTemplateFramework.Mvc, dirtyTitle);

                //Act
                try
                {
                    resolvedVirtualPath = resolver.GetVirtualPath(dummyPageTemplate);

                    //Assert
                    Assert.AreEqual(cleanVirtualPath, resolvedVirtualPath, "GetVirtualPath method doesn't return correct string.");
                }
                finally
                {
                    VirtualPathManager.RemoveVirtualFileResolver(LayoutResolverTests.testVp);
                }
            }
        }
        public void GetVirtualPath_HybridModeTemplate_ReturnsEmptyVirtualPath()
        {
            // Arrange
            var resolver = new LayoutResolver();
            var dummyPageTemplate = new DummyFrameworkSpecificPageTemplate(PageTemplateFramework.Hybrid);

            // Act
            var resolvedVirtualPath = resolver.GetVirtualPath(dummyPageTemplate);

            // Assert
            Assert.IsNull(resolvedVirtualPath, "The resolved virtual path should be null when the page template is not in MVC mode.");
        }