11import { ComponentFixture , TestBed , waitForAsync } from '@angular/core/testing' ;
2+ import { CUSTOM_ELEMENTS_SCHEMA , SimpleChange } from '@angular/core' ;
3+ import { FormsModule } from '@angular/forms' ;
24import { IonicModule } from '@ionic/angular' ;
35
46import { ReviewListComponent } from './review-list.component' ;
@@ -10,7 +12,8 @@ describe('ReviewListComponent', () => {
1012 beforeEach ( waitForAsync ( ( ) => {
1113 TestBed . configureTestingModule ( {
1214 declarations : [ ReviewListComponent ] ,
13- imports : [ IonicModule . forRoot ( ) ]
15+ imports : [ IonicModule . forRoot ( ) , FormsModule ] ,
16+ schemas : [ CUSTOM_ELEMENTS_SCHEMA ] ,
1417 } ) . compileComponents ( ) ;
1518
1619 fixture = TestBed . createComponent ( ReviewListComponent ) ;
@@ -52,15 +55,26 @@ describe('ReviewListComponent', () => {
5255
5356 describe ( 'switchStatus()' , ( ) => {
5457 it ( 'should switch status' , ( ) => {
55- component . reviews = [ {
56- isDone : true ,
57- } as any ] ;
58- component . showDone = false ;
58+ component . reviews = [
59+ { isDone : false , name : 'Pending review' , submissionId : 1 } as any ,
60+ { isDone : true , name : 'Completed review' , submissionId : 2 } as any ,
61+ ] ;
62+ component . currentReview = component . reviews [ 0 ] ;
63+ component . ngOnChanges ( {
64+ reviews : new SimpleChange ( null , component . reviews , true ) ,
65+ currentReview : new SimpleChange ( null , component . currentReview , true ) ,
66+ } ) ;
5967 component . goToFirstOnSwitch = true ;
6068 const spy = spyOn ( component . navigate , 'emit' ) ;
61- component . switchStatus ( ) ;
62- expect ( spy ) . toHaveBeenCalled ( ) ;
69+ component . switchStatus ( {
70+ detail : {
71+ value : 'completed' ,
72+ } ,
73+ } as any ) ;
74+ expect ( spy ) . toHaveBeenCalledWith ( component . reviews [ 1 ] ) ;
6375 expect ( component . showDone ) . toBeTrue ( ) ;
76+ expect ( component . segmentValue ) . toBe ( 'completed' ) ;
77+ expect ( component . resultsAnnouncement ) . toContain ( 'completed' ) ;
6478 } ) ;
6579 } ) ;
6680
@@ -73,6 +87,7 @@ describe('ReviewListComponent', () => {
7387 component . reviews = [ {
7488 isDone : true ,
7589 } as any ] ;
90+ component . ngOnChanges ( { reviews : new SimpleChange ( null , component . reviews , false ) } ) ;
7691 expect ( component . noReviews ) . toEqual ( '' ) ;
7792 } ) ;
7893
@@ -81,6 +96,7 @@ describe('ReviewListComponent', () => {
8196 { isDone : false } as any
8297 ] ;
8398 component . showDone = true ;
99+ component . ngOnChanges ( { reviews : new SimpleChange ( null , component . reviews , false ) } ) ;
84100 expect ( component . noReviews ) . toEqual ( 'completed' ) ;
85101 } ) ;
86102
@@ -89,7 +105,37 @@ describe('ReviewListComponent', () => {
89105 { isDone : true } as any
90106 ] ;
91107 component . showDone = false ;
108+ component . ngOnChanges ( { reviews : new SimpleChange ( null , component . reviews , false ) } ) ;
92109 expect ( component . noReviews ) . toEqual ( 'pending' ) ;
93110 } ) ;
111+
112+ it ( 'should hide default message when searching' , ( ) => {
113+ component . reviews = [
114+ { isDone : true , name : 'Completed review' , submissionId : 2 } as any ,
115+ ] ;
116+ component . showDone = true ;
117+ component . ngOnChanges ( { reviews : new SimpleChange ( null , component . reviews , false ) } ) ;
118+ component . onSearchTermChange ( '' ) ;
119+ component . onSearchTermChange ( 'missing' ) ;
120+ expect ( component . noReviews ) . toEqual ( '' ) ;
121+ expect ( component . hasSearchWithoutResults ) . toBeTrue ( ) ;
122+ expect ( component . resultsAnnouncement ) . toContain ( 'No' ) ;
123+ } ) ;
124+ } ) ;
125+
126+ describe ( 'onSearchTermChange()' , ( ) => {
127+ it ( 'should filter reviews by title' , ( ) => {
128+ component . reviews = [
129+ { isDone : false , name : 'First review' , submissionId : 1 } as any ,
130+ { isDone : false , name : 'Second' , submissionId : 2 } as any ,
131+ ] ;
132+ component . showDone = false ;
133+ component . ngOnChanges ( { reviews : new SimpleChange ( null , component . reviews , false ) } ) ;
134+ component . onSearchTermChange ( '' ) ;
135+ component . onSearchTermChange ( 'second' ) ;
136+ expect ( component . filteredReviews . length ) . toBe ( 1 ) ;
137+ expect ( component . filteredReviews [ 0 ] . name ) . toBe ( 'Second' ) ;
138+ expect ( component . resultsAnnouncement ) . toContain ( '1' ) ;
139+ } ) ;
94140 } ) ;
95141} ) ;
0 commit comments