@@ -14,9 +14,15 @@ import {NgbSlideEventDirection} from './carousel-transition';
14
14
const createTestComponent = ( html : string , detectChanges = true ) =>
15
15
createGenericTestComponent ( html , TestComponent , detectChanges ) as ComponentFixture < TestComponent > ;
16
16
17
+ const getSlideElements = ( el : HTMLElement ) => Array . from ( el . querySelectorAll < HTMLButtonElement > ( '.carousel-item' ) ) ;
18
+ const getIndicatorElements = ( el : HTMLElement ) =>
19
+ Array . from ( el . querySelectorAll < HTMLButtonElement > ( '.carousel-indicators > button[data-bs-target]' ) ) ;
20
+ const getArrowElements = ( el : HTMLElement ) =>
21
+ Array . from ( el . querySelectorAll < HTMLButtonElement > ( '.carousel-inner ~ button' ) ) ;
22
+
17
23
function expectActiveSlides ( nativeEl : HTMLDivElement , active : boolean [ ] ) {
18
- const slideElms = nativeEl . querySelectorAll ( '.carousel-item' ) ;
19
- const indicatorElms = nativeEl . querySelectorAll ( 'ol.carousel-indicators > li' ) ;
24
+ const slideElms = getSlideElements ( nativeEl ) ;
25
+ const indicatorElms = getIndicatorElements ( nativeEl ) ;
20
26
const carouselElm = nativeEl . querySelector ( 'ngb-carousel' ) ;
21
27
22
28
expect ( slideElms . length ) . toBe ( active . length ) ;
@@ -63,13 +69,13 @@ describe('ngb-carousel', () => {
63
69
` ;
64
70
const fixture = createTestComponent ( html ) ;
65
71
66
- const slideElms = fixture . nativeElement . querySelectorAll ( '.carousel-item' ) ;
72
+ const slideElms = getSlideElements ( fixture . nativeElement ) ;
67
73
expect ( slideElms . length ) . toBe ( 2 ) ;
68
74
expect ( slideElms [ 0 ] . textContent ) . toMatch ( / f o o / ) ;
69
75
expect ( slideElms [ 1 ] . textContent ) . toMatch ( / b a r / ) ;
70
76
71
- expect ( fixture . nativeElement . querySelectorAll ( 'ol.carousel-indicators > li' ) . length ) . toBe ( 2 ) ;
72
- expect ( fixture . nativeElement . querySelectorAll ( '[role="button"]' ) . length ) . toBe ( 2 ) ;
77
+ expect ( getIndicatorElements ( fixture . nativeElement ) . length ) . toBe ( 2 ) ;
78
+ expect ( getArrowElements ( fixture . nativeElement ) . length ) . toBe ( 2 ) ;
73
79
74
80
discardPeriodicTasks ( ) ;
75
81
} ) ) ;
@@ -95,11 +101,8 @@ describe('ngb-carousel', () => {
95
101
tick ( 1001 ) ;
96
102
fixture . detectChanges ( ) ;
97
103
98
- const carousel = fixture . nativeElement . querySelector ( 'ngb-carousel' ) ;
99
- const slides = fixture . nativeElement . querySelectorAll ( '.carousel-item' ) ;
100
-
101
- expect ( carousel ) . toBeTruthy ( ) ;
102
- expect ( slides . length ) . toBe ( 0 ) ;
104
+ expect ( fixture . nativeElement . querySelector ( 'ngb-carousel' ) ) . toBeTruthy ( ) ;
105
+ expect ( getSlideElements ( fixture . nativeElement ) . length ) . toBe ( 0 ) ;
103
106
104
107
discardPeriodicTasks ( ) ;
105
108
} ) ) ;
@@ -217,9 +220,8 @@ describe('ngb-carousel', () => {
217
220
const fixture = createTestComponent ( html ) ;
218
221
const spyCallBack = spyOn ( fixture . componentInstance , 'carouselSlideCallBack' ) ;
219
222
const carouselDebugEl = fixture . debugElement . query ( By . directive ( NgbCarousel ) ) ;
220
- const indicatorElms = fixture . nativeElement . querySelectorAll ( 'ol.carousel-indicators > li' ) ;
221
- const prevControlElm = fixture . nativeElement . querySelector ( '.carousel-control-prev' ) ;
222
- const nextControlElm = fixture . nativeElement . querySelector ( '.carousel-control-next' ) ;
223
+ const indicatorElms = getIndicatorElements ( fixture . nativeElement ) ;
224
+ const [ prevControlElm , nextControlElm ] = getArrowElements ( fixture . nativeElement ) ;
223
225
const next = fixture . nativeElement . querySelector ( '#next' ) ;
224
226
const pause = fixture . nativeElement . querySelector ( '#pause' ) ;
225
227
const cycle = fixture . nativeElement . querySelector ( '#cycle' ) ;
@@ -353,7 +355,7 @@ describe('ngb-carousel', () => {
353
355
` ;
354
356
355
357
const fixture = createTestComponent ( html ) ;
356
- const indicatorElms = fixture . nativeElement . querySelectorAll ( 'ol.carousel-indicators > li' ) ;
358
+ const indicatorElms = getIndicatorElements ( fixture . nativeElement ) ;
357
359
358
360
expectActiveSlides ( fixture . nativeElement , [ true , false ] ) ;
359
361
@@ -374,7 +376,7 @@ describe('ngb-carousel', () => {
374
376
` ;
375
377
376
378
const fixture = createTestComponent ( html ) ;
377
- const indicatorElms = fixture . nativeElement . querySelectorAll ( 'ol.carousel-indicators > li' ) ;
379
+ const indicatorElms = getIndicatorElements ( fixture . nativeElement ) ;
378
380
const spyCallBack = spyOn ( fixture . componentInstance , 'carouselSlideCallBack' ) ;
379
381
380
382
indicatorElms [ 1 ] . click ( ) ;
@@ -412,9 +414,7 @@ describe('ngb-carousel', () => {
412
414
` ;
413
415
414
416
const fixture = createTestComponent ( html ) ;
415
-
416
- const prevControlElm = fixture . nativeElement . querySelector ( '.carousel-control-prev' ) ;
417
- const nextControlElm = fixture . nativeElement . querySelector ( '.carousel-control-next' ) ;
417
+ const [ prevControlElm , nextControlElm ] = getArrowElements ( fixture . nativeElement ) ;
418
418
419
419
expectActiveSlides ( fixture . nativeElement , [ true , false ] ) ;
420
420
@@ -438,8 +438,7 @@ describe('ngb-carousel', () => {
438
438
` ;
439
439
440
440
const fixture = createTestComponent ( html ) ;
441
- const prevControlElm = fixture . nativeElement . querySelector ( '.carousel-control-prev' ) ;
442
- const nextControlElm = fixture . nativeElement . querySelector ( '.carousel-control-next' ) ;
441
+ const [ prevControlElm , nextControlElm ] = getArrowElements ( fixture . nativeElement ) ;
443
442
const spyCallBack = spyOn ( fixture . componentInstance , 'carouselSlideCallBack' ) ;
444
443
const spySingleCallBack = spyOn ( fixture . componentInstance , 'carouselSingleSlideCallBack' ) ;
445
444
@@ -736,9 +735,7 @@ describe('ngb-carousel', () => {
736
735
` ;
737
736
738
737
const fixture = createTestComponent ( html ) ;
739
-
740
- const prevControlElm = fixture . nativeElement . querySelector ( '.carousel-control-prev' ) ;
741
- const nextControlElm = fixture . nativeElement . querySelector ( '.carousel-control-next' ) ;
738
+ const [ prevControlElm , nextControlElm ] = getArrowElements ( fixture . nativeElement ) ;
742
739
743
740
expectActiveSlides ( fixture . nativeElement , [ true , false ] ) ;
744
741
@@ -766,9 +763,7 @@ describe('ngb-carousel', () => {
766
763
` ;
767
764
768
765
const fixture = createTestComponent ( html ) ;
769
-
770
- const prevControlElm = fixture . nativeElement . querySelector ( '.carousel-control-prev' ) ;
771
- const nextControlElm = fixture . nativeElement . querySelector ( '.carousel-control-next' ) ;
766
+ const [ prevControlElm , nextControlElm ] = getArrowElements ( fixture . nativeElement ) ;
772
767
773
768
expectActiveSlides ( fixture . nativeElement , [ true , false ] ) ;
774
769
@@ -852,16 +847,16 @@ describe('ngb-carousel', () => {
852
847
` ;
853
848
const fixture = createTestComponent ( html ) ;
854
849
855
- const slideElms = fixture . nativeElement . querySelectorAll ( '.carousel-item' ) ;
850
+ const slideElms = getSlideElements ( fixture . nativeElement ) ;
856
851
expect ( slideElms . length ) . toBe ( 1 ) ;
857
852
expect ( slideElms [ 0 ] . textContent ) . toMatch ( / f o o / ) ;
858
- expect ( fixture . nativeElement . querySelectorAll ( 'ol .carousel-indicators.visually-hidden > li ' ) . length ) . toBe ( 0 ) ;
859
- expect ( fixture . nativeElement . querySelectorAll ( 'ol.carousel-indicators > li' ) . length ) . toBe ( 1 ) ;
853
+ expect ( fixture . nativeElement . querySelectorAll ( '.carousel-indicators.visually-hidden > button ' ) . length ) . toBe ( 0 ) ;
854
+ expect ( getIndicatorElements ( fixture . nativeElement ) . length ) . toBe ( 1 ) ;
860
855
861
856
fixture . componentInstance . showNavigationIndicators = false ;
862
857
fixture . detectChanges ( ) ;
863
- expect ( fixture . nativeElement . querySelectorAll ( 'ol .carousel-indicators.visually-hidden > li ' ) . length ) . toBe ( 1 ) ;
864
- expect ( fixture . nativeElement . querySelectorAll ( 'ol.carousel-indicators > li' ) . length ) . toBe ( 1 ) ;
858
+ expect ( fixture . nativeElement . querySelectorAll ( '.carousel-indicators.visually-hidden > button ' ) . length ) . toBe ( 1 ) ;
859
+ expect ( getIndicatorElements ( fixture . nativeElement ) . length ) . toBe ( 1 ) ;
865
860
866
861
discardPeriodicTasks ( ) ;
867
862
} ) ) ;
@@ -874,13 +869,12 @@ describe('ngb-carousel', () => {
874
869
` ;
875
870
const fixture = createTestComponent ( html ) ;
876
871
877
- const slideElms = fixture . nativeElement . querySelectorAll ( '.carousel-item' ) ;
878
- expect ( slideElms . length ) . toBe ( 1 ) ;
879
- expect ( fixture . nativeElement . querySelectorAll ( '[role="button"]' ) . length ) . toBe ( 2 ) ;
872
+ expect ( getSlideElements ( fixture . nativeElement ) . length ) . toBe ( 1 ) ;
873
+ expect ( getArrowElements ( fixture . nativeElement ) . length ) . toBe ( 2 ) ;
880
874
881
875
fixture . componentInstance . showNavigationArrows = false ;
882
876
fixture . detectChanges ( ) ;
883
- expect ( fixture . nativeElement . querySelectorAll ( '[role="button"]' ) . length ) . toBe ( 0 ) ;
877
+ expect ( getArrowElements ( fixture . nativeElement ) . length ) . toBe ( 0 ) ;
884
878
885
879
discardPeriodicTasks ( ) ;
886
880
} ) ) ;
@@ -983,8 +977,8 @@ if (isBrowserVisible('ngb-carousel animations')) {
983
977
984
978
const onSlidSpy = spyOn ( fixture . componentInstance , 'onSlid' ) ;
985
979
986
- const [ slideOne , slideTwo ] = nativeEl . querySelectorAll ( '.carousel-item' ) ;
987
- const indicators = nativeEl . querySelectorAll ( 'ol.carousel-indicators > li' ) ;
980
+ const [ slideOne , slideTwo ] = getSlideElements ( nativeEl ) ;
981
+ const indicators = getIndicatorElements ( nativeEl ) ;
988
982
989
983
onSlidSpy . and . callFake ( ( payload ) => {
990
984
expect ( slideOne . className ) . toBe ( 'carousel-item' ) ;
@@ -1014,8 +1008,8 @@ if (isBrowserVisible('ngb-carousel animations')) {
1014
1008
1015
1009
const onSlidSpy = spyOn ( fixture . componentInstance , 'onSlid' ) ;
1016
1010
1017
- const [ slideOne , slideTwo ] = nativeEl . querySelectorAll ( '.carousel-item' ) ;
1018
- const indicators = nativeEl . querySelectorAll ( 'ol.carousel-indicators > li' ) ;
1011
+ const [ slideOne , slideTwo ] = getSlideElements ( nativeEl ) ;
1012
+ const indicators = getIndicatorElements ( nativeEl ) ;
1019
1013
1020
1014
expect ( slideOne . className ) . toBe ( 'carousel-item active' ) ;
1021
1015
expect ( slideTwo . className ) . toBe ( 'carousel-item' ) ;
@@ -1037,8 +1031,8 @@ if (isBrowserVisible('ngb-carousel animations')) {
1037
1031
fixture . detectChanges ( ) ;
1038
1032
1039
1033
const nativeEl = fixture . nativeElement ;
1040
- const [ slideOne , slideTwo , slideThree ] = nativeEl . querySelectorAll ( '.carousel-item' ) ;
1041
- const indicators = nativeEl . querySelectorAll ( 'ol.carousel-indicators > li' ) ;
1034
+ const [ slideOne , slideTwo , slideThree ] = getSlideElements ( nativeEl ) ;
1035
+ const indicators = getIndicatorElements ( nativeEl ) ;
1042
1036
1043
1037
const onSlidSpy = spyOn ( fixture . componentInstance , 'onSlid' ) ;
1044
1038
onSlidSpy . and . callFake ( ( payload ) => {
@@ -1088,8 +1082,8 @@ if (isBrowserVisible('ngb-carousel animations')) {
1088
1082
1089
1083
const onSlidSpy = spyOn ( fixture . componentInstance , 'onSlid' ) ;
1090
1084
1091
- const [ slideOne , slideTwo , slideThree ] = nativeEl . querySelectorAll ( '.carousel-item' ) ;
1092
- const indicators = nativeEl . querySelectorAll ( 'ol.carousel-indicators > li' ) ;
1085
+ const [ slideOne , slideTwo , slideThree ] = getSlideElements ( nativeEl ) ;
1086
+ const indicators = getIndicatorElements ( nativeEl ) ;
1093
1087
1094
1088
expect ( slideOne . className ) . toBe ( 'carousel-item active' ) ;
1095
1089
expect ( slideTwo . className ) . toBe ( 'carousel-item' ) ;
0 commit comments