@@ -11,21 +11,151 @@ describe('renderer/components/filters/SearchFilter.tsx', () => {
1111 jest . clearAllMocks ( ) ;
1212 } ) ;
1313
14- it ( 'adds include actor token with prefix' , ( ) => {
15- render (
16- < AppContext . Provider value = { { settings : mockSettings , updateFilter } } >
17- < SearchFilter />
18- </ AppContext . Provider > ,
19- ) ;
20-
21- const includeInput = screen . getByTitle ( 'Include actors' ) ;
22- fireEvent . change ( includeInput , { target : { value : 'user:octocat' } } ) ;
23- fireEvent . keyDown ( includeInput , { key : 'Enter' } ) ;
24-
25- expect ( updateFilter ) . toHaveBeenCalledWith (
26- 'filterIncludeActors' ,
27- 'user:octocat' ,
28- true ,
29- ) ;
14+ describe ( 'Include Search Tokens' , ( ) => {
15+ it ( 'adds include actor token with prefix' , ( ) => {
16+ render (
17+ < AppContext . Provider value = { { settings : mockSettings , updateFilter } } >
18+ < SearchFilter />
19+ </ AppContext . Provider > ,
20+ ) ;
21+
22+ const includeInput = screen . getByTitle ( 'Include searches' ) ;
23+ fireEvent . change ( includeInput , { target : { value : 'author:octocat' } } ) ;
24+ fireEvent . keyDown ( includeInput , { key : 'Enter' } ) ;
25+
26+ expect ( updateFilter ) . toHaveBeenCalledWith (
27+ 'filterIncludeSearchTokens' ,
28+ 'author:octocat' ,
29+ true ,
30+ ) ;
31+ } ) ;
32+
33+ it ( 'adds include org token with prefix' , ( ) => {
34+ render (
35+ < AppContext . Provider value = { { settings : mockSettings , updateFilter } } >
36+ < SearchFilter />
37+ </ AppContext . Provider > ,
38+ ) ;
39+
40+ const includeInput = screen . getByTitle ( 'Include searches' ) ;
41+ fireEvent . change ( includeInput , { target : { value : 'org:gitify-app' } } ) ;
42+ fireEvent . keyDown ( includeInput , { key : 'Enter' } ) ;
43+
44+ expect ( updateFilter ) . toHaveBeenCalledWith (
45+ 'filterIncludeSearchTokens' ,
46+ 'org:gitify-app' ,
47+ true ,
48+ ) ;
49+ } ) ;
50+
51+ it ( 'adds include repo token with prefix' , ( ) => {
52+ render (
53+ < AppContext . Provider value = { { settings : mockSettings , updateFilter } } >
54+ < SearchFilter />
55+ </ AppContext . Provider > ,
56+ ) ;
57+
58+ const includeInput = screen . getByTitle ( 'Include searches' ) ;
59+ fireEvent . change ( includeInput , {
60+ target : { value : 'repo:gitify-app/gitify' } ,
61+ } ) ;
62+ fireEvent . keyDown ( includeInput , { key : 'Enter' } ) ;
63+
64+ expect ( updateFilter ) . toHaveBeenCalledWith (
65+ 'filterIncludeSearchTokens' ,
66+ 'repo:gitify-app/gitify' ,
67+ true ,
68+ ) ;
69+ } ) ;
70+
71+ it ( 'prevent unrecognized include prefixes' , ( ) => {
72+ render (
73+ < AppContext . Provider value = { { settings : mockSettings , updateFilter } } >
74+ < SearchFilter />
75+ </ AppContext . Provider > ,
76+ ) ;
77+
78+ const includeInput = screen . getByTitle ( 'Include searches' ) ;
79+ fireEvent . change ( includeInput , {
80+ target : { value : 'some:search' } ,
81+ } ) ;
82+ fireEvent . keyDown ( includeInput , { key : 'Enter' } ) ;
83+
84+ expect ( updateFilter ) . not . toHaveBeenCalledWith ( ) ;
85+ } ) ;
86+ } ) ;
87+
88+ describe ( 'Exclude Search Tokens' , ( ) => {
89+ it ( 'adds exclude actor token with prefix' , ( ) => {
90+ render (
91+ < AppContext . Provider value = { { settings : mockSettings , updateFilter } } >
92+ < SearchFilter />
93+ </ AppContext . Provider > ,
94+ ) ;
95+
96+ const includeInput = screen . getByTitle ( 'Exclude searches' ) ;
97+ fireEvent . change ( includeInput , { target : { value : 'author:octocat' } } ) ;
98+ fireEvent . keyDown ( includeInput , { key : 'Enter' } ) ;
99+
100+ expect ( updateFilter ) . toHaveBeenCalledWith (
101+ 'filterExcludeSearchTokens' ,
102+ 'author:octocat' ,
103+ true ,
104+ ) ;
105+ } ) ;
106+
107+ it ( 'adds exclude org token with prefix' , ( ) => {
108+ render (
109+ < AppContext . Provider value = { { settings : mockSettings , updateFilter } } >
110+ < SearchFilter />
111+ </ AppContext . Provider > ,
112+ ) ;
113+
114+ const excludeInput = screen . getByTitle ( 'Exclude searches' ) ;
115+ fireEvent . change ( excludeInput , { target : { value : 'org:gitify-app' } } ) ;
116+ fireEvent . keyDown ( excludeInput , { key : 'Enter' } ) ;
117+
118+ expect ( updateFilter ) . toHaveBeenCalledWith (
119+ 'filterExcludeSearchTokens' ,
120+ 'org:gitify-app' ,
121+ true ,
122+ ) ;
123+ } ) ;
124+
125+ it ( 'adds exclude repo token with prefix' , ( ) => {
126+ render (
127+ < AppContext . Provider value = { { settings : mockSettings , updateFilter } } >
128+ < SearchFilter />
129+ </ AppContext . Provider > ,
130+ ) ;
131+
132+ const excludeInput = screen . getByTitle ( 'Exclude searches' ) ;
133+ fireEvent . change ( excludeInput , {
134+ target : { value : 'repo:gitify-app/gitify' } ,
135+ } ) ;
136+ fireEvent . keyDown ( excludeInput , { key : 'Enter' } ) ;
137+
138+ expect ( updateFilter ) . toHaveBeenCalledWith (
139+ 'filterExcludeSearchTokens' ,
140+ 'repo:gitify-app/gitify' ,
141+ true ,
142+ ) ;
143+ } ) ;
144+
145+ it ( 'prevent unrecognized exclude prefixes' , ( ) => {
146+ render (
147+ < AppContext . Provider value = { { settings : mockSettings , updateFilter } } >
148+ < SearchFilter />
149+ </ AppContext . Provider > ,
150+ ) ;
151+
152+ const excludeInput = screen . getByTitle ( 'Exclude searches' ) ;
153+ fireEvent . change ( excludeInput , {
154+ target : { value : 'some:search' } ,
155+ } ) ;
156+ fireEvent . keyDown ( excludeInput , { key : 'Enter' } ) ;
157+
158+ expect ( updateFilter ) . not . toHaveBeenCalledWith ( ) ;
159+ } ) ;
30160 } ) ;
31161} ) ;
0 commit comments