@@ -244,66 +244,70 @@ describe("Handle invalid department inputs appropriately", () => {
244244 } )
245245} )
246246
247- describe ( "Handle invalid program inputs appropriately" , ( ) => {
247+ describe ( "Handle an incorrect program input appropriately" , ( ) => {
248248 beforeEach ( ( ) => {
249+ cleanup ( )
250+ fetchMock . restore ( )
251+ fetchMock . get ( "/programs" , "" )
252+ fetchMock . get ( "/courses" , "" )
249253 render ( < GenerateForm /> )
250254 } )
251- it . each ( [
252- {
253- programInputText : "ASMAJ1234, asdasdasd, ABCDE1234" ,
254- expectedWarning : "Invalid program code: asdasdasd" ,
255- } ,
256- {
257- programInputText : "ASMIN1689 ASFOC1689F" ,
258- expectedWarning : "Invalid program code: ASMIN1689 ASFOC1689F" ,
259- } ,
260- {
261- programInputText : "" ,
262- expectedWarning : "Cannot generate graph – no programs entered!" ,
263- } ,
264- {
265- programInputText : " " ,
266- expectedWarning : "Cannot generate graph – no programs entered!" ,
267- } ,
268- ] ) ( ".$programInputText" , async ( { programInputText, expectedWarning } ) => {
255+
256+ it ( "Entering no text should return an error" , async ( ) => {
269257 const user = userEvent . setup ( )
258+ const categorySelect = screen . getByDisplayValue ( "Courses" )
259+ await user . selectOptions ( categorySelect , "programs" )
260+ const genButton = screen . getByText ( "Generate" )
261+ await user . click ( genButton )
262+ const errorMessage = await screen . findByText (
263+ "Cannot generate graph – no programs entered!"
264+ )
265+ expect ( errorMessage ) . not . toBeNull ( )
266+ } )
270267
268+ it ( "Entering blank text should return an error" , async ( ) => {
269+ const user = userEvent . setup ( )
271270 const categorySelect = screen . getByDisplayValue ( "Courses" )
272271 await user . selectOptions ( categorySelect , "programs" )
272+ const coursesInputField = screen . getByRole ( "combobox" , { name : "programs" } )
273+ await user . click ( coursesInputField )
274+ await user . tripleClick ( coursesInputField )
273275
274- const programsInputField = screen . getByPlaceholderText (
275- "e.g., ASMAJ1689, ASFOC1689B"
276- )
277- await user . click ( programsInputField )
278- await user . tripleClick ( programsInputField )
279- if ( programInputText === "" ) {
280- programInputText = "{Backspace}"
281- }
282- await user . keyboard ( programInputText )
276+ await user . keyboard ( " " )
277+
278+ expect (
279+ screen . queryByText ( "Cannot generate graph – no programs entered!" )
280+ ) . toBeNull ( )
283281
284- expect ( screen . queryByText ( expectedWarning ) ) . toBeNull ( )
285282 const genButton = screen . getByText ( "Generate" )
286283 await user . click ( genButton )
287-
288- const errorMessage = await screen . findByText ( expectedWarning )
284+ const errorMessage = await screen . findByText (
285+ "Cannot generate graph – no programs entered!"
286+ )
289287 expect ( errorMessage ) . not . toBeNull ( )
290288 } )
291289} )
292290
293291it ( "No warning for valid program input strings" , async ( ) => {
294- const user = userEvent . setup ( )
292+ cleanup ( )
293+ fetchMock . restore ( )
294+ fetchMock . get ( "/courses" , "" )
295+ fetchMock . get ( "/programs" , "ASFOC1689D\n" )
295296 render ( < GenerateForm /> )
296297
298+ const user = userEvent . setup ( )
297299 const categorySelect = screen . getByDisplayValue ( "Courses" )
298300 await user . selectOptions ( categorySelect , "programs" )
299301
300302 const programInputText = "ASFOC1689D"
301- const programsInputField = screen . getByPlaceholderText ( "e.g., ASMAJ1689, ASFOC1689B" )
303+ const programsInputField = screen . getByRole ( "combobox" , { name : "programs" } )
302304 await user . click ( programsInputField )
303305 await user . tripleClick ( programsInputField )
304306 await user . keyboard ( programInputText )
307+ await user . keyboard ( "{ArrowDown}{enter}" )
308+ await expect ( screen . findByText ( "Selected Programs: ASFOC1689D" ) ) . toBeDefined ( )
305309 expect ( screen . queryByText ( "Invalid Program Input" ) ) . toBeNull ( )
306310 const genButton = screen . getByText ( "Generate" )
307311 await user . click ( genButton )
308- await expect ( screen . findByText ( / i n v a l i d / i ) ) . rejects . toThrow ( )
312+ await expect ( screen . findByText ( "Invalid Program Input" ) ) . rejects . toThrow ( )
309313} )
0 commit comments