Ejemplo n.º 1
0
 public void SavePreConsolidationInfo(PreCompilationReport preCompilationReport)
 {
     var xmlWriterSettings = new XmlWriterSettings
     {
         CloseOutput = true,
         Indent = true
     };
     using(var writer = XmlWriter.Create(_fileAccess.OpenWriter(_filePath), xmlWriterSettings))
     {
         using(writer.Document())
         {
             using (writer.Element("PreCompilationReport", version => preCompilationReport.Version))
             {
                 WriteResourceReport(writer, "scripts", preCompilationReport.Scripts);
                 WriteResourceReport(writer, "stylesheets", preCompilationReport.Stylesheets);
                 using(writer.Element("dependencies"))
                 {
                     foreach (var resourceWithDependency in preCompilationReport.Dependencies)
                     {
                         using (writer.Element("resource", path => resourceWithDependency.ResourcePath))
                         {
                             foreach (var dependency in resourceWithDependency.Dependencies)
                             {
                                 using (writer.Element("dependency", path => dependency)) {}
                             }
                         }
                     }
                 }
             }
         }
     }
 }
        public void WhenPreConsolidatedReportIsLoaded_ConsolidatedUrlsAreCachedAsThemselvesSoGroupsCanBeIncludedDirectly()
        {
            var groupTemplate = new Mock<IResourceGroupTemplate>();
            _context.ScriptGroups.Add(groupTemplate.Object);

            var preConsolidationReport = new PreCompilationReport();
            var scriptGroup = new PreCompiledResourceGroup
            {
                ConsolidatedUrl = "~/scripts/consolidated/common.js",
                Resources = new List<string>
                {
                     "~/scripts/myscript.js"
                }
            };
            preConsolidationReport.Scripts.Groups.Add(scriptGroup);

            _context.LoadPreCompilationReport(preConsolidationReport);

            var resolvedUrl = _context.ScriptPathResolver.GetMatchingGroupUrls("~/scripts/consolidated/common.js").Single();
            resolvedUrl.ShouldEqual("~/scripts/consolidated/common.js");

            //verify that the group template was not looked at (that proves the value came from the prepopulated cache)
            string consolidatedUrl;
            groupTemplate.Verify(t => t.TryGetConsolidatedUrl(It.IsAny<string>(), It.IsAny<ResourceMode>(), out consolidatedUrl), Times.Never());
        }
Ejemplo n.º 3
0
        public void SavePreConsolidationInfo(PreCompilationReport preCompilationReport)
        {
            var xmlWriterSettings = new XmlWriterSettings
            {
                CloseOutput = true,
                Indent      = true
            };

            using (var writer = XmlWriter.Create(_fileAccess.OpenWriter(_filePath), xmlWriterSettings))
            {
                using (writer.Document())
                {
                    using (writer.Element("PreCompilationReport", version => preCompilationReport.Version))
                    {
                        WriteResourceReport(writer, "scripts", preCompilationReport.Scripts);
                        WriteResourceReport(writer, "stylesheets", preCompilationReport.Stylesheets);
                        using (writer.Element("dependencies"))
                        {
                            foreach (var resourceWithDependency in preCompilationReport.Dependencies)
                            {
                                using (writer.Element("resource", path => resourceWithDependency.ResourcePath))
                                {
                                    foreach (var dependency in resourceWithDependency.Dependencies)
                                    {
                                        using (writer.Element("dependency", path => dependency)) {}
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 4
0
        public bool TryGetPreConsolidationInfo(out PreCompilationReport preCompilationReport)
        {
            if (!_fileAccess.Exists(_filePath))
            {
                preCompilationReport = null;
                return false;
            }

            preCompilationReport = new PreCompilationReport();
            XDocument document;
            using (var reader = _fileAccess.OpenReader(_filePath))
            {
                document = XDocument.Load(reader);
            }

            preCompilationReport.Version = (string) document.Root.Attribute("version");
            preCompilationReport.Scripts = CollectResourceReport(document.Root.Element("scripts"));
            preCompilationReport.Stylesheets = CollectResourceReport(document.Root.Element("stylesheets"));
            preCompilationReport.Dependencies = CollectDependencies(document.Root.Element("dependencies")).ToList();

            return true;
        }
Ejemplo n.º 5
0
        public bool TryGetPreConsolidationInfo(out PreCompilationReport preCompilationReport)
        {
            if (!_fileAccess.Exists(_filePath))
            {
                preCompilationReport = null;
                return(false);
            }

            preCompilationReport = new PreCompilationReport();
            XDocument document;

            using (var reader = _fileAccess.OpenReader(_filePath))
            {
                document = XDocument.Load(reader);
            }

            preCompilationReport.Version      = (string)document.Root.Attribute("version");
            preCompilationReport.Scripts      = CollectResourceReport(document.Root.Element("scripts"));
            preCompilationReport.Stylesheets  = CollectResourceReport(document.Root.Element("stylesheets"));
            preCompilationReport.Dependencies = CollectDependencies(document.Root.Element("dependencies")).ToList();

            return(true);
        }
        public void AfterPreConsolidatedReportIsLoaded_WhenUrlForFileThatDoesNotExistButWhosePatternMatchesGroup_ItsGroupUrlCanStillBeResolved()
        {
            var group = new ScriptGroupElement();
            group.ConsolidatedUrl = "~/scripts/consolidated/common.js";
            group.Include.AddPattern("~/scripts/.+");
            _context.ScriptGroups.Add(group);

            var preConsolidationReport = new PreCompilationReport();
            var scriptGroup = new PreCompiledResourceGroup
            {
                ConsolidatedUrl = "~/scripts/consolidated/common.js",
                Resources = new List<string>
                {
                     "~/scripts/myscript.js"
                }
            };
            preConsolidationReport.Scripts.Groups.Add(scriptGroup);

            _context.LoadPreCompilationReport(preConsolidationReport);

            var resolvedUrl = _context.ScriptPathResolver.GetMatchingGroupUrls("~/scripts/bogusscript.js").Single();
            resolvedUrl.ShouldEqual("~/scripts/consolidated/common.js");
        }
        public void WhenPreConsolidatedReportIsLoaded_DependenciesAreCachedSoThatDependencyProviderIsNotCalled()
        {
            var preConsolidationReport = new PreCompilationReport
            {
                Dependencies = new List<PreCompiledResourceDependencies>
                {
                    new PreCompiledResourceDependencies
                    {
                        ResourcePath = "~/scripts/myscript.js",
                        Dependencies = new List<string>
                        {
                            "~/scripts/jquery.js"
                        }
                    }
                }
            };
            _context.LoadPreCompilationReport(preConsolidationReport);

            var dependencies = _context.GetResourceDependencies("~/scripts/myscript.js");
            dependencies.CountShouldEqual(1);
            dependencies.First().ShouldEqual("~/scripts/jquery.js");

            _dependencyProvider.Verify(p => p.GetDependencies(It.IsAny<IResource>()), Times.Never());
        }
Ejemplo n.º 8
0
 public void SavePreConsolidationInfo(PreCompilationReport preCompilationReport)
 {
 }
        public void WhenPreConsolidationReportIsLoaded_VersionIsSet()
        {
            var preConsolidationReport = new PreCompilationReport
            {
                Version = "311"
            };
            _context.LoadPreCompilationReport(preConsolidationReport);

            _context.Version.ShouldEqual("311");
        }
        public void WhenPreConsolidationReportIsLoaded_PreConsolidatedFlagIsSetToTrue()
        {
            var preConsolidationReport = new PreCompilationReport();
            _context.LoadPreCompilationReport(preConsolidationReport);

            _context.PreCompiled.ShouldBeTrue();
        }
Ejemplo n.º 11
0
        public void WhenReportIsSaved_ItCanBeRetrievedWithIdenticalData()
        {
            var report = new PreCompilationReport
            {
                Scripts = new PreCompiledResourceReport
                {
                    Groups = new List <PreCompiledResourceGroup>
                    {
                        new PreCompiledResourceGroup
                        {
                            ConsolidatedUrl = "~/scripts/consolidated/common.js",
                            Resources       = new List <string>
                            {
                                "~/scripts/jquery.js",
                                "~/scripts/myscript1.js"
                            }
                        },
                        new PreCompiledResourceGroup
                        {
                            ConsolidatedUrl = "~/scripts/consolidated/search.js",
                            Resources       = new List <string>
                            {
                                "~/Views/Search/Index.js"
                            }
                        }
                    },
                    SingleResources = new List <PreCompiledSingleResource>
                    {
                        new PreCompiledSingleResource
                        {
                            OriginalPath = "~/unconsolidatedfile1.js",
                            CompiledPath = "~/unconsolidatedfile1.min.js"
                        },
                        new PreCompiledSingleResource
                        {
                            OriginalPath = "~/unconsolidatedfile2.js",
                            CompiledPath = "~/unconsolidatedfile2.min.js"
                        }
                    }
                },
                Stylesheets = new PreCompiledResourceReport
                {
                    Groups = new List <PreCompiledResourceGroup>
                    {
                        new PreCompiledResourceGroup
                        {
                            ConsolidatedUrl = "~/Content/consolidated.css",
                            Resources       = new List <string>
                            {
                                "~/Content/Site.css",
                                "~/Views/Search/Search.css"
                            }
                        }
                    }
                },
                Dependencies = new List <PreCompiledResourceDependencies>
                {
                    new PreCompiledResourceDependencies
                    {
                        ResourcePath = "~/scripts/myscript1.js",
                        Dependencies = new List <string>
                        {
                            "~/scripts/jquery.js"
                        }
                    },
                    new PreCompiledResourceDependencies
                    {
                        ResourcePath = "~/Views/Search/Index.js",
                        Dependencies = new List <string>
                        {
                            "~/scripts/jquery.js",
                            "~/scripts/myscript1.js"
                        }
                    }
                },
                Version = "321"
            };

            _persister.SavePreConsolidationInfo(report);

            PreCompilationReport deserializedReport;

            _persister.TryGetPreConsolidationInfo(out deserializedReport).ShouldBeTrue();

            ResourceReportShouldBeEqual(report.Scripts, deserializedReport.Scripts);
            ResourceReportShouldBeEqual(report.Stylesheets, deserializedReport.Stylesheets);
            ResourceDependenciesShouldBeEqual(report.Dependencies, deserializedReport.Dependencies);
            report.Version.ShouldEqual(deserializedReport.Version);
        }
Ejemplo n.º 12
0
 public bool TryGetPreConsolidationInfo(out PreCompilationReport preCompilationReport)
 {
     preCompilationReport = null;
     return false;
 }
Ejemplo n.º 13
0
 public void SavePreConsolidationInfo(PreCompilationReport preCompilationReport)
 {
 }
Ejemplo n.º 14
0
        public void WhenReportIsSaved_ItCanBeRetrievedWithIdenticalData()
        {
            var report = new PreCompilationReport
            {
                Scripts = new PreCompiledResourceReport
                {
                    Groups = new List<PreCompiledResourceGroup>
                    {
                        new PreCompiledResourceGroup
                        {
                            ConsolidatedUrl = "~/scripts/consolidated/common.js",
                            Resources = new List<string>
                            {
                                "~/scripts/jquery.js",
                                "~/scripts/myscript1.js"
                            }
                        },
                        new PreCompiledResourceGroup
                        {
                            ConsolidatedUrl = "~/scripts/consolidated/search.js",
                            Resources = new List<string>
                            {
                                "~/Views/Search/Index.js"
                            }
                        }
                    },
                    SingleResources = new List<PreCompiledSingleResource>
                    {
                        new PreCompiledSingleResource
                        {
                            OriginalPath = "~/unconsolidatedfile1.js",
                            CompiledPath = "~/unconsolidatedfile1.min.js"
                        },
                        new PreCompiledSingleResource
                        {
                            OriginalPath = "~/unconsolidatedfile2.js",
                            CompiledPath = "~/unconsolidatedfile2.min.js"
                        }
                    }
                },
                Stylesheets = new PreCompiledResourceReport
                {
                    Groups = new List<PreCompiledResourceGroup>
                    {
                        new PreCompiledResourceGroup
                        {
                            ConsolidatedUrl = "~/Content/consolidated.css",
                            Resources = new List<string>
                            {
                                "~/Content/Site.css",
                                "~/Views/Search/Search.css"
                            }
                        }
                    }
                },
                Dependencies = new List<PreCompiledResourceDependencies>
                {
                    new PreCompiledResourceDependencies
                    {
                        ResourcePath = "~/scripts/myscript1.js",
                        Dependencies = new List<string>
                        {
                            "~/scripts/jquery.js"
                        }
                    },
                    new PreCompiledResourceDependencies
                    {
                        ResourcePath = "~/Views/Search/Index.js",
                        Dependencies = new List<string>
                        {
                            "~/scripts/jquery.js",
                            "~/scripts/myscript1.js"
                        }
                    }
                },
                Version = "321"
            };

            _persister.SavePreConsolidationInfo(report);

            PreCompilationReport deserializedReport;
            _persister.TryGetPreConsolidationInfo(out deserializedReport).ShouldBeTrue();

            ResourceReportShouldBeEqual(report.Scripts, deserializedReport.Scripts);
            ResourceReportShouldBeEqual(report.Stylesheets, deserializedReport.Stylesheets);
            ResourceDependenciesShouldBeEqual(report.Dependencies, deserializedReport.Dependencies);
            report.Version.ShouldEqual(deserializedReport.Version);
        }
Ejemplo n.º 15
0
 public void LoadPreCompilationReport(PreCompilationReport preCompilationReport)
 {
     _scriptGroups = new PreCompiledGroupManager(preCompilationReport.Scripts, _scriptGroups);
     _styleGroups = new PreCompiledGroupManager(preCompilationReport.Stylesheets, _styleGroups);
     _dependencyManager.SetCache(new PreCompiledDependencyCache(preCompilationReport.Dependencies));
     _scriptPathResolver = new ResourcePathResolver(_scriptGroups, _dependencyManager, _finder);
     _stylePathResolver = new ResourcePathResolver(_styleGroups, _dependencyManager, _finder);
     Version = preCompilationReport.Version;
     PreCompiled = true;
 }
Ejemplo n.º 16
0
 public void SavePreConsolidationReport(PreCompilationReport report)
 {
     var preConsolidationPersister = CompiledFilePersister.ForWebDirectory(RootFilePath);
     preConsolidationPersister.SavePreConsolidationInfo(report);
 }
Ejemplo n.º 17
0
 public bool TryGetPreConsolidationInfo(out PreCompilationReport preCompilationReport)
 {
     preCompilationReport = null;
     return(false);
 }