11import { CommonModule } from '@angular/common' ;
22import { ImagesAssetPath } from '@hypertrace/assets-library' ;
33import { createHostFactory , SpectatorHost } from '@ngneat/spectator/jest' ;
4+ import { MockComponent } from 'ng-mocks' ;
5+ import { SkeletonComponent , SkeletonType } from '../../skeleton/skeleton.component' ;
46import { LoaderType } from '../load-async.service' ;
57import { LoaderComponent } from './loader.component' ;
68
@@ -9,13 +11,15 @@ describe('Loader component', () => {
911
1012 const createHost = createHostFactory ( {
1113 component : LoaderComponent ,
14+ declarations : [ MockComponent ( SkeletonComponent ) ] ,
1215 imports : [ CommonModule ]
1316 } ) ;
1417
1518 test ( 'Loader component when loader type is page' , ( ) => {
1619 spectator = createHost ( `<ht-loader [loaderType]="'${ LoaderType . Page } '"></ht-loader>` ) ;
1720
1821 expect ( spectator . query ( '.ht-loader' ) ) . toExist ( ) ;
22+ expect ( spectator . query ( '.ht-loader' ) ) . toHaveClass ( 'flex-centered' ) ;
1923 expect ( spectator . query ( '.ht-loader img' ) ) . toExist ( ) ;
2024 expect ( spectator . query ( '.ht-loader img' ) ) . toHaveClass ( LoaderType . Page ) ;
2125 expect ( spectator . query ( '.ht-loader img' ) ) . toHaveAttribute ( 'src' , ImagesAssetPath . LoaderPage ) ;
@@ -25,6 +29,7 @@ describe('Loader component', () => {
2529 spectator = createHost ( `<ht-loader></ht-loader>` ) ;
2630
2731 expect ( spectator . query ( '.ht-loader' ) ) . toExist ( ) ;
32+ expect ( spectator . query ( '.ht-loader' ) ) . toHaveClass ( 'flex-centered' ) ;
2833 expect ( spectator . query ( '.ht-loader img' ) ) . toExist ( ) ;
2934 expect ( spectator . query ( '.ht-loader img' ) ) . toHaveClass ( LoaderType . Spinner ) ;
3035 expect ( spectator . query ( '.ht-loader img' ) ) . toHaveAttribute ( 'src' , ImagesAssetPath . LoaderSpinner ) ;
@@ -34,6 +39,7 @@ describe('Loader component', () => {
3439 spectator = createHost ( `<ht-loader [loaderType]="'${ LoaderType . Spinner } '"></ht-loader>` ) ;
3540
3641 expect ( spectator . query ( '.ht-loader' ) ) . toExist ( ) ;
42+ expect ( spectator . query ( '.ht-loader' ) ) . toHaveClass ( 'flex-centered' ) ;
3743 expect ( spectator . query ( '.ht-loader img' ) ) . toExist ( ) ;
3844 expect ( spectator . query ( '.ht-loader img' ) ) . toHaveClass ( LoaderType . Spinner ) ;
3945 expect ( spectator . query ( '.ht-loader img' ) ) . toHaveAttribute ( 'src' , ImagesAssetPath . LoaderSpinner ) ;
@@ -43,8 +49,93 @@ describe('Loader component', () => {
4349 spectator = createHost ( `<ht-loader [loaderType]="'${ LoaderType . ExpandableRow } '"></ht-loader>` ) ;
4450
4551 expect ( spectator . query ( '.ht-loader' ) ) . toExist ( ) ;
52+ expect ( spectator . query ( '.ht-loader' ) ) . toHaveClass ( 'flex-centered' ) ;
4653 expect ( spectator . query ( '.ht-loader img' ) ) . toExist ( ) ;
4754 expect ( spectator . query ( '.ht-loader img' ) ) . toHaveClass ( LoaderType . ExpandableRow ) ;
4855 expect ( spectator . query ( '.ht-loader img' ) ) . toHaveAttribute ( 'src' , ImagesAssetPath . LoaderExpandableRow ) ;
4956 } ) ;
57+
58+ test ( 'Should use old loader type by default' , ( ) => {
59+ spectator = createHost ( `<ht-loader></ht-loader>` ) ;
60+
61+ expect ( spectator . component . isOldLoaderType ) . toBe ( true ) ;
62+ expect ( spectator . query ( SkeletonComponent ) ) . not . toExist ( ) ;
63+ } ) ;
64+
65+ test ( 'Should use corresponding skeleton component for loader type rectangle' , ( ) => {
66+ spectator = createHost ( `<ht-loader [loaderType]="'${ LoaderType . Rectangle } '" ></ht-loader>` ) ;
67+
68+ expect ( spectator . query ( '.ht-loader' ) ) . toExist ( ) ;
69+ expect ( spectator . query ( '.ht-loader' ) ) . not . toHaveClass ( 'flex-centered' ) ;
70+
71+ const skeletonComponent = spectator . query ( SkeletonComponent ) ;
72+ expect ( skeletonComponent ) . toExist ( ) ;
73+ expect ( skeletonComponent ) . toHaveAttribute ( 'skeletonType' , SkeletonType . Rectangle ) ;
74+ } ) ;
75+
76+ test ( 'Should use corresponding skeleton component for loader type rectangle text' , ( ) => {
77+ spectator = createHost ( `<ht-loader [loaderType]="'${ LoaderType . Text } '" ></ht-loader>` ) ;
78+
79+ expect ( spectator . query ( '.ht-loader' ) ) . toExist ( ) ;
80+ expect ( spectator . query ( '.ht-loader' ) ) . not . toHaveClass ( 'flex-centered' ) ;
81+
82+ const skeletonComponent = spectator . query ( SkeletonComponent ) ;
83+ expect ( skeletonComponent ) . toExist ( ) ;
84+ expect ( skeletonComponent ) . toHaveAttribute ( 'skeletonType' , SkeletonType . Text ) ;
85+ } ) ;
86+
87+ test ( 'Should use corresponding skeleton component for loader type circle' , ( ) => {
88+ spectator = createHost ( `<ht-loader [loaderType]="'${ LoaderType . Circle } '" ></ht-loader>` ) ;
89+
90+ expect ( spectator . query ( '.ht-loader' ) ) . toExist ( ) ;
91+ expect ( spectator . query ( '.ht-loader' ) ) . not . toHaveClass ( 'flex-centered' ) ;
92+
93+ const skeletonComponent = spectator . query ( SkeletonComponent ) ;
94+ expect ( skeletonComponent ) . toExist ( ) ;
95+ expect ( skeletonComponent ) . toHaveAttribute ( 'skeletonType' , SkeletonType . Circle ) ;
96+ } ) ;
97+
98+ test ( 'Should use corresponding skeleton component for loader type square' , ( ) => {
99+ spectator = createHost ( `<ht-loader [loaderType]="'${ LoaderType . Square } '" ></ht-loader>` ) ;
100+
101+ expect ( spectator . query ( '.ht-loader' ) ) . toExist ( ) ;
102+ expect ( spectator . query ( '.ht-loader' ) ) . not . toHaveClass ( 'flex-centered' ) ;
103+
104+ const skeletonComponent = spectator . query ( SkeletonComponent ) ;
105+ expect ( skeletonComponent ) . toExist ( ) ;
106+ expect ( skeletonComponent ) . toHaveAttribute ( 'skeletonType' , SkeletonType . Square ) ;
107+ } ) ;
108+
109+ test ( 'Should use corresponding skeleton component for loader type table row' , ( ) => {
110+ spectator = createHost ( `<ht-loader [loaderType]="'${ LoaderType . TableRow } '" ></ht-loader>` ) ;
111+
112+ expect ( spectator . query ( '.ht-loader' ) ) . toExist ( ) ;
113+ expect ( spectator . query ( '.ht-loader' ) ) . not . toHaveClass ( 'flex-centered' ) ;
114+
115+ const skeletonComponent = spectator . query ( SkeletonComponent ) ;
116+ expect ( skeletonComponent ) . toExist ( ) ;
117+ expect ( skeletonComponent ) . toHaveAttribute ( 'skeletonType' , SkeletonType . TableRow ) ;
118+ } ) ;
119+
120+ test ( 'Should use corresponding skeleton component for loader type donut' , ( ) => {
121+ spectator = createHost ( `<ht-loader [loaderType]="'${ LoaderType . Donut } '" ></ht-loader>` ) ;
122+
123+ expect ( spectator . query ( '.ht-loader' ) ) . toExist ( ) ;
124+ expect ( spectator . query ( '.ht-loader' ) ) . not . toHaveClass ( 'flex-centered' ) ;
125+
126+ const skeletonComponent = spectator . query ( SkeletonComponent ) ;
127+ expect ( skeletonComponent ) . toExist ( ) ;
128+ expect ( skeletonComponent ) . toHaveAttribute ( 'skeletonType' , SkeletonType . Donut ) ;
129+ } ) ;
130+
131+ test ( 'Should use corresponding skeleton component for loader type list item' , ( ) => {
132+ spectator = createHost ( `<ht-loader [loaderType]="'${ LoaderType . ListItem } '" ></ht-loader>` ) ;
133+
134+ expect ( spectator . query ( '.ht-loader' ) ) . toExist ( ) ;
135+ expect ( spectator . query ( '.ht-loader' ) ) . not . toHaveClass ( 'flex-centered' ) ;
136+
137+ const skeletonComponent = spectator . query ( SkeletonComponent ) ;
138+ expect ( skeletonComponent ) . toExist ( ) ;
139+ expect ( skeletonComponent ) . toHaveAttribute ( 'skeletonType' , SkeletonType . ListItem ) ;
140+ } ) ;
50141} ) ;
0 commit comments