예제 #1
0
        public void GivenModuleHasUrlReference_ThenCreateModuleContainersGeneratesExternalModuleForTheUrl()
        {
            var module = new Module("~/test");
            module.AddReferences(new[] { "http://test.com/api.js" });

            var externalModule = new Module("http://test.com/api.js");
            var moduleFactory = new Mock<IModuleFactory<Module>>();
            moduleFactory.Setup(f => f.CreateExternalModule("http://test.com/api.js"))
                .Returns(externalModule);
            var moduleFactories = new Dictionary<Type, object>
            {
                { typeof(Module), moduleFactory.Object }
            };
            var moduleSource = new Mock<IModuleSource<Module>>();
            moduleSource
                .Setup(s => s.GetModules(It.IsAny<IModuleFactory<Module>>(), It.IsAny<ICassetteApplication>()))
                .Returns(new[] { module });

            var config = new ModuleConfiguration(
                Mock.Of<ICassetteApplication>(),
                Mock.Of<IDirectory>(),
                Mock.Of<IDirectory>(),
                moduleFactories,
                ""
            );
            config.Add(moduleSource.Object);

            var containers = config.CreateModuleContainers(false, "");
            var generatedModule = containers[typeof(Module)].FindModuleContainingPath("http://test.com/api.js");
            generatedModule.ShouldBeSameAs(externalModule);
        }
예제 #2
0
        public void GivenModulesWithCyclicReferences_WhenIncludeReferencesAndSortModules_ThenExceptionThrown()
        {
            var module1 = new Module("~/module1");
            var module2 = new Module("~/module2");
            module1.AddReferences(new[] { "~/module2" });
            module2.AddReferences(new[] { "~/module1" });
            var container = new ModuleContainer<Module>(new[] { module1, module2 });

            Assert.Throws<InvalidOperationException>(delegate
            {
                container.IncludeReferencesAndSortModules(new[] { module2, module1 });
            });
        }
예제 #3
0
        public void GivenModuleWithReferenceToAnotherModule_ModulesAreSortedInDependencyOrder()
        {
            var module1 = new Module("~/module1");
            var module2 = new Module("~/module2");
            module1.AddReferences(new[] { "~/module2" });

            var container = new ModuleContainer<Module>(new[] { module1, module2 });
            var sorted = container.IncludeReferencesAndSortModules(new[] { module1, module2 });
            sorted.SequenceEqual(new[] { module2, module1 }).ShouldBeTrue();
        }
예제 #4
0
        public void GivenModuleWithInvalid_ConstructorThrowsException()
        {
            var module1 = new Module("~/module1");
            module1.AddReferences(new[] { "~\\module2" });

            var exception = Assert.Throws<AssetReferenceException>(delegate
            {
                new ModuleContainer<Module>(new[] {module1});
            });
            exception.Message.ShouldEqual("Reference error in module descriptor for \"~/module1\". Cannot find \"~/module2\".");
        }
예제 #5
0
파일: Module.cs 프로젝트: romanych/cassette
 public void UrlIsNotConverted()
 {
     var module = new Module("~/module");
     module.AddReferences(new[] { "http://test.com/" });
     module.References.Single().ShouldEqual("http://test.com/");
 }
예제 #6
0
파일: Module.cs 프로젝트: romanych/cassette
 public void TrailingSlashIsRemoved()
 {
     var module = new Module("~/module");
     module.AddReferences(new[] { "../lib/" });
     module.References.Single().ShouldEqual("~/lib");
 }
예제 #7
0
파일: Module.cs 프로젝트: romanych/cassette
 public void StoresReferences()
 {
     var module = new Module("~/module");
     module.AddReferences(new[] { "~\\test", "~\\other" });
     module.References.SequenceEqual(new[] { "~/test", "~/other" }).ShouldBeTrue();
 }
예제 #8
0
파일: Module.cs 프로젝트: romanych/cassette
 public void ReferenceStartingWithSlashIsConvertedToAppRelative()
 {
     var module = new Module("~/module");
     module.AddReferences(new[] { "/test" });
     module.References.Single().ShouldEqual("~/test");
 }
예제 #9
0
파일: Module.cs 프로젝트: romanych/cassette
 public void ModuleRelativePathIsConvertedToAppRelative()
 {
     var module = new Module("~/module");
     module.AddReferences(new[] { "../lib" });
     module.References.Single().ShouldEqual("~/lib");
 }