@@ -322,5 +322,66 @@ describe('Create Dataset', () => {
322322
323323 cy . findByTestId ( 'selected-type' ) . should ( 'have.text' , 'foo' )
324324 } )
325+
326+ // This tests are to validate that the dataset type select dropdown is closed when clicking outside, focusing outside or pressing escape
327+ it ( 'should close dataset type select when clicking and focusing outside and pressing escape' , ( ) => {
328+ const datasetTypesMock = [
329+ DatasetTypeMother . creatDefaultDatasetType ( ) ,
330+ DatasetTypeMother . create ( {
331+ id : 5 ,
332+ name : 'foo'
333+ } )
334+ ]
335+
336+ datasetRepository . getAvailableDatasetTypes = cy . stub ( ) . resolves ( datasetTypesMock )
337+
338+ cy . customMount (
339+ < CreateDataset
340+ datasetRepository = { datasetRepository }
341+ metadataBlockInfoRepository = { metadataBlockInfoRepository }
342+ collectionRepository = { collectionRepository }
343+ collectionId = { 'test-collectionId' }
344+ />
345+ )
346+ cy . findByTestId ( 'dataset-type-select' ) . should ( 'exist' ) . as ( 'datasetTypeSelect' )
347+
348+ cy . get ( '@datasetTypeSelect' ) . within ( ( ) => {
349+ cy . findByLabelText ( 'Toggle dataset types options menu' ) . click ( )
350+ cy . get ( '[role="menu"]' ) . should ( 'be.visible' )
351+ } )
352+
353+ // Click outside test
354+ cy . get ( 'body' ) . click ( 0 , 0 )
355+
356+ cy . get ( '@datasetTypeSelect' ) . within ( ( ) => {
357+ cy . get ( '[role="menu"]' ) . should ( 'not.be.visible' )
358+ } )
359+
360+ // Open again
361+ cy . get ( '@datasetTypeSelect' ) . within ( ( ) => {
362+ cy . findByLabelText ( 'Toggle dataset types options menu' ) . click ( )
363+ cy . get ( '[role="menu"]' ) . should ( 'be.visible' )
364+ } )
365+
366+ // Focus outside test
367+ cy . findByLabelText ( / T i t l e / ) . focus ( )
368+
369+ cy . get ( '@datasetTypeSelect' ) . within ( ( ) => {
370+ cy . get ( '[role="menu"]' ) . should ( 'not.be.visible' )
371+ } )
372+
373+ // Open again
374+ cy . get ( '@datasetTypeSelect' ) . within ( ( ) => {
375+ cy . findByLabelText ( 'Toggle dataset types options menu' ) . click ( )
376+ cy . get ( '[role="menu"]' ) . should ( 'be.visible' )
377+ } )
378+
379+ // Press escape test
380+ cy . get ( 'body' ) . trigger ( 'keydown' , { key : 'Escape' , force : true } )
381+
382+ cy . get ( '@datasetTypeSelect' ) . within ( ( ) => {
383+ cy . get ( '[role="menu"]' ) . should ( 'not.be.visible' )
384+ } )
385+ } )
325386 } )
326387} )
0 commit comments