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