@@ -515,6 +515,62 @@ describe('Date range picker', () => {
515515 expect ( separator ?. innerText ) . to . equal ( 'Separator - localized' ) ;
516516 } ) ;
517517 } ) ;
518+ describe ( 'Methods' , ( ) => {
519+ it ( 'should open/close the picker on invoking show/hide/toggle and not emit events' , async ( ) => {
520+ const eventSpy = spy ( picker , 'emitEvent' ) ;
521+
522+ expect ( picker . open ) . to . be . false ;
523+ await picker . show ( ) ;
524+
525+ expect ( eventSpy ) . not . called ;
526+ expect ( picker . open ) . to . be . true ;
527+
528+ await picker . hide ( ) ;
529+
530+ expect ( eventSpy ) . not . called ;
531+ expect ( picker . open ) . to . be . false ;
532+
533+ await picker . toggle ( ) ;
534+
535+ expect ( eventSpy ) . not . called ;
536+ expect ( picker . open ) . to . be . true ;
537+
538+ await picker . toggle ( ) ;
539+
540+ expect ( eventSpy ) . not . called ;
541+ expect ( picker . open ) . to . be . false ;
542+ } ) ;
543+ it ( 'should clear the input on invoking clear()' , async ( ) => {
544+ const eventSpy = spy ( picker , 'emitEvent' ) ;
545+ picker . value = { start : today . native , end : tomorrow . native } ;
546+ await elementUpdated ( picker ) ;
547+
548+ expect ( dateTimeInputs [ 0 ] . value ) . to . equal ( picker . value . start ) ;
549+ expect ( dateTimeInputs [ 1 ] . value ) . to . equal ( picker . value . end ) ;
550+ picker . clear ( ) ;
551+ await elementUpdated ( picker ) ;
552+
553+ expect ( eventSpy ) . not . called ;
554+ expect ( picker . value ) . to . deep . equal ( { start : null , end : null } ) ;
555+ expect ( dateTimeInputs [ 0 ] . value ) . to . be . null ;
556+ expect ( dateTimeInputs [ 1 ] . value ) . to . be . null ;
557+ } ) ;
558+ it ( 'should select a date range on invoking select' , async ( ) => {
559+ const eventSpy = spy ( picker , 'emitEvent' ) ;
560+ expect ( picker . value ) . to . deep . equal ( { start : null , end : null } ) ;
561+
562+ picker . select ( { start : today . native , end : tomorrow . native } ) ;
563+ await elementUpdated ( picker ) ;
564+
565+ expect ( picker . value ) . to . deep . equal ( {
566+ start : today . native ,
567+ end : tomorrow . native ,
568+ } ) ;
569+ expect ( dateTimeInputs [ 0 ] . value ) . to . equal ( picker . value ?. start ) ;
570+ expect ( dateTimeInputs [ 1 ] . value ) . to . equal ( picker . value ?. end ) ;
571+ expect ( eventSpy ) . not . called ;
572+ } ) ;
573+ } ) ;
518574 describe ( 'Interactions' , ( ) => {
519575 describe ( 'Selection via the calendar' , ( ) => {
520576 it ( 'should select a single date in dropdown mode and emit igcChange' , async ( ) => {
@@ -549,6 +605,9 @@ describe('Date range picker', () => {
549605 expect ( popover ?. hasAttribute ( 'open' ) ) . to . equal ( false ) ;
550606 } ) ;
551607
608+ // TODO
609+ it ( 'should swap the selected dates if the end is earlier than the start' , async ( ) => { } ) ;
610+
552611 it ( 'should select a range of dates in dialog mode and emit igcChange when done is clicked' , async ( ) => {
553612 const eventSpy = spy ( picker , 'emitEvent' ) ;
554613
@@ -818,6 +877,13 @@ describe('Date range picker', () => {
818877 expect ( picker . open ) . to . be . false ;
819878 picker . value = { start : null , end : null } ;
820879 } ) ;
880+
881+ // TODO
882+ it ( 'should emit igcInput and igcChange on input value change' , async ( ) => { } ) ;
883+
884+ it ( 'should not swap the dates while typing' , async ( ) => { } ) ;
885+
886+ it ( 'should set the calendar active date to the start of the range while typing' , async ( ) => { } ) ;
821887 } ) ;
822888 } ) ;
823889 describe ( 'Slots' , ( ) => {
0 commit comments