public string Read(WebAssetGroup group)
        {
            var appliesTo = filter.AppliesTo(group.ContentType);

            var result = new StringBuilder();

            foreach (var asset in group.Items)
            {
                var path = locator.Locate(asset.Source, group.Version);

                var text = provider.ReadAllText(path);

                if (appliesTo)
                {
                    var basePath = provider.GetDirectory(path);

                    text = filter.Filter(basePath, text);
                }

                result.Append(text);
                result.AppendLine();
            }

            return result.ToString();
        }
        public string Read(WebAssetGroup group)
        {
            var appliesTo = filter.AppliesTo(group.ContentType);

            var result = new StringBuilder();

            foreach (var asset in group.Items)
            {
                var path = locator.Locate(asset.Source, group.Version);

                var text = provider.ReadAllText(path);

                if (appliesTo)
                {
                    var basePath = provider.GetDirectory(path);

                    text = filter.Filter(basePath, text);
                }

                result.Append(text);
                result.AppendLine();
            }

            return(result.ToString());
        }
        public void CreateResolver_returns_CombinedWebAssetItemGroupResolver_if_group_is_combined()
        {
            var group = new WebAssetGroup("default", false);
            group.Combined = true;

            Assert.IsType<CombinedWebAssetGroupResolver>(factory.Create(group));
        }
Exemple #4
0
        public override object Deserialize(IDictionary <string, object> dictionary, Type type, JavaScriptSerializer serializer)
        {
            var group = new WebAssetGroup("", false);

            SetIfPresent <bool>(dictionary, CompressKey, compress => group.Compress = compress);
            SetIfPresent <float>(dictionary, CacheDurationKey, cacheDuration => group.CacheDurationInDays = cacheDuration);
            SetIfPresent <string>(dictionary, VersionKey, version => group.Version             = version);
            SetIfPresent <string>(dictionary, ContentTypeKey, contentType => group.ContentType = contentType);
            SetIfPresent <IEnumerable <IDictionary <string, object> > >(dictionary, DirectoriesKey, directories =>
            {
                var orderedFiles = directories.SelectMany(directory =>
                {
                    var path  = serializer.ConvertToType <string>(directory[PathKey]);
                    var files = serializer.ConvertToType <IEnumerable <IDictionary <string, object> > >(directory[FilesKey]);
                    return(files.Select(file => new
                    {
                        Source = "~/" + path + "/" + serializer.ConvertToType <string>(file[NameKey]),
                        Order = serializer.ConvertToType <int>(file[OrderKey])
                    }));
                });

                orderedFiles.OrderBy(file => file.Order)
                .Select(file => new WebAsset(file.Source))
                .Each(group.Items.Add);
            });

            return(group);
        }
        public void Setting_duplicate_group_should_throw_exception()
        {
            _collection.Add(new WebAssetGroup("group1", false) { DefaultPath = WebAssetDefaultSettings.ScriptFilesPath });
            _collection.Add(new WebAssetGroup("group2", false) { DefaultPath = WebAssetDefaultSettings.ScriptFilesPath });

            Assert.Throws<ArgumentException>(() => _collection[1] = new WebAssetGroup("group1", false) { DefaultPath = WebAssetDefaultSettings.ScriptFilesPath });
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="ScriptRegistrar"/> class.
        /// </summary>
        /// <param name="scripts">The scripts.</param>
        /// <param name="scriptableComponents">The scriptable components.</param>
        /// <param name="viewContext">The view context.</param>
        /// <param name="assetItemMerger">The asset merger.</param>
        /// <param name="scriptWrapper">The script wrapper.</param>
        public ScriptRegistrar(WebAssetCollection scripts, IList<IScriptableComponent> scriptableComponents, ViewContext viewContext, IWebAssetCollectionResolver resolver, ScriptWrapperBase scriptWrapper)
        {
            this.resolver = resolver;

            if (viewContext.HttpContext.Items[Key] != null)
            {
                throw new InvalidOperationException(Resources.TextResource.OnlyOneScriptRegistrarIsAllowedInASingleRequest);
            }

            viewContext.HttpContext.Items[Key] = this;

            OutputScriptFiles = true;

            DefaultGroup = new WebAssetGroup("default", false) { DefaultPath = WebAssetDefaultSettings.ScriptFilesPath };
            Scripts = scripts;
            Scripts.Insert(0, DefaultGroup);

            this.scriptableComponents = scriptableComponents;
            ViewContext = viewContext;
            ScriptWrapper = scriptWrapper;
            AssetHandlerPath = WebAssetHttpHandler.DefaultPath;

            OnDocumentReadyActions = new List<Action>();
            OnDocumentReadyStatements = new List<string>();
            OnWindowUnloadActions = new List<Action>();
            OnWindowUnloadStatements = new List<string>();
        }
 public WebAssetGroupTests()
 {
     group = new WebAssetGroup("Dummy", false)
     {
         DefaultPath = WebAssetDefaultSettings.ScriptFilesPath
     };
 }
Exemple #8
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ScriptRegistrar"/> class.
        /// </summary>
        /// <param name="scripts">The scripts.</param>
        /// <param name="scriptableComponents">The scriptable components.</param>
        /// <param name="viewContext">The view context.</param>
        /// <param name="assetItemMerger">The asset merger.</param>
        /// <param name="scriptWrapper">The script wrapper.</param>
        public ScriptRegistrar(WebAssetCollection scripts, IList <IScriptableComponent> scriptableComponents, ViewContext viewContext, IWebAssetCollectionResolver resolver, ScriptWrapperBase scriptWrapper)
        {
            this.resolver = resolver;

            if (viewContext.HttpContext.Items[Key] != null)
            {
                throw new InvalidOperationException(Resources.TextResource.OnlyOneScriptRegistrarIsAllowedInASingleRequest);
            }

            viewContext.HttpContext.Items[Key] = this;

            OutputScriptFiles = true;

            DefaultGroup = new WebAssetGroup("default", false)
            {
                DefaultPath = WebAssetDefaultSettings.ScriptFilesPath
            };
            Scripts = scripts;
            Scripts.Insert(0, DefaultGroup);

            this.scriptableComponents = scriptableComponents;
            ViewContext      = viewContext;
            ScriptWrapper    = scriptWrapper;
            AssetHandlerPath = WebAssetHttpHandler.DefaultPath;

            OnDocumentReadyActions    = new List <Action>();
            OnDocumentReadyStatements = new List <string>();
            OnWindowUnloadActions     = new List <Action>();
            OnWindowUnloadStatements  = new List <string>();
        }
        public void CreateResolver_returns_CombinedWebAssetItemGroupResolver_if_group_is_combined()
        {
            var group = new WebAssetGroup("default", false);

            group.Combined = true;

            Assert.IsType <CombinedWebAssetGroupResolver>(factory.Create(group));
        }
Exemple #10
0
 public CombinedWebAssetGroupResolver(WebAssetGroup group, IWebAssetResolverFactory resolverFactory, IWebAssetChecker checker, IWebAssetGroupSerializer serializer)
     : base(group, resolverFactory)
 {
     this.group           = group;
     this.resolverFactory = resolverFactory;
     this.checker         = checker;
     this.serializer      = serializer;
 }
 public CombinedWebAssetGroupResolver(WebAssetGroup group, IWebAssetResolverFactory resolverFactory, IWebAssetChecker checker, IWebAssetGroupSerializer serializer)
     : base(group, resolverFactory)
 {
     this.group = group;
     this.resolverFactory = resolverFactory;
     this.checker = checker;
     this.serializer = serializer;
 }
Exemple #12
0
        public string Serialize(WebAssetGroup group)
        {
            var serializer = CreateSerializer();

            var json = serializer.Serialize(group);

            return(Encode(json.Compress()));
        }
        public string Serialize(WebAssetGroup group)
        {
            var serializer = CreateSerializer();

            var json = serializer.Serialize(group);

            return Encode(json.Compress());
        }
        private WebAssetGroup ArrangeGroup(params string[] sources)
        {
            var group = new WebAssetGroup("", false);

            sources.Each(source => group.Items.Add(new WebAsset(source)));

            return(group);
        }
Exemple #15
0
 public WebAssetGroupBuilderTests()
 {
     group = new WebAssetGroup("foo", false)
     {
         DefaultPath = WebAssetDefaultSettings.ScriptFilesPath
     };
     builder = new WebAssetGroupBuilder(group);
 }
        private WebAssetGroup ArrangeGroup(params string[] expected)
        {
            var group = new WebAssetGroup("default", false);

            group.Items.AddRange(expected.Select(asset => new WebAsset(asset))
                                 .ToArray());
            return(group);
        }
        private IWebAssetResolver CreateAssetGropResolver(WebAssetGroup group)
        {
            if (group.Combined)
            {
                return new CombinedWebAssetGroupResolver(group, this, checker, serializer);
            }

            return new WebAssetGroupResolver(group, this);
        }
        private IWebAssetResolver CreateAssetGropResolver(WebAssetGroup group)
        {
            if (group.Combined)
            {
                return(new CombinedWebAssetGroupResolver(group, this, checker, serializer));
            }

            return(new WebAssetGroupResolver(group, this));
        }
Exemple #19
0
        public Editor(ViewContext viewContext,
                      IClientSideObjectWriterFactory clientSideObjectWriterFactory,
                      IWebAssetCollectionResolver resolver,
                      ILocalizationService localizationService,
                      IUrlGenerator urlGenerator)
            : base(viewContext, clientSideObjectWriterFactory)
        {
            this.resolver     = resolver;
            this.urlGenerator = urlGenerator;

            ScriptFileNames.AddRange(new[] {
                "telerik.common.js",
                "telerik.list.js",
                "telerik.combobox.js",
                "telerik.draganddrop.js",
                "telerik.window.js",
                "telerik.editor.js"
            });

            DefaultToolGroup = new EditorToolGroup(this);

            ClientEvents = new EditorClientEvents();

            StyleSheets = new WebAssetGroup("default", false)
            {
                DefaultPath = WebAssetDefaultSettings.StyleSheetFilesPath
            };

            Localization = new EditorLocalization(localizationService, CultureInfo.CurrentUICulture);

            Template = new HtmlTemplate();

            new EditorToolFactory(DefaultToolGroup)
            .Bold().Italic().Underline().Strikethrough()
            .Separator()
            .FontName()
            .FontSize()
            .FontColor().BackColor()
            .Separator()
            .JustifyLeft().JustifyCenter().JustifyRight().JustifyFull()
            .Separator()
            .InsertUnorderedList().InsertOrderedList()
            .Separator()
            .Outdent().Indent()
            .Separator()
            .FormatBlock()
            .Separator()
            .CreateLink().Unlink()
            .Separator()
            .InsertImage();

            FileBrowserSettings = new EditorFileBrowserSettings(this);

            DefaultToolGroup.Tools.OfType <EditorComboBox>()
            .Each(combo => combo.InputHtmlAttributes.Add("title", combo.Identifier));
        }
Exemple #20
0
        public void Serialize_should_contain_group_compression()
        {
            var group = new WebAssetGroup("foo", false);

            group.Compress = true;

            var result = converter.Serialize(group, new JavaScriptSerializer());

            Assert.Equal(group.Compress, result["c"]);
        }
Exemple #21
0
        public void Serialize_should_return_path_of_folders()
        {
            var group = new WebAssetGroup("foo", false);

            group.Items.Add(new WebAsset("~/Scripts/foo.js"));

            var directories = converter.Serialize(group, new JavaScriptSerializer())["d"] as IEnumerable <IDictionary <string, object> >;

            Assert.Equal("Scripts", directories.First()["p"]);
        }
Exemple #22
0
        public void Serialize_should_contain_group_content_type()
        {
            var group = new WebAssetGroup("foo", false);

            group.ContentType = "text/javascript";

            var result = converter.Serialize(group, new JavaScriptSerializer());

            Assert.Equal(group.ContentType, result["ct"]);
        }
Exemple #23
0
        public void Serialize_should_contain_group_cache_duration()
        {
            var group = new WebAssetGroup("foo", false);

            group.CacheDurationInDays = 1;

            var result = converter.Serialize(group, new JavaScriptSerializer());

            Assert.Equal(group.CacheDurationInDays, result["cd"]);
        }
Exemple #24
0
        public void Serialize_contains_entry_for_web_asset_item_directories()
        {
            var group = new WebAssetGroup("foo", false);

            group.Items.Add(new WebAsset("~/Scripts/foo.js"));

            var directories = converter.Serialize(group, new JavaScriptSerializer())["d"] as IEnumerable <IDictionary <string, object> >;

            Assert.True(directories.Any());
        }
Exemple #25
0
        public void Serialize_should_contain_group_version()
        {
            var group = new WebAssetGroup("foo", false);

            group.Version = "1";

            var result = converter.Serialize(group, new JavaScriptSerializer());

            Assert.Equal(group.Version, result["v"]);
        }
Exemple #26
0
        public void Should_return_empty_result_if_group_is_empty()
        {
            group = new WebAssetGroup("foo", true);

            resolver = new CombinedWebAssetGroupResolver(group, resolverFactory.Object, checker.Object, serializer.Object);

            var result = resolver.Resolve(new ResolverContext());

            Assert.Empty(result);
        }
        public void Serialize_returns_base64_gzipped_string()
        {
            var group = new WebAssetGroup("foo", false);
            group.Version = "1";
            group.ContentType = "text/css";

            var result = serializer.Serialize(group);

            Assert.Equal("{\"d\":[],\"ct\":\"text/css\",\"v\":\"1\",\"cd\":365,\"c\":true}", WebAssetGroupSerializer.Decode(result).Decompress());
        }
Exemple #28
0
        public void Serialize_contains_entry_for_unique_web_asset_item_directories_and_ignores_case()
        {
            var group = new WebAssetGroup("foo", false);

            group.Items.Add(new WebAsset("~/Scripts/foo.js"));
            group.Items.Add(new WebAsset("~/scripts/bar.js"));

            var directories = converter.Serialize(group, new JavaScriptSerializer())["d"] as IEnumerable <IDictionary <string, object> >;

            Assert.Equal(1, directories.Count());
        }
        public void Serialize_returns_base64_gzipped_string()
        {
            var group = new WebAssetGroup("foo", false);

            group.Version     = "1";
            group.ContentType = "text/css";

            var result = serializer.Serialize(group);

            Assert.Equal("{\"d\":[],\"ct\":\"text/css\",\"v\":\"1\",\"cd\":365,\"c\":true}", WebAssetGroupSerializer.Decode(result).Decompress());
        }
Exemple #30
0
        public Editor(ViewContext viewContext, 
            IClientSideObjectWriterFactory clientSideObjectWriterFactory, 
            IWebAssetCollectionResolver resolver, 
            ILocalizationService localizationService,
            IUrlGenerator urlGenerator)
            : base(viewContext, clientSideObjectWriterFactory)
        {
            this.resolver = resolver;
            this.urlGenerator = urlGenerator;

            ScriptFileNames.AddRange(new[] {
                "telerik.common.js",
                "telerik.list.js",
                "telerik.combobox.js",
                "telerik.draganddrop.js",
                "telerik.window.js",
                "telerik.editor.js"
            });

            DefaultToolGroup = new EditorToolGroup(this);

            ClientEvents = new EditorClientEvents();

            StyleSheets = new WebAssetGroup("default", false) { DefaultPath = WebAssetDefaultSettings.StyleSheetFilesPath };

            Localization = new EditorLocalization(localizationService, CultureInfo.CurrentUICulture);

            Template = new HtmlTemplate();

            new EditorToolFactory(DefaultToolGroup)
                .Bold().Italic().Underline().Strikethrough()
                .Separator()
                .FontName()
                .FontSize()
                .FontColor().BackColor()
                .Separator()
                .JustifyLeft().JustifyCenter().JustifyRight().JustifyFull()
                .Separator()
                .InsertUnorderedList().InsertOrderedList()
                .Separator()
                .Outdent().Indent()
                .Separator()
                .FormatBlock()
                .Separator()
                .CreateLink().Unlink()
                .Separator()
                .InsertImage();

            FileBrowserSettings = new EditorFileBrowserSettings(this);

            DefaultToolGroup.Tools.OfType<EditorComboBox>()
                .Each(combo => combo.InputHtmlAttributes.Add("title", combo.Identifier));
        }
Exemple #31
0
        public void Should_set_the_content_type_of_the_group()
        {
            group = new WebAssetGroup("foo", true);

            ResolverContext resolverContext = new ResolverContext
            {
                ContentType = "text/javascript"
            };

            resolver = new CombinedWebAssetGroupResolver(group, resolverFactory.Object, checker.Object, serializer.Object);
            resolver.Resolve(resolverContext);
            Assert.Equal(group.ContentType, resolverContext.ContentType);
        }
Exemple #32
0
        public void Serialize_should_return_order_of_files()
        {
            var group = new WebAssetGroup("foo", false);

            group.Items.Add(new WebAsset("~/Scripts1/foo.js"));
            group.Items.Add(new WebAsset("~/Scripts2/foo.js"));

            var directories     = converter.Serialize(group, new JavaScriptSerializer())["d"] as IEnumerable <IDictionary <string, object> >;
            var firstDirectory  = directories.First()["f"] as IEnumerable <IDictionary <string, object> >;
            var secondDirectory = directories.Last()["f"] as IEnumerable <IDictionary <string, object> >;

            Assert.Equal(0, firstDirectory.First()["o"]);
            Assert.Equal(1, secondDirectory.First()["o"]);
        }
Exemple #33
0
        public void Should_not_check_for_native_assets_when_cdn_is_disabled()
        {
            var asset = new WebAsset("foo");

            group = new WebAssetGroup("foo", false);
            group.Items.Add(asset);

            checker.Setup(c => c.IsNative(asset));

            resolver = new CombinedWebAssetGroupResolver(group, resolverFactory.Object, checker.Object, serializer.Object);

            resolver.Resolve(new ResolverContext());

            checker.Verify(c => c.IsNative(asset), Times.Never());
        }
Exemple #34
0
        public void Should_check_for_absolute_assets()
        {
            var asset = new WebAsset("foo");

            group = new WebAssetGroup("foo", false);
            group.Items.Add(asset);

            checker.Setup(c => c.IsAbsolute(asset));

            resolver = new CombinedWebAssetGroupResolver(group, resolverFactory.Object, checker.Object, serializer.Object);

            resolver.Resolve(new ResolverContext());

            checker.VerifyAll();
        }
        public void Should_check_for_absolute_assets()
        {
            var asset = new WebAsset("foo");

            group = new WebAssetGroup("foo", false);
            group.Items.Add(asset);

            checker.Setup(c => c.IsAbsolute(asset));

            resolver = new CombinedWebAssetGroupResolver(group, resolverFactory.Object, checker.Object, serializer.Object);

            resolver.Resolve(new ResolverContext());

            checker.VerifyAll();
        }
Exemple #36
0
        public void Should_check_for_native_assets_when_cdn_is_enabled()
        {
            var asset = new WebAsset("foo");

            group = new WebAssetGroup("foo", false);
            group.UseTelerikContentDeliveryNetwork = true;
            group.Items.Add(asset);

            checker.Setup(c => c.IsNative(asset));

            resolver = new CombinedWebAssetGroupResolver(group, resolverFactory.Object, checker.Object, serializer.Object);

            resolver.Resolve(new ResolverContext());

            checker.VerifyAll();
        }
Exemple #37
0
        public void Should_use_group_name_if_asset_is_shared()
        {
            var asset = new WebAsset("foo");

            group = new WebAssetGroup("foo", true);
            group.Items.Add(asset);

            resolver = new CombinedWebAssetGroupResolver(group, resolverFactory.Object, checker.Object, serializer.Object);

            var result = resolver.Resolve(new ResolverContext
            {
                HttpHandlerPath = "baz.axd"
            });

            Assert.Equal("baz.axd?" + WebAssetHttpHandler.IdParameterName + "=foo", result.First());
        }
Exemple #38
0
        public void Should_resolve_absolute_assets()
        {
            var asset = new WebAsset("foo");

            group = new WebAssetGroup("foo", false);
            group.Items.Add(asset);

            checker.Setup(c => c.IsAbsolute(asset)).Returns(true);
            resolverFactory.Setup(f => f.Create(asset)).Returns(new Mock <IWebAssetResolver>().Object);

            resolver = new CombinedWebAssetGroupResolver(group, resolverFactory.Object, checker.Object, serializer.Object);

            resolver.Resolve(new ResolverContext());

            resolverFactory.VerifyAll();
        }
        public void Setting_duplicate_group_should_throw_exception()
        {
            _collection.Add(new WebAssetGroup("group1", false)
            {
                DefaultPath = WebAssetDefaultSettings.ScriptFilesPath
            });
            _collection.Add(new WebAssetGroup("group2", false)
            {
                DefaultPath = WebAssetDefaultSettings.ScriptFilesPath
            });

            Assert.Throws <ArgumentException>(() => _collection[1] = new WebAssetGroup("group1", false)
            {
                DefaultPath = WebAssetDefaultSettings.ScriptFilesPath
            });
        }
        public void Should_check_for_native_assets_when_cdn_is_enabled()
        {
            var asset = new WebAsset("foo");

            group = new WebAssetGroup("foo", false);
            group.UseTelerikContentDeliveryNetwork = true;
            group.Items.Add(asset);

            checker.Setup(c => c.IsNative(asset));

            resolver = new CombinedWebAssetGroupResolver(group, resolverFactory.Object, checker.Object, serializer.Object);

            resolver.Resolve(new ResolverContext());

            checker.VerifyAll();
        }
        public void Should_append_asset_handler_path()
        {
            var asset = new WebAsset("foo");

            group = new WebAssetGroup("foo", false);
            group.Items.Add(asset);

            serializer.Setup(s => s.Serialize(group)).Returns("bar");

            resolver = new CombinedWebAssetGroupResolver(group, resolverFactory.Object, checker.Object, serializer.Object);

            var result = resolver.Resolve(new ResolverContext
                {
                    HttpHandlerPath = "baz.axd"
                });

            Assert.Equal("baz.axd?" + WebAssetHttpHandler.IdParameterName + "=bar", result.First());
        }
Exemple #42
0
        public void Should_append_asset_handler_path()
        {
            var asset = new WebAsset("foo");

            group = new WebAssetGroup("foo", false);
            group.Items.Add(asset);

            serializer.Setup(s => s.Serialize(group)).Returns("bar");

            resolver = new CombinedWebAssetGroupResolver(group, resolverFactory.Object, checker.Object, serializer.Object);

            var result = resolver.Resolve(new ResolverContext
            {
                HttpHandlerPath = "baz.axd"
            });

            Assert.Equal("baz.axd?" + WebAssetHttpHandler.IdParameterName + "=bar", result.First());
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="StyleSheetRegistrar"/> class.
        /// </summary>
        /// <param name="styleSheets">The style sheets.</param>
        /// <param name="viewContext">The view context.</param>
        /// <param name="assetItemMerger">The asset merger.</param>
        public StyleSheetRegistrar(WebAssetCollection styleSheets, ViewContext viewContext, IWebAssetCollectionResolver resolver)
        {
            this.resolver = resolver;

            if (viewContext.HttpContext.Items[Key] != null)
            {
                throw new InvalidOperationException(Resources.TextResource.OnlyOneStyleSheetRegistrarIsAllowedInASingleRequest);
            }

            viewContext.HttpContext.Items[Key] = this;

            DefaultGroup = new WebAssetGroup("default", false) { DefaultPath = WebAssetDefaultSettings.StyleSheetFilesPath };
            StyleSheets = styleSheets;
            styleSheets.Insert(0, DefaultGroup);

            ViewContext = viewContext;

            AssetHandlerPath = WebAssetHttpHandler.DefaultPath;
        }
        /// <summary>
        /// Adds the group.
        /// </summary>
        /// <param name="name">The name.</param>
        /// <param name="configureAction">The configure action.</param>
        /// <returns></returns>
        public virtual SharedWebAssetGroupBuilder AddGroup(string name, Action<WebAssetGroupBuilder> configureAction)
        {
            Guard.IsNotNullOrEmpty(name, "name");
            Guard.IsNotNull(configureAction, "configureAction");

            WebAssetGroup group;

            if (assets.TryGetValue(name, out group))
            {
                throw new ArgumentException(TextResource.GroupWithSpecifiedNameAlreadyExistsPleaseSpecifyADifferentName.FormatWith(name));
            }

            group = new WebAssetGroup(name, true) { DefaultPath = defaultPath };
            assets.Add(name, group);

            WebAssetGroupBuilder builder = new WebAssetGroupBuilder(group);
            configureAction(builder);

            return this;
        }
 public WebAssetGroupResolver(WebAssetGroup group, IWebAssetResolverFactory resolverFactory)
 {
     this.group = group;
     this.resolverFactory = resolverFactory;
 }
 public WebAssetGroupBuilderTests()
 {
     group = new WebAssetGroup("foo", false) { DefaultPath = WebAssetDefaultSettings.ScriptFilesPath };
     builder = new WebAssetGroupBuilder(group);
 }
        public void Serialize_should_return_path_of_folders()
        {
            var group = new WebAssetGroup("foo", false);
            group.Items.Add(new WebAsset("~/Scripts/foo.js"));

            var directories = converter.Serialize(group, new JavaScriptSerializer())["d"] as IEnumerable<IDictionary<string, object>>;

            Assert.Equal("Scripts", directories.First()["p"]);
        }
 public WebAssetGroupTests()
 {
     group = new WebAssetGroup("Dummy", false) { DefaultPath = WebAssetDefaultSettings.ScriptFilesPath };
 }
        public void Serialize_should_contain_group_version()
        {
            var group = new WebAssetGroup("foo", false);
            group.Version = "1";

            var result = converter.Serialize(group, new JavaScriptSerializer());
            Assert.Equal(group.Version, result["v"]);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="WebAssetGroupBuilder"/> class.
        /// </summary>
        /// <param name="assetItemGroup">The asset item group.</param>
        public WebAssetGroupBuilder(WebAssetGroup assetItemGroup)
        {
            Guard.IsNotNull(assetItemGroup, "assetItemGroup");

            this.assetItemGroup = assetItemGroup;
        }
 public void CreateResolver_returns_WebAssetItemGroupResolver()
 {
     var group = new WebAssetGroup("default", false);
     Assert.IsType<WebAssetGroupResolver>(factory.Create(group));
 }
        public void Serialize_should_return_order_of_files()
        {
            var group = new WebAssetGroup("foo", false);
            group.Items.Add(new WebAsset("~/Scripts1/foo.js"));
            group.Items.Add(new WebAsset("~/Scripts2/foo.js"));

            var directories = converter.Serialize(group, new JavaScriptSerializer())["d"] as IEnumerable<IDictionary<string, object>>;
            var firstDirectory = directories.First()["f"] as IEnumerable<IDictionary<string, object>>;
            var secondDirectory = directories.Last()["f"] as IEnumerable<IDictionary<string, object>>;
            Assert.Equal(0, firstDirectory.First()["o"]);
            Assert.Equal(1, secondDirectory.First()["o"]);
        }
        private WebAssetGroup ArrangeGroup(params string[] sources)
        {
            var group = new WebAssetGroup("", false);

            sources.Each(source => group.Items.Add(new WebAsset(source)));

            return group;
        }
        public void Serialize_should_contain_group_compression()
        {
            var group = new WebAssetGroup("foo", false);
            group.Compress = true;

            var result = converter.Serialize(group, new JavaScriptSerializer());
            Assert.Equal(group.Compress, result["c"]);
        }
        private static void LoadGroups(WebAssetGroupConfigurationElementCollection source, IDictionary<string, WebAssetGroup> destination, string defaultPath, string defaultVersion)
        {
            foreach (WebAssetGroupConfigurationElement configurationGroup in source)
            {
                WebAssetGroup group = new WebAssetGroup(configurationGroup.Name, true)
                                              {
                                                  DefaultPath = !string.IsNullOrEmpty(configurationGroup.DefaultPath) ? configurationGroup.DefaultPath : defaultPath,
                                                  ContentDeliveryNetworkUrl = configurationGroup.ContentDeliveryNetworkUrl,
                                                  Enabled = configurationGroup.Enabled,
                                                  Version = !string.IsNullOrEmpty(configurationGroup.Version) ? configurationGroup.Version : defaultVersion,
                                                  Compress = configurationGroup.Compress,
                                                  CacheDurationInDays = configurationGroup.CacheDurationInDays,

                                                  Combined = configurationGroup.Combined
                                              };

                if (configurationGroup.UseTelerikContentDeliveryNetwork.HasValue)
                {
                    group.UseTelerikContentDeliveryNetwork = configurationGroup.UseTelerikContentDeliveryNetwork.Value;
                }

                foreach (WebAssetConfigurationElement configurationItem in configurationGroup.Items)
                {
                    string itemSource = configurationItem.Source;

                    if (!itemSource.StartsWith("~/", StringComparison.OrdinalIgnoreCase) && !itemSource.Contains("://")) {
                        itemSource = PathHelper.CombinePath(group.DefaultPath, itemSource);
                    }

                    group.Items.Add(new WebAsset(itemSource));
                }

                destination.Add(group.Name, group);
            }
        }
        public void Serialize_contains_entry_for_web_asset_item_directories()
        {
            var group = new WebAssetGroup("foo", false);
            group.Items.Add(new WebAsset("~/Scripts/foo.js"));

            var directories = converter.Serialize(group, new JavaScriptSerializer())["d"] as IEnumerable<IDictionary<string, object>>;

            Assert.True(directories.Any());
        }
 private WebAssetGroup ArrangeGroup(params string[] expected)
 {
     var group = new WebAssetGroup("default", false);
     group.Items.AddRange(expected.Select(asset => new WebAsset(asset))
                                  .ToArray());
     return group;
 }
        public void Serialize_should_contain_group_content_type()
        {
            var group = new WebAssetGroup("foo", false);
            group.ContentType = "text/javascript";

            var result = converter.Serialize(group, new JavaScriptSerializer());
            Assert.Equal(group.ContentType, result["ct"]);
        }
        public void Serialize_contains_entry_for_unique_web_asset_item_directories_and_ignores_case()
        {
            var group = new WebAssetGroup("foo", false);
            group.Items.Add(new WebAsset("~/Scripts/foo.js"));
            group.Items.Add(new WebAsset("~/scripts/bar.js"));

            var directories = converter.Serialize(group, new JavaScriptSerializer())["d"] as IEnumerable<IDictionary<string, object>>;

            Assert.Equal(1, directories.Count());
        }
        public void Serialize_should_contain_group_cache_duration()
        {
            var group = new WebAssetGroup("foo", false);
            group.CacheDurationInDays = 1;

            var result = converter.Serialize(group, new JavaScriptSerializer());
            Assert.Equal(group.CacheDurationInDays, result["cd"]);
        }