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); }
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 }); }); }
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(); }
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\"."); }
public void UrlIsNotConverted() { var module = new Module("~/module"); module.AddReferences(new[] { "http://test.com/" }); module.References.Single().ShouldEqual("http://test.com/"); }
public void TrailingSlashIsRemoved() { var module = new Module("~/module"); module.AddReferences(new[] { "../lib/" }); module.References.Single().ShouldEqual("~/lib"); }
public void StoresReferences() { var module = new Module("~/module"); module.AddReferences(new[] { "~\\test", "~\\other" }); module.References.SequenceEqual(new[] { "~/test", "~/other" }).ShouldBeTrue(); }
public void ReferenceStartingWithSlashIsConvertedToAppRelative() { var module = new Module("~/module"); module.AddReferences(new[] { "/test" }); module.References.Single().ShouldEqual("~/test"); }
public void ModuleRelativePathIsConvertedToAppRelative() { var module = new Module("~/module"); module.AddReferences(new[] { "../lib" }); module.References.Single().ShouldEqual("~/lib"); }