public async Task DependenciesGraphProvider_CheckChildrenAsync_TopLevelNodeWithoutId_ShouldGetProviderFromParent() { var projectPath = @"c:\myproject\project.csproj"; var parentNodeIdString = @"file:///[MyProvider;;;]"; var nodeFilePath = @"c:/myproject/MyNodeItemSpec"; var mockVsHierarchyItem = IVsHierarchyItemFactory.ImplementProperties( text: "MyNodeItemSpec", parentCanonicalName: parentNodeIdString); var inputNode = IGraphContextFactory.CreateNode(projectPath, nodeFilePath, hierarchyItem: mockVsHierarchyItem); var rootNode = IDependencyNodeFactory.FromJson(@" { ""Id"": { ""ProviderType"": ""MyProvider"", ""ItemSpec"": ""MyRootNode"" } }"); var existingNode = IDependencyNodeFactory.FromJson(@" { ""Id"": { ""ProviderType"": ""MyProvider"", ""ItemSpec"": ""MyNodeItemSpec"" } }"); var existingChildNode = IDependencyNodeFactory.FromJson(@" { ""Id"": { ""ProviderType"": ""MyProvider"", ""ItemSpec"": ""MyChildNodeItemSpec"" } }"); rootNode.AddChild(existingNode); existingNode.Children.Add(existingChildNode); var mockProvider = new IProjectDependenciesSubTreeProviderMock(); mockProvider.RootNode = rootNode; mockProvider.AddTestDependencyNodes(new[] { existingNode }); var mockProjectContextProvider = IDependenciesGraphProjectContextProviderFactory.Implement(projectPath, mockProvider); var mockGraphContext = IGraphContextFactory.ImplementContainsChildren(inputNode); var provider = new DependenciesGraphProvider(mockProjectContextProvider, Mock.Of <SVsServiceProvider>(), new IProjectThreadingServiceMock().JoinableTaskContext); // Act await provider.BeginGetGraphDataAsync(mockGraphContext); // Assert Assert.True(inputNode.GetValue <bool>(DgmlNodeProperties.ContainsChildren)); Assert.NotNull(inputNode.GetValue <IDependencyNode>(DependenciesGraphSchema.DependencyNodeProperty)); Assert.Equal(existingNode, inputNode.GetValue <IDependencyNode>(DependenciesGraphSchema.DependencyNodeProperty)); Assert.True(inputNode.GetValue(DependenciesGraphSchema.ProviderProperty) is IProjectDependenciesSubTreeProviderMock); }