示例#1
0
        public void Init() {
            _tempFolderName = Path.GetTempFileName();
            File.Delete(_tempFolderName);
            var assembly = GetType().Assembly;
            foreach (var name in assembly.GetManifestResourceNames()) {
                if (name.StartsWith(DataPrefix)) {
                    string text;
                    using (var stream = assembly.GetManifestResourceStream(name)) {
                        using (var reader = new StreamReader(stream))
                            text = reader.ReadToEnd();

                    }

                    // Pro filtering
                    var relativePath = name
                        .Substring(DataPrefix.Length)
                        .Replace(".txt", ":txt")
                        .Replace(".recipe.xml", ":recipe:xml")
                        .Replace('.', Path.DirectorySeparatorChar)
                        .Replace(":txt", ".txt")
                        .Replace(":recipe:xml", ".recipe.xml");

                    var targetPath = Path.Combine(_tempFolderName, relativePath);

                    Directory.CreateDirectory(Path.GetDirectoryName(targetPath));
                    using (var stream = new FileStream(targetPath, FileMode.Create)) {
                        using (var writer = new StreamWriter(stream)) {
                            writer.Write(text);
                        }
                    }
                }
            }

            var builder = new ContainerBuilder();
            var harvester = new ExtensionHarvester(new StubCacheManager(), new StubWebSiteFolder(), new Mock<ICriticalErrorProvider>().Object);
            _folders = new ModuleFolders(new[] { _tempFolderName }, harvester);
            builder.RegisterType<RecipeManager>().As<IRecipeManager>();
            builder.RegisterType<RecipeHarvester>().As<IRecipeHarvester>();
            builder.RegisterType<RecipeStepExecutor>().As<IRecipeStepExecutor>();
            builder.RegisterType<StubStepQueue>().As<IRecipeStepQueue>().InstancePerLifetimeScope();
            builder.RegisterType<StubRecipeJournal>().As<IRecipeJournal>();
            builder.RegisterType<StubRecipeScheduler>().As<IRecipeScheduler>();
            builder.RegisterType<ExtensionManager>().As<IExtensionManager>();
            builder.RegisterType<StubAppDataFolder>().As<IAppDataFolder>();
            builder.RegisterType<StubClock>().As<IClock>();
            builder.RegisterType<StubCacheManager>().As<ICacheManager>();
            builder.RegisterType<StubParallelCacheContext>().As<IParallelCacheContext>();
            builder.RegisterType<StubAsyncTokenProvider>().As<IAsyncTokenProvider>();
            builder.RegisterInstance(_folders).As<IExtensionFolders>();
            builder.RegisterInstance(new Mock<IRecipeExecuteEventHandler>().Object);
            builder.RegisterType<Environment.Extensions.ExtensionManagerTests.StubLoaders>().As<IExtensionLoader>();
            builder.RegisterType<RecipeParser>().As<IRecipeParser>();
            builder.RegisterType<StubWebSiteFolder>().As<IWebSiteFolder>();
            builder.RegisterType<CustomRecipeHandler>().As<IRecipeHandler>();

            _container = builder.Build();
            _recipeManager = _container.Resolve<IRecipeManager>();
            _recipeParser = _container.Resolve<IRecipeParser>();
            _recipeHarvester = _container.Resolve<IRecipeHarvester>();
        }
示例#2
0
 public void ModuleTxtShouldBeParsedAndReturnedAsYamlDocument() {
     var harvester = new ExtensionHarvester(new StubCacheManager(), new StubWebSiteFolder(), new Mock<ICriticalErrorProvider>().Object);
     IExtensionFolders folders = new ModuleFolders(new[] { _tempFolderName }, harvester);
     var sample1 = folders.AvailableExtensions().Single(d => d.Id == "Sample1");
     Assert.That(sample1.Id, Is.Not.Empty);
     Assert.That(sample1.Author, Is.EqualTo("Bertrand Le Roy")); // Sample1
 }
示例#3
0
 public void NamesFromFoldersWithModuleTxtShouldFallBackToIdIfNotGiven() {
     var harvester = new ExtensionHarvester(new StubCacheManager(), new StubWebSiteFolder(), new Mock<ICriticalErrorProvider>().Object);
     IExtensionFolders folders = new ModuleFolders(new[] { _tempFolderName }, harvester);
     var names = folders.AvailableExtensions().Select(d => d.Name);
     Assert.That(names.Count(), Is.EqualTo(5));
     Assert.That(names, Has.Some.EqualTo("Le plug-in français")); // Sample1
     Assert.That(names, Has.Some.EqualTo("This is another test.txt")); // Sample3
     Assert.That(names, Has.Some.EqualTo("Sample4")); // Sample4
     Assert.That(names, Has.Some.EqualTo("SampleSix")); // Sample6
     Assert.That(names, Has.Some.EqualTo("Sample7")); // Sample7
 }
示例#4
0
 public void IdsFromFoldersWithModuleTxtShouldBeListed() {
     var harvester = new ExtensionHarvester(new StubCacheManager(), new StubWebSiteFolder(), new Mock<ICriticalErrorProvider>().Object);
     IExtensionFolders folders = new ModuleFolders(new[] { _tempFolderName }, harvester);
     var ids = folders.AvailableExtensions().Select(d => d.Id);
     Assert.That(ids.Count(), Is.EqualTo(5));
     Assert.That(ids, Has.Some.EqualTo("Sample1")); // Sample1 - obviously
     Assert.That(ids, Has.Some.EqualTo("Sample3")); // Sample3
     Assert.That(ids, Has.Some.EqualTo("Sample4")); // Sample4
     Assert.That(ids, Has.Some.EqualTo("Sample6")); // Sample6
     Assert.That(ids, Has.Some.EqualTo("Sample7")); // Sample7
 }
示例#5
0
 public void PathsFromFoldersWithModuleTxtShouldFallBackAppropriatelyIfNotGiven() {
     var harvester = new ExtensionHarvester(new StubCacheManager(), new StubWebSiteFolder(), new Mock<ICriticalErrorProvider>().Object);
     IExtensionFolders folders = new ModuleFolders(new[] { _tempFolderName }, harvester);
     var paths = folders.AvailableExtensions().Select(d => d.Path);
     Assert.That(paths.Count(), Is.EqualTo(5));
     Assert.That(paths, Has.Some.EqualTo("Sample1")); // Sample1 - Id, Name invalid URL segment
     Assert.That(paths, Has.Some.EqualTo("Sample3")); // Sample3 - Id, Name invalid URL segment
     Assert.That(paths, Has.Some.EqualTo("ThisIs.Sample4")); // Sample4 - Path
     Assert.That(paths, Has.Some.EqualTo("SampleSix")); // Sample6 - Name, no Path
     Assert.That(paths, Has.Some.EqualTo("Sample7")); // Sample7 - Id, no Name or Path
 }