Skip to content

Commit 0373d55

Browse files
committed
fix: add unit tests for TreeViewerFilter
1 parent a13b160 commit 0373d55

1 file changed

Lines changed: 97 additions & 0 deletions

File tree

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
package io.snyk.eclipse.plugin.views.snyktoolview;
2+
3+
import static org.junit.jupiter.api.Assertions.assertFalse;
4+
import static org.junit.jupiter.api.Assertions.assertTrue;
5+
import static org.mockito.Mockito.mock;
6+
import static org.mockito.Mockito.when;
7+
8+
import java.util.function.Predicate;
9+
10+
import org.eclipse.jface.viewers.ITreeContentProvider;
11+
import org.eclipse.jface.viewers.TreeViewer;
12+
import org.junit.jupiter.api.BeforeEach;
13+
import org.junit.jupiter.api.Test;
14+
15+
import io.snyk.languageserver.protocolextension.messageObjects.scanResults.Issue;
16+
17+
class TreeViewerFilterTest {
18+
19+
private TreeViewerFilter filter;
20+
private TreeViewer mockViewer;
21+
private ITreeContentProvider mockContentProvider;
22+
23+
@BeforeEach
24+
void setUp() {
25+
filter = new TreeViewerFilter();
26+
mockViewer = mock(TreeViewer.class);
27+
mockContentProvider = mock(ITreeContentProvider.class);
28+
when(mockViewer.getContentProvider()).thenReturn(mockContentProvider);
29+
}
30+
31+
@Test
32+
void testSelect_IssueTreeNodeWithNoFilters() {
33+
IssueTreeNode issueNode = mock(IssueTreeNode.class);
34+
Issue issue = mock(Issue.class);
35+
when(issueNode.getIssue()).thenReturn(issue);
36+
37+
assertTrue(filter.select(mockViewer, null, issueNode));
38+
}
39+
40+
@Test
41+
void testSelect_IssueTreeNodeWithMatchingFilter() {
42+
IssueTreeNode issueNode = mock(IssueTreeNode.class);
43+
Issue issue = mock(Issue.class);
44+
when(issueNode.getIssue()).thenReturn(issue);
45+
46+
Predicate<Issue> predicate = i -> true; // Always matches
47+
filter.setFilterPredicate("test", predicate);
48+
49+
assertTrue(filter.select(mockViewer, null, issueNode));
50+
}
51+
52+
@Test
53+
void testSelect_IssueTreeNodeWithNonMatchingFilter() {
54+
IssueTreeNode issueNode = mock(IssueTreeNode.class);
55+
Issue issue = mock(Issue.class);
56+
when(issueNode.getIssue()).thenReturn(issue);
57+
58+
Predicate<Issue> predicate = i -> false; // Never matches
59+
filter.setFilterPredicate("test", predicate);
60+
61+
assertFalse(filter.select(mockViewer, null, issueNode));
62+
}
63+
64+
@Test
65+
void testSelect_FileTreeNodeWithVisibleChildren() {
66+
FileTreeNode fileNode = mock(FileTreeNode.class);
67+
IssueTreeNode visibleChild = mock(IssueTreeNode.class);
68+
69+
when(mockContentProvider.getChildren(fileNode)).thenReturn(new Object[] { visibleChild });
70+
71+
Issue issue = mock(Issue.class);
72+
when(visibleChild.getIssue()).thenReturn(issue);
73+
74+
assertTrue(filter.select(mockViewer, null, fileNode));
75+
}
76+
77+
@Test
78+
void testSelect_FileTreeNodeWithNoVisibleChildren() {
79+
FileTreeNode fileNode = mock(FileTreeNode.class);
80+
81+
when(mockContentProvider.getChildren(fileNode)).thenReturn(new Object[] {});
82+
83+
assertFalse(filter.select(mockViewer, null, fileNode));
84+
}
85+
86+
@Test
87+
void testRemoveFilterPredicate() {
88+
Predicate<Issue> predicate = i -> false;
89+
filter.setFilterPredicate("test", predicate);
90+
91+
assertTrue(filter.select(mockViewer, null, mock(IssueTreeNode.class)));
92+
93+
filter.removeFilterPredicate("test");
94+
95+
assertTrue(filter.select(mockViewer, null, mock(IssueTreeNode.class)));
96+
}
97+
}

0 commit comments

Comments
 (0)