Ejemplo n.º 1
0
        public void AddPackages_Adds_New_Depedenency()
        {
            string initialJson  = @"{
  ""dependencies"": {
    ""Newtonsoft.Json"": ""5.0.8"",
    ""Microsoft.Net.Runtime.Interfaces"": """"
    }
}";
            string expectedJson = @"{
  ""dependencies"": {
    ""Newtonsoft.Json"": ""5.0.8"",
    ""Microsoft.Net.Runtime.Interfaces"": """",
    ""Microsoft.Net.Runtime"": ""1.0.0""
  }
}";

            _mockFileSystem.WriteAllText(_projectJsonPath, initialJson);

            _packageInstaller.AddPackages(new[] { new PackageMetadata()
                                                  {
                                                      Name    = "Microsoft.Net.Runtime",
                                                      Version = "1.0.0"
                                                  } });

            var actualJson = _mockFileSystem.ReadAllText(_projectJsonPath);

            Assert.Equal(expectedJson, actualJson);
        }
Ejemplo n.º 2
0
        public void FilesLocator_Throws_When_Multiple_Matches_In_OneSearchPath()
        {
            MockFileSystem fs = new MockFileSystem();
            var folders = new[] { @"C:\One", @"C:\One\Sub1", @"C:\One\Sub2" };
            fs.AddFolders(folders);

            fs.WriteAllText(@"C:\One\Sub1\template.cshtml", "");
            fs.WriteAllText(@"C:\One\Sub2\template.cshtml", "");
            FilesLocator locator = new FilesLocator(fs);

            var ex = Assert.Throws<InvalidOperationException>(() => locator.GetFilePath("template.cshtml", new[] { @"C:\One" }));
            Assert.Equal(@"Multiple files with name template.cshtml found within C:\One", ex.Message);
        }
Ejemplo n.º 3
0
        public void FilesLocator_Throws_When_No_Matches_In_SearchPaths()
        {
            MockFileSystem fs = new MockFileSystem();
            var folders = new[] { @"C:\One", @"C:\Two" };
            fs.AddFolders(folders);

            fs.WriteAllText(@"C:\One\template1.cshtml", "");
            fs.WriteAllText(@"C:\Two\template2.cshtml", "");
            FilesLocator locator = new FilesLocator(fs);

            var ex = Assert.Throws<InvalidOperationException>(() => locator.GetFilePath("template.cshtml", folders));
            Assert.Equal(@"A file matching the name template.cshtml was not found within any of the folders: C:\One;C:\Two", ex.Message);
        }
Ejemplo n.º 4
0
        public void FilesLocator_Returns_Entry_From_FirstSearchPath()
        {
            MockFileSystem fs = new MockFileSystem();
            var folders = new[] { @"C:\One", @"C:\Two" };
            fs.AddFolders(folders);

            fs.WriteAllText(@"C:\One\template.cshtml", "");
            fs.WriteAllText(@"C:\Two\template.cshtml", "");
            FilesLocator locator = new FilesLocator(fs);

            var result = locator.GetFilePath("template.cshtml", folders);

            Assert.Equal(@"C:\One\template.cshtml", result);
        }
Ejemplo n.º 5
0
        public void FilesLocator_Throws_When_No_Matches_In_SearchPaths()
        {
            MockFileSystem fs      = new MockFileSystem();
            var            folders = new[] { @"C:\One", @"C:\Two" };

            fs.AddFolders(folders);

            fs.WriteAllText(@"C:\One\template1.cshtml", "");
            fs.WriteAllText(@"C:\Two\template2.cshtml", "");
            FilesLocator locator = new FilesLocator(fs);

            var ex = Assert.Throws <InvalidOperationException>(() => locator.GetFilePath("template.cshtml", folders));

            Assert.Equal(@"A file matching the name template.cshtml was not found within any of the folders: C:\One;C:\Two", ex.Message);
        }
Ejemplo n.º 6
0
        public void FilesLocator_Throws_When_Multiple_Matches_In_OneSearchPath()
        {
            MockFileSystem fs      = new MockFileSystem();
            var            folders = new[] { @"C:\One", @"C:\One\Sub1", @"C:\One\Sub2" };

            fs.AddFolders(folders);

            fs.WriteAllText(@"C:\One\Sub1\template.cshtml", "");
            fs.WriteAllText(@"C:\One\Sub2\template.cshtml", "");
            FilesLocator locator = new FilesLocator(fs);

            var ex = Assert.Throws <InvalidOperationException>(() => locator.GetFilePath("template.cshtml", new[] { @"C:\One" }));

            Assert.Equal(@"Multiple files with name template.cshtml found within C:\One", ex.Message);
        }
Ejemplo n.º 7
0
        public void FilesLocator_Returns_Entry_From_FirstSearchPath()
        {
            MockFileSystem fs      = new MockFileSystem();
            var            folders = new[] { @"C:\One", @"C:\Two" };

            fs.AddFolders(folders);

            fs.WriteAllText(@"C:\One\template.cshtml", "");
            fs.WriteAllText(@"C:\Two\template.cshtml", "");
            FilesLocator locator = new FilesLocator(fs);

            var result = locator.GetFilePath("template.cshtml", folders);

            Assert.Equal(@"C:\One\template.cshtml", result);
        }
Ejemplo n.º 8
0
        public async Task AddFileFromTemplateAsync_Writes_If_Template_Processing_Is_Successful()
        {
            var mockFilesLocator = new Mock <IFilesLocator>();
            var mockTemplating   = new Mock <ITemplating>();
            var mockFileSystem   = new MockFileSystem();

            var templateName    = "TemplateName";
            var templatePath    = "C:\template.cshtml";
            var templateContent = "TemplateContent";
            var outputPath      = @"C:\Output.txt";
            var generatedText   = "GeneratedText";

            mockFilesLocator.Setup(fl => fl.GetFilePath(templateName, It.IsAny <IEnumerable <string> >()))
            .Returns(templatePath);
            mockFileSystem.WriteAllText(templatePath, templateContent);
            mockTemplating.Setup(templating => templating.RunTemplateAsync(templateContent, null))
            .Returns(Task.FromResult(new TemplateResult()
            {
                ProcessingException = null,
                GeneratedText       = generatedText
            }));

            var codeGeneratorActionService = new CodeGeneratorActionsService(
                mockTemplating.Object, mockFilesLocator.Object, mockFileSystem);

            await codeGeneratorActionService.AddFileFromTemplateAsync(outputPath,
                                                                      templateName,
                                                                      new[] { "TemplateFolder1", "TemplateFolder2" },
                                                                      null);

            Assert.True(mockFileSystem.FileExists(outputPath));
            Assert.Equal(generatedText, mockFileSystem.ReadAllText(outputPath));
        }
Ejemplo n.º 9
0
        public async Task AddFileFromTemplateAsync_Throws_If_Template_Processing_Has_Exceptions()
        {
            var mockFilesLocator = new Mock <IFilesLocator>();
            var mockTemplating   = new Mock <ITemplating>();
            var mockFileSystem   = new MockFileSystem();

            var templateName        = "TemplateName";
            var templatePath        = "C:\template.cshtml";
            var templateContent     = "TemplateContent";
            var processingException = new TemplateProcessingException(new[] { "Error1" }, string.Empty);

            mockFilesLocator.Setup(fl => fl.GetFilePath(templateName, It.IsAny <IEnumerable <string> >()))
            .Returns(templatePath);
            mockFileSystem.WriteAllText(templatePath, templateContent);
            mockTemplating.Setup(templating => templating.RunTemplateAsync(templateContent, null))
            .Returns(Task.FromResult(new TemplateResult()
            {
                ProcessingException = processingException
            }));

            var codeGeneratorActionService = new CodeGeneratorActionsService(
                mockTemplating.Object, mockFilesLocator.Object, mockFileSystem);

            var ex = await Assert.ThrowsAsync <InvalidOperationException>(async() =>
                                                                          await codeGeneratorActionService.AddFileFromTemplateAsync("Dummy",
                                                                                                                                    templateName,
                                                                                                                                    new[] { "TemplateFolder1", "TemplateFolder2" },
                                                                                                                                    null));

            Assert.Equal("There was an error running the template " + templatePath + ": Template Processing Failed:Error1", ex.Message);
        }
        public async Task AddFileFromTemplateAsync_Writes_If_Template_Processing_Is_Successful()
        {
            var mockFilesLocator = new Mock<IFilesLocator>();
            var mockTemplating = new Mock<ITemplating>();
            var mockFileSystem = new MockFileSystem();

            var templateName = "TemplateName";
            var templatePath = "C:\template.cshtml";
            var templateContent = "TemplateContent";
            var outputPath = @"C:\Output.txt";
            var generatedText = "GeneratedText";

            mockFilesLocator.Setup(fl => fl.GetFilePath(templateName, It.IsAny<IEnumerable<string>>()))
                .Returns(templatePath);
            mockFileSystem.WriteAllText(templatePath, templateContent);
            mockTemplating.Setup(templating => templating.RunTemplateAsync(templateContent, null))
                .Returns(Task.FromResult(new TemplateResult()
                {
                    ProcessingException = null,
                    GeneratedText = generatedText
                }));

            var codeGeneratorActionService = new CodeGeneratorActionsService(
                mockTemplating.Object, mockFilesLocator.Object, mockFileSystem);

            await codeGeneratorActionService.AddFileFromTemplateAsync(outputPath,
                    templateName,
                    new[] { "TemplateFolder1", "TemplateFolder2" },
                    null);

            Assert.True(mockFileSystem.FileExists(outputPath));
            Assert.Equal(generatedText, mockFileSystem.ReadAllText(outputPath));
        }
        public async Task AddFileFromTemplateAsync_Throws_If_Template_Processing_Has_Exceptions()
        {
            var mockFilesLocator = new Mock<IFilesLocator>();
            var mockTemplating = new Mock<ITemplating>();
            var mockFileSystem = new MockFileSystem();

            var templateName = "TemplateName";
            var templatePath = "C:\template.cshtml";
            var templateContent = "TemplateContent";
            var processingException = new TemplateProcessingException(new[] { "Error1" }, string.Empty);

            mockFilesLocator.Setup(fl => fl.GetFilePath(templateName, It.IsAny<IEnumerable<string>>()))
                .Returns(templatePath);
            mockFileSystem.WriteAllText(templatePath, templateContent);
            mockTemplating.Setup(templating => templating.RunTemplateAsync(templateContent, null))
                .Returns(Task.FromResult(new TemplateResult()
                {
                    ProcessingException = processingException
                }));

            var codeGeneratorActionService = new CodeGeneratorActionsService(
                mockTemplating.Object, mockFilesLocator.Object, mockFileSystem);

            var ex = await Assert.ThrowsAsync<InvalidOperationException>(async () =>
                await codeGeneratorActionService.AddFileFromTemplateAsync("Dummy",
                    templateName,
                    new[] { "TemplateFolder1", "TemplateFolder2" },
                    null));
            Assert.Equal("There was an error running the template " + templatePath + ": Template Processing Failed:Error1", ex.Message);
        }