public async Task TryHandleCommandAsync_FolderAsNodes_CallsShowAddProjectItemDlgAsyncWithFilter()
        {
            int    callCount       = 0;
            string dirFilter       = "";
            string templateFilter  = "";
            string browseLocations = "";
            var    g      = new Guid();
            string folder = "folderName";

            var dlg = IVsAddProjectItemDlgFactory.ImplementWithParams((id, guid, project, flags, dFilter, tFilter, browseLocs, filter, showAgain) =>
            {
                callCount++;
                dirFilter       = dFilter;
                templateFilter  = tFilter;
                browseLocations = browseLocs;
                return(0);
            }, g, folder, string.Empty, 0);

            var command = CreateInstance(provider: IProjectTreeProviderFactory.Create(folder), addItemDialog: dlg);

            var tree = ProjectTreeParser.Parse(@"
Root (flags: {ProjectRoot})
    Properties (flags: {Folder AppDesignerFolder})
");

            var nodes = ImmutableHashSet.Create(tree.Children[0]);

            await command.TryHandleCommandAsync(nodes, TestAddItemCommand.CommandId, true, 0, IntPtr.Zero, IntPtr.Zero);

            Assert.Equal(1, callCount);
            Assert.Equal(TestAddItemCommand.ResourceIds.DirName.ToString(), dirFilter);
            Assert.Equal(TestAddItemCommand.ResourceIds.TemplateName.ToString(), templateFilter);
            Assert.Equal("folderName", browseLocations);
        }
        public async Task TryHandleCommandAsync_FolderAsNodes_ReturnsTrue()
        {
            var command = CreateInstance(provider: IProjectTreeProviderFactory.Create(""), dlg:
                                         IVsAddProjectItemDlgFactory.Create(0));

            var tree = ProjectTreeParser.Parse(@"
Root (flags: {ProjectRoot})
    Code (flags: {Folder})
");

            var nodes = ImmutableHashSet.Create(tree.Children[0]);

            var result = await command.TryHandleCommandAsync(nodes, GetCommandId(), true, 0, IntPtr.Zero, IntPtr.Zero);

            Assert.True(result);
        }
        public async Task TryHandleCommand_FolderAsNodes_ReturnsTrueWhenUserClicksCancel()
        {
            var command = CreateInstance(provider: IProjectTreeProviderFactory.Create(""), addItemDialog:
                                         IVsAddProjectItemDlgFactory.Create(VSConstants.OLE_E_PROMPTSAVECANCELLED));

            var tree = ProjectTreeParser.Parse(@"
Root (flags: {ProjectRoot})
    Code (flags: {Folder})
");

            var nodes = ImmutableHashSet.Create(tree.Children[0]);

            var result = await command.TryHandleCommandAsync(nodes, TestAddItemCommand.CommandId, true, 0, IntPtr.Zero, IntPtr.Zero);

            Assert.True(result);
        }
        public async Task GetCommandStatusAsync_FolderAsNodes_ReturnsHandled()
        {
            var command = CreateInstance(provider: IProjectTreeProviderFactory.Create(""), dlg:
                                         IVsAddProjectItemDlgFactory.Create(0));

            var tree = ProjectTreeParser.Parse(@"
Root (flags: {ProjectRoot})
    Code (flags: {Folder})
");

            var nodes = ImmutableHashSet.Create(tree.Children[0]);

            var result = await command.GetCommandStatusAsync(nodes, GetCommandId(), true, "commandText", (CommandStatus)0);

            Assert.True(result.Handled);
            Assert.Equal("commandText", result.CommandText);
            Assert.Equal(CommandStatus.Enabled | CommandStatus.Supported, result.Status);
        }
        public async Task TryHandleCommandAsync_FolderAsNodes_CallsShowAddProjectItemDlgAsyncWithFilter()
        {
            int    callCount       = 0;
            string dirFilter       = "";
            string templateFilter  = "";
            string browseLocations = "";
            Guid   g      = new Guid();
            string folder = "folderName";

            var dlg = IVsAddProjectItemDlgFactory.ImplementWithParams((id, guid, project, flags, dFilter, tFilter, browseLocs, filter, showAgain) =>
            {
                callCount++;
                dirFilter       = dFilter;
                templateFilter  = tFilter;
                browseLocations = browseLocs;
                return(0);
            }, g, folder, string.Empty, 0);

            var projectProperties = ProjectPropertiesFactory.Create(UnconfiguredProjectFactory.Create(), new[] {
                new PropertyPageData {
                    Category = ConfigurationGeneral.SchemaName, PropertyName = ConfigurationGeneral.ProjectGuidProperty, Value = g.ToString()
                }
            });

            var command = CreateInstance(provider: IProjectTreeProviderFactory.Create(folder), dlg: dlg);

            var tree = ProjectTreeParser.Parse(@"
Root (flags: {ProjectRoot})
    Properties (flags: {Folder AppDesignerFolder})
");

            var nodes = ImmutableHashSet.Create(tree.Children[0]);

            await command.TryHandleCommandAsync(nodes, GetCommandId(), true, 0, IntPtr.Zero, IntPtr.Zero);

            Assert.Equal(1, callCount);
            Assert.Equal(DirName, dirFilter);
            Assert.Equal(VSResources.ClassTemplateName, templateFilter);
            Assert.Equal("folderName", browseLocations);
        }
        public async Task TryHandleCommand_FolderAsNodes_ReturnsTrueWhenUserClicksCancel()
        {
            var projectProperties = ProjectPropertiesFactory.Create(UnconfiguredProjectFactory.Create(), new[] {
                new PropertyPageData {
                    Category = ConfigurationGeneral.SchemaName, PropertyName = ConfigurationGeneral.ProjectGuidProperty, Value = Guid.NewGuid().ToString()
                }
            });

            var command = CreateInstance(provider: IProjectTreeProviderFactory.Create(""), dlg:
                                         IVsAddProjectItemDlgFactory.Create(VSConstants.OLE_E_PROMPTSAVECANCELLED));

            var tree = ProjectTreeParser.Parse(@"
Root (flags: {ProjectRoot})
    Code (flags: {Folder})
");

            var nodes = ImmutableHashSet.Create(tree.Children[0]);

            var result = await command.TryHandleCommandAsync(nodes, GetCommandId(), true, 0, IntPtr.Zero, IntPtr.Zero);

            Assert.True(result);
        }
Пример #7
0
        public async Task TryHandleCommandAsync_FolderAsNodes_ReturnsTrue()
        {
            var projectProperties = ProjectPropertiesFactory.Create(IUnconfiguredProjectFactory.Create(), new[] {
                new PropertyPageData {
                    Category = "Project", PropertyName = "ProjectGuid", Value = Guid.NewGuid().ToString()
                }
            });

            var command = CreateInstance(provider: IProjectTreeProviderFactory.Create(""), dlg:
                                         IVsAddProjectItemDlgFactory.Create(0), properties: () => projectProperties);

            var tree = ProjectTreeParser.Parse(@"
Root (flags: {ProjectRoot})
    Code (flags: {Folder})
");

            var nodes = ImmutableHashSet.Create(tree.Children[0]);

            var result = await command.TryHandleCommandAsync(nodes, GetCommandId(), true, 0, IntPtr.Zero, IntPtr.Zero);

            Assert.True(result);
        }
        public async Task GetCommandStatusAsync_FolderAsNodes_ReturnsHandled()
        {
            var projectProperties = ProjectPropertiesFactory.Create(IUnconfiguredProjectFactory.Create(), new[] {
                new PropertyPageData {
                    Category = ConfigurationGeneral.SchemaName, PropertyName = ConfigurationGeneral.ProjectGuidProperty, Value = Guid.NewGuid().ToString()
                }
            });

            var command = CreateInstance(provider: IProjectTreeProviderFactory.Create(""), dlg:
                                         IVsAddProjectItemDlgFactory.Create(0), properties: () => projectProperties);

            var tree = ProjectTreeParser.Parse(@"
Root (flags: {ProjectRoot})
    Code (flags: {Folder})
");

            var nodes = ImmutableHashSet.Create(tree.Children[0]);

            var result = await command.GetCommandStatusAsync(nodes, GetCommandId(), true, "commandText", (CommandStatus)0);

            Assert.True(result.Handled);
            Assert.Equal("commandText", result.CommandText);
            Assert.Equal(CommandStatus.Enabled | CommandStatus.Supported, result.Status);
        }
        public async Task GetCommandStatusAsync_NonAppDesignerFolderAsNodes_ReturnsUnhandled()
        {
            var command = CreateInstance(provider: IProjectTreeProviderFactory.Create(), dlg: IVsAddProjectItemDlgFactory.Create());

            var tree = ProjectTreeParser.Parse(@"
Root (flags: {ProjectRoot})
    Properties (flags: {AppDesignerFolder})
");

            var nodes = ImmutableHashSet.Create(tree.Children[0]);

            var result = await command.GetCommandStatusAsync(nodes, GetCommandId(), true, "commandText", (CommandStatus)0);

            Assert.False(result.Handled);
        }
        public async Task TryHandleCommandAsync_NonRegularFolderAsNodes_ReturnsFalse()
        {
            var command = CreateInstance(provider: IProjectTreeProviderFactory.Create(), addItemDialog: IVsAddProjectItemDlgFactory.Create());

            var tree = ProjectTreeParser.Parse(@"
Root (flags: {ProjectRoot})
    Properties (flags: {AppDesignerFolder})
");

            var nodes = ImmutableHashSet.Create(tree.Children[0]);

            var result = await command.TryHandleCommandAsync(nodes, TestAddItemCommand.CommandId, true, 0, IntPtr.Zero, IntPtr.Zero);

            Assert.False(result);
        }