@@ -54,9 +54,15 @@ describe('src/cy/commands/actions/select', () => {
5454 } )
5555 } )
5656
57+ it ( 'can handle valid index 0' , ( ) => {
58+ cy . get ( 'select[name=maps]' ) . select ( 0 ) . then ( ( $select ) => {
59+ expect ( $select ) . to . have . value ( 'de_dust2' )
60+ } )
61+ } )
62+
5763 it ( 'can select an array of values' , ( ) => {
58- cy . get ( 'select[name=movies]' ) . select ( [ 'apoc' , 'br' ] ) . then ( ( $select ) => {
59- expect ( $select . val ( ) ) . to . deep . eq ( [ 'apoc' , 'br' ] )
64+ cy . get ( 'select[name=movies]' ) . select ( [ 'apoc' , 'br' , 'co' ] ) . then ( ( $select ) => {
65+ expect ( $select . val ( ) ) . to . deep . eq ( [ 'apoc' , 'br' , 'co' ] )
6066 } )
6167 } )
6268
@@ -366,6 +372,39 @@ describe('src/cy/commands/actions/select', () => {
366372 cy . get ( 'select' ) . select ( 'foo' )
367373 } )
368374
375+ it ( 'throws when called with no arguments' , ( done ) => {
376+ cy . on ( 'fail' , ( err ) => {
377+ expect ( err . message ) . to . include ( '`cy.select()` must be passed a string, number, or array as its 1st argument. You passed: `undefined`.' )
378+ expect ( err . docsUrl ) . to . eq ( 'https://on.cypress.io/select' )
379+
380+ done ( )
381+ } )
382+
383+ cy . get ( 'select[name=maps]' ) . select ( )
384+ } )
385+
386+ it ( 'throws when called with null' , ( done ) => {
387+ cy . on ( 'fail' , ( err ) => {
388+ expect ( err . message ) . to . include ( '`cy.select()` must be passed a string, number, or array as its 1st argument. You passed: `null`.' )
389+ expect ( err . docsUrl ) . to . eq ( 'https://on.cypress.io/select' )
390+
391+ done ( )
392+ } )
393+
394+ cy . get ( 'select[name=maps]' ) . select ( null )
395+ } )
396+
397+ it ( 'throws when called with invalid type' , ( done ) => {
398+ cy . on ( 'fail' , ( err ) => {
399+ expect ( err . message ) . to . include ( '`cy.select()` must be passed a string, number, or array as its 1st argument. You passed: `true`.' )
400+ expect ( err . docsUrl ) . to . eq ( 'https://on.cypress.io/select' )
401+
402+ done ( )
403+ } )
404+
405+ cy . get ( 'select[name=foods]' ) . select ( true )
406+ } )
407+
369408 it ( 'throws on anything other than a select' , ( done ) => {
370409 cy . on ( 'fail' , ( err ) => {
371410 expect ( err . message ) . to . include ( '`cy.select()` can only be called on a `<select>`. Your subject is a: `<input id="input">`' )
@@ -455,6 +494,39 @@ describe('src/cy/commands/actions/select', () => {
455494 cy . get ( 'select[name=foods]' ) . select ( 'foo' )
456495 } )
457496
497+ it ( 'throws invalid argument error when called with empty string' , ( done ) => {
498+ cy . on ( 'fail' , ( err ) => {
499+ expect ( err . message ) . to . include ( '`cy.select()` failed because it could not find a single `<option>` with value, index, or text matching: ``' )
500+ expect ( err . docsUrl ) . to . eq ( 'https://on.cypress.io/select' )
501+
502+ done ( )
503+ } )
504+
505+ cy . get ( 'select[name=foods]' ) . select ( '' )
506+ } )
507+
508+ it ( 'throws invalid array argument error when called with empty array' , ( done ) => {
509+ cy . on ( 'fail' , ( err ) => {
510+ expect ( err . message ) . to . include ( '`cy.select()` must be passed an array containing only strings and/or numbers. You passed: `[]`' )
511+ expect ( err . docsUrl ) . to . eq ( 'https://on.cypress.io/select' )
512+
513+ done ( )
514+ } )
515+
516+ cy . get ( 'select[name=foods]' ) . select ( [ ] )
517+ } )
518+
519+ it ( 'throws invalid array argument error when called with invalid array' , ( done ) => {
520+ cy . on ( 'fail' , ( err ) => {
521+ expect ( err . message ) . to . include ( '`cy.select()` must be passed an array containing only strings and/or numbers. You passed: `[true,false]`' )
522+ expect ( err . docsUrl ) . to . eq ( 'https://on.cypress.io/select' )
523+
524+ done ( )
525+ } )
526+
527+ cy . get ( 'select[name=foods]' ) . select ( [ true , false ] )
528+ } )
529+
458530 it ( 'throws when the <select> itself is disabled' , ( done ) => {
459531 cy . on ( 'fail' , ( err ) => {
460532 expect ( err . message ) . to . include ( '`cy.select()` failed because this element is currently disabled:' )
0 commit comments