示例#1
0
        public void Init()
        {
            _now          = DateTime.Now;
            _lastModified = _now.AddYears(-1);
            var resources = new ResourceCollection
            {
                CreateResource("Content1", _lastModified.AddDays(-3)),
                CreateResource("Content2", _lastModified),
                CreateResource("Content3", _lastModified.AddDays(-10))
            };

            _finder = new Mock <IResourceFinder>();
            _finder.Setup(f => f.FindResources(_resourceType)).Returns(resources);

            var groupTemplate = new StubResourceGroupTemplate(new ResourceGroup(VirtualPath, resources));

            groupTemplate.ResourceType = _resourceType;

            var configContext = new AssmanContext(ResourceMode.Debug);

            configContext.AddFinder(_finder.Object);

            _instance = new DynamicallyConsolidatedResourceHandler(VirtualPath, configContext.GetCompiler(), groupTemplate.WithEmptyContext())
            {
                Now = () => _now
            };
        }
示例#2
0
        public void ConsolidateGroupSortsResourcesByDependencies()
        {
            var dependencyLeaf1         = _context.CreateResource("~/dependency-leaf1.js").Resource;
            var dependencyLeaf2         = _context.CreateResource("~/dependency-leaf2.js").Resource;
            var dependencyRoot3         = _context.CreateResource("~/dependency-root3.js").Resource;
            var dependencyRoot1         = StubResource.WithPath("~/dependency-root1.js");
            var dependencyRoot1Minified = _context.CreateResource("~/dependency-root1.min.js").Resource;
            var dependencyBranch1       = _context.CreateResource("~/dependency-branch1.js").Resource;
            var dependencyLeaf5         = _context.CreateResource("~/dependency-leaf5.js").Resource;
            var dependencyRoot2         = _context.CreateResource("~/dependency-root2.js").Resource;
            var dependencyBranch2       = _context.CreateResource("~/dependency-branch2.js").Resource;
            var dependencyLeaf4         = _context.CreateResource("~/dependency-leaf4.js").Resource;
            var dependencyLeaf3         = _context.CreateResource("~/dependency-leaf3.js").Resource;


            var group = new ResourceGroup("~/consolidated.js", new IResource[]
            {
                dependencyLeaf1,
                dependencyLeaf2,
                dependencyRoot1.ExternallyCompiledWith(dependencyRoot1Minified, ResourceMode.Release),
                dependencyRoot2,
                dependencyBranch1,
                dependencyLeaf3,
                dependencyRoot3,
                dependencyBranch2,
                dependencyLeaf4,
                dependencyLeaf5
            });

            var groupTemplate = new StubResourceGroupTemplate(group);

            groupTemplate.ResourceType = ResourceType.Script;

            _context.AddGlobalScriptDependencies(dependencyRoot1, dependencyRoot2, dependencyRoot3);
            _context.DependencyProvider.SetDependencies(dependencyBranch2, dependencyBranch1.VirtualPath);
            _context.DependencyProvider.SetDependencies(dependencyLeaf1, dependencyBranch1.VirtualPath);
            _context.DependencyProvider.SetDependencies(dependencyLeaf2, dependencyBranch1.VirtualPath);
            _context.DependencyProvider.SetDependencies(dependencyLeaf3, dependencyBranch2.VirtualPath);
            _context.DependencyProvider.SetDependencies(dependencyLeaf4, dependencyBranch2.VirtualPath);
            _context.DependencyProvider.SetDependencies(dependencyLeaf5, dependencyBranch1.VirtualPath, dependencyBranch2.VirtualPath);

            var consolidatedResource = _compiler.CompileGroup(group);
            var resources            = consolidatedResource.Resources.ToList();

            resources[0].VirtualPath.ShouldEqual(dependencyRoot1.VirtualPath);
            resources[1].VirtualPath.ShouldEqual(dependencyRoot2.VirtualPath);
            resources[2].VirtualPath.ShouldEqual(dependencyRoot3.VirtualPath);
            resources[3].VirtualPath.ShouldEqual(dependencyBranch1.VirtualPath);
            resources[4].VirtualPath.ShouldEqual(dependencyLeaf1.VirtualPath);
            resources[5].VirtualPath.ShouldEqual(dependencyLeaf2.VirtualPath);
            resources[6].VirtualPath.ShouldEqual(dependencyBranch2.VirtualPath);
            resources[7].VirtualPath.ShouldEqual(dependencyLeaf3.VirtualPath);
            resources[8].VirtualPath.ShouldEqual(dependencyLeaf4.VirtualPath);
            resources[9].VirtualPath.ShouldEqual(dependencyLeaf5.VirtualPath);
        }
示例#3
0
        public void WhenConsolidatedUrlMatchesPatternOfAGroup_ItIsNotIncludedInTheConsolidatedResource()
        {
            var jquery      = StubResource.WithPath("~/scripts/jquery.js");
            var component   = StubResource.WithPath("~/scripts/component.js");
            var core        = StubResource.WithPath("~/scripts/core.js");
            var otherscript = StubResource.WithPath("~/scripts/otherscript.js");

            var finder = new StubResourceFinder();

            finder.AddResources(jquery, component, core, otherscript);

            var group1 = new ResourceGroup("~/scripts/core.js", new IResource[]
            {
                jquery,
                component
            });
            var group2 = new ResourceGroup("~/scripts/everything-else.js", new IResource[]
            {
                core,
                otherscript
            });

            _context.AddFinder(finder);
            var group1Template = new StubResourceGroupTemplate(group1)
            {
                ResourceType = ResourceType.Script
            };
            var group2Template = new StubResourceGroupTemplate(group2)
            {
                ResourceType = ResourceType.Script
            };

            _context.ScriptGroups.Add(group1Template);
            _context.ScriptGroups.Add(group2Template);
            var consolidator           = _context.GetConsolidator();
            var preConsolidationReport = consolidator.CompileAll((resource) => { });

            var group2Consolidated = preConsolidationReport.Scripts.Groups.Where(g => g.ConsolidatedUrl == "~/scripts/everything-else.js").Single();

            group2Consolidated.Resources.CountShouldEqual(1);
            group2Consolidated.Resources[0].ShouldEqual("~/scripts/otherscript.js");
        }
示例#4
0
        public void ConsolidateGroupExcludesResourcesMatchingGivenExcludeFilter()
        {
            var group = _context.CreateGroup("~/consolidated.js");

            _context.CreateResource("~/file1.js")
            .InGroup(group);
            _context.CreateResource("~/file2.js")
            .InGroup(group);
            _context.CreateResource("~/file3.js")
            .InGroup(group);

            var groupTemplate = new StubResourceGroupTemplate(group);

            groupTemplate.ResourceType = ResourceType.Script;

            var excludeFilter        = ToFilter(r => r.VirtualPath.Contains("file2"));
            var consolidatedResource = _compiler.CompileGroup(group.ConsolidatedUrl, groupTemplate.WithContext(excludeFilter));

            consolidatedResource.ShouldNotBeNull();
            consolidatedResource.Resources.Count().ShouldEqual(2);
        }