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 }; }
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); }
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"); }
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); }