public void ChangePropertyValues_ProjectWithNonDefaultAppDesignerFolderProperty_ReturnsCandidateMarkedWithAppDesignerFolderAndBubbleUp() { var designerService = IProjectDesignerServiceFactory.ImplementSupportsProjectDesigner(() => true); var propertiesProvider = CreateInstance(designerService); var inputTree = ProjectTreeParser.Parse(@" Root (flags: {ProjectRoot}) FooBar (flags: {Folder}) "); var expectedTree = ProjectTreeParser.Parse(@" Root (flags: {ProjectRoot}) FooBar (flags: {Folder AppDesignerFolder BubbleUp}) "); Verify(propertiesProvider, expectedTree, inputTree, folderName: "FooBar"); }
public void ChangePropertyValues_ProjectWithEmptyAppDesignerFolderProperty_DefaultsToProperties() { var designerService = IProjectDesignerServiceFactory.ImplementSupportsProjectDesigner(() => true); var propertiesProvider = CreateInstance(designerService); var inputTree = ProjectTreeParser.Parse(@" Root (flags: {ProjectRoot}) Properties (flags: {Folder}) "); var expectedTree = ProjectTreeParser.Parse(@" Root (flags: {ProjectRoot}) Properties (flags: {Folder AppDesignerFolder BubbleUp}) "); Verify(propertiesProvider, expectedTree, inputTree, folderName: ""); }
public void CalculatePropertyValues_WhenSharedItemsImportFileAsTree_SetsIconToSharedItemsImportFile(string input, string expected) { var capabilities = IProjectCapabilitiesServiceFactory.ImplementsContains(capability => { return(capability == ProjectCapabilities.SharedAssetsProject); }); var imageProvider = IProjectImageProviderFactory.ImplementGetProjectImage(ProjectImageKey.SharedItemsImportFile, new ProjectImageMoniker(new Guid("{A140CD9F-FF94-483C-87B1-9EF5BE9F469A}"), 1)); var propertiesProvider = CreateInstance(capabilities, imageProvider); var inputTree = ProjectTreeParser.Parse(input); var expectedTree = ProjectTreeParser.Parse(expected); var result = propertiesProvider.ChangePropertyValuesForEntireTree(inputTree); AssertAreEquivalent(expectedTree, result); }
public void ChangePropertyValues_ProjectWithNonDefaultMyProjectFolder_ReturnsCandidateMarkedWithAppDesignerFolderAndBubbleUp() { var designerService = IProjectDesignerServiceFactory.ImplementSupportsProjectDesigner(() => true); var propertiesProvider = CreateInstance(designerService, appDesignerFolder: "FooBar"); var inputTree = ProjectTreeParser.Parse(@" Root (flags: {ProjectRoot}) FooBar (flags: {Folder}) "); var expectedTree = ProjectTreeParser.Parse(@" Root (flags: {ProjectRoot}) FooBar (flags: {Folder AppDesignerFolder BubbleUp}) "); var result = propertiesProvider.ChangePropertyValuesForEntireTree(inputTree); AssertAreEquivalent(expectedTree, result); }
public void ChangePropertyValues_ProjectWithNullMyProjectFolder_DefaultsToMyProject() { var designerService = IProjectDesignerServiceFactory.ImplementSupportsProjectDesigner(() => true); var propertiesProvider = CreateInstance(designerService, appDesignerFolder: null); var inputTree = ProjectTreeParser.Parse(@" Root (flags: {ProjectRoot}) My Project (flags: {Folder}) "); var expectedTree = ProjectTreeParser.Parse(@" Root (flags: {ProjectRoot}) My Project (flags: {Folder AppDesignerFolder BubbleUp}) "); var result = propertiesProvider.ChangePropertyValuesForEntireTree(inputTree); AssertAreEquivalent(expectedTree, result); }
public static IPhysicalProjectTree Create(IProjectTreeProvider provider = null, IProjectTree currentTree = null, IProjectTreeService service = null) { currentTree ??= ProjectTreeParser.Parse("Project"); provider ??= new ProjectTreeProvider(); var mock = new Mock <IPhysicalProjectTree>(); mock.Setup(t => t.TreeProvider) .Returns(provider); mock.Setup(t => t.CurrentTree) .Returns(currentTree); mock.Setup(t => t.TreeService) .Returns(service ?? IProjectTreeServiceFactory.Create(currentTree, provider)); return(mock.Object); }
public async Task GetFile_WhenNoAppDesigner_ReturnsPathUnderProjectRoot() { var inputTree = ProjectTreeParser.Parse(@" Root (flags: {ProjectRoot}), FilePath: ""C:\Foo\testing.csproj"" Properties (flags: {Folder}), FilePath: ""C:\Foo\Properties"" Settings.settings, FilePath: ""C:\Foo\Properties\Settings.settings"""); var projectTreeProvider = new ProjectTreeProvider(); var projectTree = IPhysicalProjectTreeFactory.Create(currentTree: inputTree, provider: projectTreeProvider); var sourceItemsProvider = IProjectItemProviderFactory.Create(); var fileSystem = IFileSystemFactory.Create(path => true); var specialFilesManager = ISpecialFilesManagerFactory.ImplementGetFile(null); // No AppDesigner var provider = new SettingsFileSpecialFileProvider(projectTree, sourceItemsProvider, null, fileSystem, specialFilesManager); var filePath = await provider.GetFileAsync(SpecialFiles.AppSettings, SpecialFileFlags.FullPath); Assert.Equal(@"C:\Foo\Settings.settings", filePath); }
public async Task CreateFile_InRootFolder(string input, string expected, string expectedFilePath) { var inputTree = ProjectTreeParser.Parse(input); var expectedTree = ProjectTreeParser.Parse(expected); var projectTreeService = IProjectTreeServiceFactory.Create(inputTree); var sourceItemsProvider = IProjectItemProviderFactory.CreateWithAdd(inputTree); var fileSystem = IFileSystemFactory.Create(path => false, path => { // Verify that file is created on disk. Assert.Equal(expectedFilePath, path); return(null); }); var provider = new AppConfigFileSpecialFileProvider(projectTreeService, sourceItemsProvider, null, fileSystem); var filePath = await provider.GetFileAsync(SpecialFiles.AppConfig, SpecialFileFlags.CreateIfNotExist); Assert.Equal(expectedFilePath, filePath); AssertAreEquivalent(expectedTree, inputTree); }
public async Task CreateFile_CallTemplateProvider(string input, string expected, string expectedFilePath) { var inputTree = ProjectTreeParser.Parse(input); var expectedTree = ProjectTreeParser.Parse(expected); var projectTreeService = IProjectTreeServiceFactory.Create(inputTree); var sourceItemsProvider = IProjectItemProviderFactory.CreateWithAdd(inputTree); var fileSystem = IFileSystemFactory.Create(path => false, path => { // Verify that file is created on disk. Assert.False(true, "File system create shouldn't have been called directly."); return(null); }); var templateProvider = new Lazy <ICreateFileFromTemplateService>(() => ICreateFileFromTemplateServiceFactory.Create()); var provider = new SettingsFileSpecialFileProvider(projectTreeService, sourceItemsProvider, templateProvider, fileSystem); var filePath = await provider.GetFileAsync(SpecialFiles.AppSettings, SpecialFileFlags.CreateIfNotExist); Assert.Equal(expectedFilePath, filePath); AssertAreEquivalent(expectedTree, inputTree); }
public async Task CreateFile_InAppDesignerFolder(string input, string expected, string expectedFilePath) { var inputTree = ProjectTreeParser.Parse(input); var expectedTree = ProjectTreeParser.Parse(expected); var projectTreeProvider = IProjectTreeProviderFactory.Create(@"C:\Foo\Properties"); var projectTree = IPhysicalProjectTreeFactory.Create(provider: projectTreeProvider, currentTree: inputTree); var sourceItemsProvider = IProjectItemProviderFactory.CreateWithAdd(inputTree); var fileSystem = IFileSystemFactory.Create(path => false, path => { // Verify that file is created on disk. Assert.Equal(expectedFilePath, path); return(null); }); var specialFilesManager = ISpecialFilesManagerFactory.Create(); var provider = new SettingsFileSpecialFileProvider(projectTree, sourceItemsProvider, null, fileSystem, specialFilesManager); var filePath = await provider.GetFileAsync(SpecialFiles.AppSettings, SpecialFileFlags.CreateIfNotExist); Assert.Equal(expectedFilePath, filePath); AssertAreEquivalent(expectedTree, inputTree); }
public async Task AppManifestSpecialFileProvider_Test(string input, string appManifestPropertyValue, string expectedFilePath) { var inputTree = ProjectTreeParser.Parse(input); var projectTreeProvider = IProjectTreeProviderFactory.Create(@"C:\Foo\Properties", (root, path) => { root.TryFindImmediateChild(Path.GetFileName(path), out var node); return(node); }); var projectTree = IPhysicalProjectTreeFactory.Create(currentTree: inputTree, provider: projectTreeProvider); var sourceItemsProvider = IProjectItemProviderFactory.Create(); var fileSystem = IFileSystemFactory.Create(path => true); var specialFilesManager = ISpecialFilesManagerFactory.Create(); var properties = ProjectPropertiesFactory.Create(UnconfiguredProjectFactory.Create(), new PropertyPageData { Category = ConfigurationGeneralBrowseObject.SchemaName, PropertyName = ConfigurationGeneralBrowseObject.ApplicationManifestProperty, Value = appManifestPropertyValue }); var provider = new AppManifestSpecialFileProvider(projectTree, sourceItemsProvider, null, fileSystem, specialFilesManager, properties); var filePath = await provider.GetFileAsync(SpecialFiles.AppSettings, SpecialFileFlags.CreateIfNotExist); Assert.Equal(expectedFilePath, filePath); }