@@ -4,6 +4,8 @@ import { CommonModule } from '@angular/common';
44import { fakeAsync , flush } from '@angular/core/testing' ;
55import { IconLibraryTestingModule , IconType } from '@hypertrace/assets-library' ;
66import { NavigationService } from '@hypertrace/common' ;
7+ import { PopoverComponent } from '@hypertrace/components' ;
8+ import { runFakeRxjs } from '@hypertrace/test-utils' ;
79import { createHostFactory , mockProvider , SpectatorHost } from '@ngneat/spectator/jest' ;
810import { MockComponent } from 'ng-mocks' ;
911import { NEVER } from 'rxjs' ;
@@ -12,7 +14,6 @@ import { CheckboxComponent } from '../checkbox/checkbox.component';
1214import { DividerComponent } from '../divider/divider.component' ;
1315import { LabelComponent } from '../label/label.component' ;
1416import { LoadAsyncModule } from '../load-async/load-async.module' ;
15- import { PopoverComponent } from '../popover/popover.component' ;
1617import { PopoverModule } from '../popover/popover.module' ;
1718import { SearchBoxComponent } from '../search-box/search-box.component' ;
1819import { SelectOptionComponent } from '../select/select-option.component' ;
@@ -69,15 +70,20 @@ describe('Multi Select Component', () => {
6970
7071 spectator . tick ( ) ;
7172
72- expect ( spectator . component . triggerLabel ) . toEqual ( selectionOptions [ 1 ] . label ) ;
7373 expect ( spectator . query ( '.trigger-content' ) ) . toExist ( ) ;
7474 expect ( spectator . query ( '.trigger-label-container' ) ) . toExist ( ) ;
7575 expect ( spectator . query ( '.trigger-label' ) ) . toExist ( ) ;
7676 expect ( spectator . query ( '.trigger-icon' ) ) . toExist ( ) ;
7777 expect ( spectator . query ( '.trigger-more-items' ) ) . not . toExist ( ) ;
7878
79- // Selected element is 1 as set in hostProps
80- expect ( spectator . component . selectedItemsCount ) . toBe ( 1 ) ;
79+ runFakeRxjs ( ( { expectObservable } ) => {
80+ expectObservable ( spectator . component . triggerValues$ ) . toBe ( 'x' , {
81+ x : {
82+ label : selectionOptions [ 1 ] . label ,
83+ selectedItemsCount : 1 // Selected element is 1 as set in hostProps
84+ }
85+ } ) ;
86+ } ) ;
8187
8288 const popoverComponent = spectator . query ( PopoverComponent ) ;
8389 expect ( popoverComponent ?. closeOnClick ) . toEqual ( false ) ;
@@ -101,11 +107,19 @@ describe('Multi Select Component', () => {
101107 spectator . tick ( ) ;
102108 const selectedCheckboxElements = spectator . queryAll ( 'ht-checkbox' , { root : true } ) ;
103109 expect ( spectator . query ( '.trigger-more-items' ) ) . toExist ( ) ;
104- expect ( spectator . component . selectedItemsCount ) . toBe ( 2 ) ;
105110 expect (
106111 selectedCheckboxElements . filter ( checkboxElement => checkboxElement . getAttribute ( 'ng-reflect-checked' ) === 'true' )
107112 . length
108113 ) . toBe ( 2 ) ;
114+
115+ runFakeRxjs ( ( { expectObservable } ) => {
116+ expectObservable ( spectator . component . triggerValues$ ) . toBe ( 'x' , {
117+ x : {
118+ label : selectionOptions [ 1 ] . label ,
119+ selectedItemsCount : 2
120+ }
121+ } ) ;
122+ } ) ;
109123 } ) ) ;
110124
111125 test ( 'should display provided options with icons when clicked' , fakeAsync ( ( ) => {
@@ -136,12 +150,20 @@ describe('Multi Select Component', () => {
136150
137151 const selectedCheckboxElements = spectator . queryAll ( 'ht-checkbox' , { root : true } ) ;
138152 expect ( spectator . query ( '.trigger-more-items' ) ) . toExist ( ) ;
139- expect ( spectator . component . selectedItemsCount ) . toBe ( 2 ) ;
140153 expect (
141154 selectedCheckboxElements . filter ( checkboxElement => checkboxElement . getAttribute ( 'ng-reflect-checked' ) === 'true' )
142155 . length
143156 ) . toBe ( 2 ) ;
144157
158+ runFakeRxjs ( ( { expectObservable } ) => {
159+ expectObservable ( spectator . component . triggerValues$ ) . toBe ( 'x' , {
160+ x : {
161+ label : 'second' ,
162+ selectedItemsCount : 2
163+ }
164+ } ) ;
165+ } ) ;
166+
145167 optionElements . forEach ( ( element , index ) => {
146168 expect ( element ) . toHaveText ( selectionOptions [ index ] . label ) ;
147169 expect ( element . querySelector ( 'ht-icon' ) ) . toExist ( ) ;
@@ -204,8 +226,17 @@ describe('Multi Select Component', () => {
204226 expect ( onChange ) . toHaveBeenCalledTimes ( 1 ) ;
205227 expect ( onChange ) . toHaveBeenCalledWith ( [ selectionOptions [ 1 ] . value , selectionOptions [ 2 ] . value ] ) ;
206228 expect ( spectator . query ( '.trigger-more-items' ) ) . toExist ( ) ;
207- expect ( spectator . component . selectedItemsCount ) . toBe ( 2 ) ;
208229 expect ( spectator . query ( LabelComponent ) ?. label ) . toEqual ( 'second' ) ;
230+
231+ runFakeRxjs ( ( { expectObservable } ) => {
232+ expectObservable ( spectator . component . triggerValues$ ) . toBe ( 'x' , {
233+ x : {
234+ label : 'second' ,
235+ selectedItemsCount : 2
236+ }
237+ } ) ;
238+ } ) ;
239+
209240 flush ( ) ;
210241 } ) ) ;
211242
@@ -332,7 +363,16 @@ describe('Multi Select Component', () => {
332363 expect ( onChange ) . toHaveBeenCalledWith ( [ selectionOptions [ 1 ] . value , selectionOptions [ 2 ] . value ] ) ;
333364 expect ( spectator . query ( LabelComponent ) ?. label ) . toEqual ( 'Placeholder' ) ;
334365 expect ( spectator . query ( '.trigger-more-items' ) ) . not . toExist ( ) ;
335- expect ( spectator . component . selectedItemsCount ) . toBe ( 0 ) ;
366+
367+ runFakeRxjs ( ( { expectObservable } ) => {
368+ expectObservable ( spectator . component . triggerValues$ ) . toBe ( '(x|)' , {
369+ x : {
370+ label : 'Placeholder' ,
371+ selectedItemsCount : 0
372+ }
373+ } ) ;
374+ } ) ;
375+
336376 flush ( ) ;
337377 } ) ) ;
338378
@@ -354,7 +394,15 @@ describe('Multi Select Component', () => {
354394 ) ;
355395 spectator . tick ( ) ;
356396
357- expect ( spectator . component . triggerLabel ) . toEqual ( selectionOptions [ 1 ] . label ) ;
397+ runFakeRxjs ( ( { expectObservable } ) => {
398+ expectObservable ( spectator . component . triggerValues$ ) . toBe ( 'x' , {
399+ x : {
400+ label : selectionOptions [ 1 ] . label ,
401+ selectedItemsCount : 1
402+ }
403+ } ) ;
404+ } ) ;
405+
358406 expect ( spectator . query ( '.trigger-content' ) ) . toExist ( ) ;
359407 expect ( spectator . query ( '.trigger-label-container' ) ) . toExist ( ) ;
360408 expect ( spectator . query ( '.trigger-label' ) ) . toExist ( ) ;
0 commit comments