Skip to content

Commit 5bbf235

Browse files
committed
add tests
1 parent 043818d commit 5bbf235

File tree

2 files changed

+34
-1
lines changed

2 files changed

+34
-1
lines changed

src/lib/datepicker/datepicker-input.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ export const MD_DATEPICKER_VALIDATORS: any = {
5858
providers: [MD_DATEPICKER_VALUE_ACCESSOR, MD_DATEPICKER_VALIDATORS],
5959
host: {
6060
'[attr.aria-haspopup]': 'true',
61-
'[attr.aria-owns]': '_datepicker?.opened && _datepicker.id',
61+
'[attr.aria-owns]': '(_datepicker?.opened && _datepicker.id) || null',
6262
'[attr.min]': 'min ? _dateAdapter.getISODateString(min) : null',
6363
'[attr.max]': 'max ? _dateAdapter.getISODateString(max) : null',
6464
'[disabled]': 'disabled',

src/lib/datepicker/datepicker.spec.ts

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,39 @@ describe('MdDatepicker', () => {
189189
expect(attachToRef.nativeElement.tagName.toLowerCase())
190190
.toBe('input', 'popup should be attached to native input');
191191
});
192+
193+
it('input should aria-owns calendar after opened in non-touch mode', () => {
194+
let inputEl = fixture.debugElement.query(By.css('input')).nativeElement;
195+
expect(inputEl.getAttribute('aria-owns')).toBeNull();
196+
197+
testComponent.datepicker.open();
198+
fixture.detectChanges();
199+
200+
let ownedElementId = inputEl.getAttribute('aria-owns');
201+
expect(ownedElementId).not.toBeNull();
202+
203+
let ownedElement = document.getElementById(ownedElementId);
204+
expect(ownedElement).not.toBeNull();
205+
expect((ownedElement as Element).tagName.toLowerCase()).toBe('md-calendar');
206+
});
207+
208+
it('input should aria-owns calendar after opened in touch mode', () => {
209+
testComponent.touch = true;
210+
fixture.detectChanges();
211+
212+
let inputEl = fixture.debugElement.query(By.css('input')).nativeElement;
213+
expect(inputEl.getAttribute('aria-owns')).toBeNull();
214+
215+
testComponent.datepicker.open();
216+
fixture.detectChanges();
217+
218+
let ownedElementId = inputEl.getAttribute('aria-owns');
219+
expect(ownedElementId).not.toBeNull();
220+
221+
let ownedElement = document.getElementById(ownedElementId);
222+
expect(ownedElement).not.toBeNull();
223+
expect((ownedElement as Element).tagName.toLowerCase()).toBe('md-calendar');
224+
});
192225
});
193226

194227
describe('datepicker with too many inputs', () => {

0 commit comments

Comments
 (0)