public ProcessedResourceGroupInfo ProcessResource(ResourceElementGroup resourceElementGroup, CompressionType compressionType)
        {
            if (resourceElementGroup == null) throw new ArgumentNullException("resourceElementGroup");

            int cacheDuration = resourceElementGroup.CacheDuration > 0 ? resourceElementGroup.CacheDuration : 60;
            return m_ResourceCacher.GetOrAddCachedResource(resourceElementGroup.ResourceType, resourceElementGroup.Name, compressionType,
                                                           () => ProcessResource(compressionType, resourceElementGroup, resourceElementGroup.ResourceType),
                                                           TimeSpan.FromMinutes(cacheDuration));
        }
        internal ProcessedResourceGroupInfo ProcessResource(CompressionType compressionType, ResourceElementGroup resourceElementGroup, ResourceType resourceType)
        {
            ProcessedResourceGroupInfo resourceGroupInfo = new ProcessedResourceGroupInfo();
            IList<ResourceReadInfo> resources = ReadResources(resourceType, resourceElementGroup.Resources);

            string combinedContent = MinifyAndCombineResources(resourceElementGroup, resourceType, resources);
            resourceGroupInfo.Hash = m_ResourceHasher.HashContent(combinedContent);
            resourceGroupInfo.DependentFiles = CalculateDependentFiles(resources);
            resourceGroupInfo.LastModifyDate = CalculateLastModifyDate(resources);
            resourceGroupInfo.Content = CompressContent(compressionType, combinedContent);
            return resourceGroupInfo;
        }
 private static string GetDebugScript(ResourceElementGroup resourceElementGroup, string embeddedFileFormat, string fsFileFormat)
 {
     StringBuilder scriptBuilder = new StringBuilder();
     for (int i = 0; i < resourceElementGroup.Resources.Count; i++)
     {
         ResourceElement resourceElement = resourceElementGroup.Resources[i];
         if (resourceElement.IsEmbeddedResource)
         {
             scriptBuilder.AppendFormat(CultureInfo.CurrentCulture, embeddedFileFormat, resourceElementGroup.Name, resourceElement.FileName);
         }
         else
         {
             string path = VirtualPathUtility.ToAbsolute(resourceElement.FileName);
             scriptBuilder.AppendFormat(CultureInfo.CurrentCulture, fsFileFormat, path);
         }
     }
     return scriptBuilder.ToString();
 }
 private static Mock<IResourceConfigurationProvider> CreateWebResourceConfigurationMock(ResourceElementGroup resourceElementGroup)
 {
     Mock<IResourceConfigurationProvider> webResourceConfigurationMock = new Mock<IResourceConfigurationProvider>();
     webResourceConfigurationMock.Setup(x => x.GetResourceElementGroup(resourceElementGroup.ResourceType, resourceElementGroup.Name)).Returns(() => resourceElementGroup);
     return webResourceConfigurationMock;
 }
        private static Mock<HttpContextBase> HandleResource(string resourceGroupName, string fileName, ResourceType resourceType, bool compress, HttpRequestBase httpRequest, HttpResponseBase httpResponseStub, ProcessedResourceGroupInfo processedResourceGroupInfo, HttpResponseCacher httpResponseCacher, HttpResponseCompressor httpResponseCompressor)
        {
            ResourceElementGroup resourceElementGroup = new ResourceElementGroup
                {
                    Name = resourceGroupName,
                    ResourceType = resourceType,
                    Compress = compress,
                    Resources = new ResourceElementCollection {new ResourceElement {FileName = fileName}}
                };
            Mock<IResourceConfigurationProvider> webResourceConfigurationMock = CreateWebResourceConfigurationMock(resourceElementGroup);
            Mock<HttpContextBase> httpContextBaseMock = HttpContextMockHelper.CreateHttpContext(httpResponseStub, httpRequest);

            Mock<IResourceProcessor> resourceProcessorMock = new Mock<IResourceProcessor>();
            resourceProcessorMock.Setup(x => x.ProcessResource(resourceElementGroup, It.IsAny<CompressionType>()))
                                 .Returns(() => processedResourceGroupInfo);

            ResourceHandler resourceHandler = new ResourceHandler(resourceProcessorMock.Object, webResourceConfigurationMock.Object, httpResponseCacher, httpResponseCompressor);
            resourceHandler.HandleResource(httpContextBaseMock.Object, resourceType, resourceGroupName);
            return httpContextBaseMock;
        }