import {TestBed} from '@angular/core/testing'; import {Component} from '@angular/core'; import {Ng2vDatepickerModule} from './datepicker.module'; import {Ng2vCalendar, Ng2vCalendarGregorian} from './ng2v-calendar'; import {Ng2vDate} from './ng2v-date'; import {getMonthSelect, getYearSelect} from '../test/datepicker/common'; import {Ng2vDatepickerI18n, Ng2vDatepickerI18nDefault} from './datepicker-i18n'; describe('ng2v-datepicker integration', () => { beforeEach(() => { TestBed.configureTestingModule({declarations: [TestComponent], imports: [Ng2vDatepickerModule.forRoot()]}); }); it('should allow overriding datepicker calendar', () => { class FixedTodayCalendar extends Ng2vCalendarGregorian { getToday() { return new Ng2vDate(2000, 7, 1); } } TestBed.overrideComponent(TestComponent, { set: { template: ``, providers: [{provide: Ng2vCalendar, useClass: FixedTodayCalendar}] } }); const fixture = TestBed.createComponent(TestComponent); fixture.detectChanges(); expect(getMonthSelect(fixture.nativeElement).value).toBe('7'); expect(getYearSelect(fixture.nativeElement).value).toBe('2000'); }); it('should allow overriding datepicker i18n', () => { const MONTHS = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L']; class AlphabetMonthsI18n extends Ng2vDatepickerI18nDefault { getMonthShortName(month: number) { return MONTHS[month - 1]; } } TestBed.overrideComponent(TestComponent, { set: { template: ``, providers: [{provide: Ng2vDatepickerI18n, useClass: AlphabetMonthsI18n}] } }); const fixture = TestBed.createComponent(TestComponent); fixture.detectChanges(); const monthOptionsText = Array.from(getMonthSelect(fixture.nativeElement).querySelectorAll('option')).map(o => o.innerHTML); expect(monthOptionsText).toEqual(MONTHS); }); }); @Component({selector: 'test-cmp', template: ''}) class TestComponent { }