@@ -7,14 +7,20 @@ import { Provider } from "react-redux";
7
7
import FileMetadataSearchBar , { extractDateFromDateString } from "../" ;
8
8
import FileFilter from "../../../entity/FileFilter" ;
9
9
import { AnnotationName , TOP_LEVEL_FILE_ANNOTATIONS } from "../../../constants" ;
10
- import { initialState , selection } from "../../../state" ;
10
+ import { initialState , reducer , reduxLogics , selection } from "../../../state" ;
11
11
12
12
describe ( "<FileMetadataSearchBar />" , ( ) => {
13
13
const ENTER_KEY = { keyCode : 13 } ;
14
14
15
- it ( "submits default file attribute when input is typed and submitted" , async ( ) => {
15
+ it ( "submits default file attribute when input is typed and submitted with no filters applied " , async ( ) => {
16
16
// Arrange
17
- const { actions, logicMiddleware, store } = configureMockStore ( { state : initialState } ) ;
17
+ const state = {
18
+ ...initialState ,
19
+ selection : {
20
+ filters : [ ] ,
21
+ } ,
22
+ } ;
23
+ const { actions, logicMiddleware, store } = configureMockStore ( { state } ) ;
18
24
const { getByRole } = render (
19
25
< Provider store = { store } >
20
26
< FileMetadataSearchBar />
@@ -37,9 +43,34 @@ describe("<FileMetadataSearchBar />", () => {
37
43
) . to . be . true ;
38
44
} ) ;
39
45
46
+ it ( "renders with past year date filter by default" , async ( ) => {
47
+ const { store } = configureMockStore ( { state : initialState } ) ;
48
+ const dateUpper = new Date ( ) ;
49
+ const dateLower = new Date ( ) ;
50
+ const upperYear = dateUpper . getFullYear ( ) ;
51
+ dateLower . setFullYear ( upperYear - 1 ) ;
52
+ const upperDateString = dateUpper . toDateString ( ) ;
53
+ const lowerDateString = dateLower . toDateString ( ) ;
54
+ const { getByText } = render (
55
+ < Provider store = { store } >
56
+ < FileMetadataSearchBar />
57
+ </ Provider >
58
+ ) ;
59
+ const uploadedDisplayName =
60
+ TOP_LEVEL_FILE_ANNOTATIONS . find ( ( a ) => a . name === AnnotationName . UPLOADED )
61
+ ?. displayName || "" ;
62
+ expect ( getByText ( uploadedDisplayName ) ) . to . not . be . empty ;
63
+ expect ( getByText ( upperDateString ) ) . to . not . be . empty ;
64
+ expect ( getByText ( lowerDateString ) ) . to . not . be . empty ;
65
+ } ) ;
66
+
40
67
it ( "submits newly chosen file attribute when input is typed and submitted" , async ( ) => {
41
68
// Arrange
42
- const { actions, logicMiddleware, store } = configureMockStore ( { state : initialState } ) ;
69
+ const { actions, logicMiddleware, store } = configureMockStore ( {
70
+ state : initialState ,
71
+ reducer,
72
+ logics : reduxLogics ,
73
+ } ) ;
43
74
const { getByRole, getByText } = render (
44
75
< Provider store = { store } >
45
76
< FileMetadataSearchBar />
@@ -48,7 +79,7 @@ describe("<FileMetadataSearchBar />", () => {
48
79
const searchQuery = "21304404.czi" ;
49
80
50
81
// Act
51
- fireEvent . click ( getByText ( "File name " ) ) ;
82
+ fireEvent . click ( getByText ( "Uploaded " ) ) ;
52
83
fireEvent . click ( getByText ( "File ID" ) ) ;
53
84
fireEvent . change ( getByRole ( "searchbox" ) , { target : { value : searchQuery } } ) ;
54
85
fireEvent . keyDown ( getByRole ( "searchbox" ) , ENTER_KEY ) ;
@@ -57,7 +88,9 @@ describe("<FileMetadataSearchBar />", () => {
57
88
// Assert
58
89
expect (
59
90
actions . includesMatch (
60
- selection . actions . addFileFilter ( new FileFilter ( AnnotationName . FILE_ID , searchQuery ) )
91
+ selection . actions . setFileFilters ( [
92
+ new FileFilter ( AnnotationName . FILE_ID , searchQuery ) ,
93
+ ] )
61
94
)
62
95
) . to . be . true ;
63
96
} ) ;
@@ -129,8 +162,12 @@ describe("<FileMetadataSearchBar />", () => {
129
162
130
163
it ( "creates RANGE() file filter of RANGE(day,day+1) when only start date is selected" , async ( ) => {
131
164
// Arrange
132
- const { actions, logicMiddleware, store } = configureMockStore ( { state : initialState } ) ;
133
- const { getByText } = render (
165
+ const { actions, logicMiddleware, store } = configureMockStore ( {
166
+ state : initialState ,
167
+ reducer,
168
+ logics : reduxLogics ,
169
+ } ) ;
170
+ const { getByText, getAllByRole, getByRole } = render (
134
171
< Provider store = { store } >
135
172
< FileMetadataSearchBar />
136
173
</ Provider >
@@ -147,18 +184,19 @@ describe("<FileMetadataSearchBar />", () => {
147
184
const expectedRange = `RANGE(${ startDate . toISOString ( ) } ,${ endDate . toISOString ( ) } )` ;
148
185
149
186
// Act
150
- fireEvent . click ( getByText ( "File name" ) ) ;
151
- fireEvent . click ( getByText ( "Uploaded" ) ) ;
187
+ const dropdownComponent = getAllByRole ( "combobox" ) . at ( 0 ) as HTMLElement ;
188
+ fireEvent . click ( dropdownComponent ) ;
189
+ fireEvent . click ( getByRole ( "option" , { name : "Uploaded" } ) ) ;
152
190
fireEvent . click ( getByText ( "Start of date range" ) ) ;
153
191
fireEvent . click ( getByText ( day ) ) ;
154
192
await logicMiddleware . whenComplete ( ) ;
155
193
156
194
// Assert
157
195
expect (
158
196
actions . includesMatch (
159
- selection . actions . addFileFilter (
160
- new FileFilter ( AnnotationName . UPLOADED , expectedRange )
161
- )
197
+ selection . actions . setFileFilters ( [
198
+ new FileFilter ( AnnotationName . UPLOADED , expectedRange ) ,
199
+ ] )
162
200
)
163
201
) . to . be . true ;
164
202
} ) ;
0 commit comments