11import { registerLocaleData } from '@angular/common' ;
22import zh from '@angular/common/locales/zh' ;
3- import { Component } from '@angular/core' ;
4- import { ComponentFixture , TestBed , waitForAsync } from '@angular/core/testing' ;
3+ import { Component , TemplateRef , ViewChild } from '@angular/core' ;
4+ import { ComponentFixture , fakeAsync , TestBed , tick , waitForAsync } from '@angular/core/testing' ;
55import { FormsModule , NgModel } from '@angular/forms' ;
66import { By } from '@angular/platform-browser' ;
77import { NoopAnimationsModule } from '@angular/platform-browser/animations' ;
88
99import { CandyDate } from 'ng-zorro-antd/core/time' ;
10+ import { NzSafeAny } from 'ng-zorro-antd/core/types' ;
1011import { NzI18nModule } from 'ng-zorro-antd/i18n' ;
1112import { NzSelectModule } from 'ng-zorro-antd/select' ;
1213
@@ -61,6 +62,8 @@ describe('Calendar Header', () => {
6162 } ) ;
6263
6364 it ( 'should emit change event for mode selection' , ( ) => {
65+ fixture . detectChanges ( ) ;
66+
6467 const modeNgModel = fixture . debugElement
6568 . queryAll ( By . directive ( CalendarHeader ) ) [ 1 ]
6669 . query ( By . directive ( RadioGroup ) )
@@ -150,7 +153,10 @@ describe('Calendar Header', () => {
150153 component = fixture . componentInstance ;
151154 } ) ) ;
152155
153- it ( 'should emit yearChange when year changed' , ( ) => {
156+ it ( 'should emit yearChange when year changed' , fakeAsync ( ( ) => {
157+ tick ( 1 ) ;
158+ fixture . detectChanges ( ) ;
159+
154160 const header = fixture . debugElement . queryAll ( By . directive ( CalendarHeader ) ) [ 0 ] ;
155161 const [ yearModel ] = header . queryAll ( By . directive ( Select ) ) . map ( x => x . injector . get ( NgModel ) ) ;
156162
@@ -159,7 +165,7 @@ describe('Calendar Header', () => {
159165 fixture . detectChanges ( ) ;
160166
161167 expect ( component . year ) . toBe ( 2010 ) ;
162- } ) ;
168+ } ) ) ;
163169
164170 it ( 'should emit monthChange when month changed' , ( ) => {
165171 fixture . detectChanges ( ) ;
@@ -172,13 +178,38 @@ describe('Calendar Header', () => {
172178
173179 expect ( component . month ) . toBe ( 2 ) ;
174180 } ) ;
181+
175182 it ( 'should update years when change year' , ( ) => {
176183 const header = fixture . debugElement . queryAll ( By . directive ( CalendarHeader ) ) [ 0 ] ;
177184 const headerComponent = header . injector . get ( NzCalendarHeaderComponent ) ;
178185 headerComponent . updateYear ( 2010 ) ;
179186 expect ( headerComponent . years [ 0 ] . value ) . toBe ( 2000 ) ;
180187 } ) ;
181188 } ) ;
189+
190+ describe ( 'custom Header' , ( ) => {
191+ let fixture : ComponentFixture < NzTestCalendarHeaderChangesComponent > ;
192+
193+ beforeEach ( waitForAsync ( ( ) => {
194+ fixture = TestBed . createComponent ( NzTestCalendarHeaderChangesComponent ) ;
195+ } ) ) ;
196+
197+ it ( 'should have the default header if custom header is not passed' , fakeAsync ( ( ) => {
198+ fixture . componentInstance . customHeader = undefined ;
199+ tick ( 1 ) ;
200+ fixture . detectChanges ( ) ;
201+
202+ const defaultHeader = fixture . debugElement . query ( By . css ( '.ant-picker-calendar-header' ) ) ;
203+ expect ( defaultHeader ) . toBeTruthy ( ) ;
204+
205+ fixture . componentInstance . customHeader = fixture . componentInstance . customHeaderElement ;
206+ tick ( 1 ) ;
207+ fixture . detectChanges ( ) ;
208+
209+ const defaultHeader2 = fixture . debugElement . query ( By . css ( '.ant-picker-calendar-header' ) ) ;
210+ expect ( defaultHeader2 ) . toBeFalsy ( ) ;
211+ } ) ) ;
212+ } ) ;
182213} ) ;
183214
184215@Component ( {
@@ -212,9 +243,22 @@ class NzTestCalendarHeaderActiveDateComponent {
212243}
213244
214245@Component ( {
215- template : ` <nz-calendar-header (yearChange)="year = $event" (monthChange)="month = $event"></nz-calendar-header> `
246+ template : `
247+ <nz-calendar-header
248+ [nzCustomHeader]="customHeader"
249+ (yearChange)="year = $event"
250+ (monthChange)="month = $event"
251+ ></nz-calendar-header>
252+
253+ <ng-template #customHeaderElement>
254+ <p>custom header</p>
255+ </ng-template>
256+ `
216257} )
217258class NzTestCalendarHeaderChangesComponent {
259+ @ViewChild ( 'customHeaderElement' , { static : true } ) customHeaderElement ! : TemplateRef < NzSafeAny > ;
260+
218261 year : number | null = null ;
219262 month : number | null = null ;
263+ customHeader ?: TemplateRef < void > ;
220264}
0 commit comments