Skip to content

Commit b135d4e

Browse files
committed
test(daterange): Add ARIA test #5732
1 parent b93e789 commit b135d4e

File tree

1 file changed

+70
-6
lines changed

1 file changed

+70
-6
lines changed

projects/igniteui-angular/src/lib/date-range/igx-date-range.component.spec.ts

+70-6
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@ import { IgxDateRangeModule } from './igx-date-range.module';
1212
import { By } from '@angular/platform-browser';
1313
import { UIInteractions } from '../test-utils/ui-interactions.spec';
1414

15+
const CSS_CLASS_INPUT = 'igx-input-group__input';
16+
const CSS_CLASS_TOGGLE_BUTTON = 'igx-icon';
17+
const CSS_CLASS_CALENDAR = 'igx-calendar';
18+
const CSS_CLASS_CALENDAR_WRAPPER = 'igx-toggle'; // TODO Implementation -> maybe add class for the div container
19+
1520
function getDatesInView(dates: DebugElement[]): DebugElement[] {
1621
return dates.filter(d => {
1722
const date = d.childNodes[0].nativeNode.innerText;
@@ -20,8 +25,11 @@ function getDatesInView(dates: DebugElement[]): DebugElement[] {
2025
}
2126

2227
// tslint:disable: no-use-before-declare
23-
xdescribe('IgxDateRange', () => {
24-
let singleInputRange: DateRangeTwoInputsTestComponent;
28+
describe('IgxDateRange', () => {
29+
let calendarElement: DebugElement;
30+
let calendarWrapper: DebugElement;
31+
32+
let singleInputRange: DateRangeSingleInputTestComponent;
2533
let twoInputsRange: DateRangeTwoInputsTestComponent;
2634
let fixture: ComponentFixture<DateRangeTestComponent>;
2735

@@ -227,6 +235,12 @@ xdescribe('IgxDateRange', () => {
227235
});
228236

229237
describe('Single Input', () => {
238+
beforeEach(fakeAsync(() => {
239+
fixture = TestBed.createComponent(DateRangeSingleInputTestComponent);
240+
fixture.detectChanges();
241+
tick();
242+
}));
243+
230244
/* The single input's text looks like this -> START_DATE - END_DATE */
231245

232246
it('Should set the first part of the input properly on first date selection', () => {
@@ -246,6 +260,37 @@ xdescribe('IgxDateRange', () => {
246260
it('Should do a range selection if a date is selected and "Today" is pressed', () => {
247261
// TODO
248262
});
263+
264+
it('should render aria attributes properly', fakeAsync(() => {
265+
fixture = TestBed.createComponent(DateRangeSingleInputTestARIAComponent);
266+
fixture.detectChanges();
267+
const dateRangeSingle = fixture.componentInstance.dateRange;
268+
fixture.detectChanges();
269+
270+
const singleInputElement = fixture.debugElement.query(By.css('.' + CSS_CLASS_INPUT));
271+
calendarElement = fixture.debugElement.query(By.css('.' + CSS_CLASS_CALENDAR));
272+
calendarWrapper = fixture.debugElement.query(By.css('.' + CSS_CLASS_CALENDAR_WRAPPER));
273+
const expectedLabelID = dateRangeSingle.label.id;
274+
const toggleBtn = fixture.debugElement.query(By.css('.' + CSS_CLASS_TOGGLE_BUTTON));
275+
276+
expect(singleInputElement.nativeElement.getAttribute('role')).toEqual('combobox');
277+
expect(singleInputElement.nativeElement.getAttribute('aria-haspopup')).toEqual('grid');
278+
expect(singleInputElement.nativeElement.getAttribute('aria-expanded')).toEqual('false');
279+
expect(toggleBtn.nativeElement.getAttribute('aria-hidden')).toEqual('true');
280+
expect(calendarElement.nativeElement.getAttribute('role')).toEqual('grid');
281+
expect(singleInputElement.nativeElement.getAttribute('aria-labelledby')).toEqual(expectedLabelID);
282+
dateRangeSingle.toggle();
283+
tick();
284+
fixture.detectChanges();
285+
286+
expect(singleInputElement.nativeElement.getAttribute('aria-expanded')).toEqual('true');
287+
expect(calendarWrapper.nativeElement.getAttribute('aria-hidden')).toEqual('false');
288+
289+
dateRangeSingle.toggle();
290+
tick();
291+
fixture.detectChanges();
292+
expect(singleInputElement.nativeElement.getAttribute('aria-expanded')).toEqual('false');
293+
}));
249294
});
250295
});
251296

@@ -268,7 +313,7 @@ export class DateRangeTestComponent implements OnInit {
268313
}
269314

270315
@Component({
271-
selector: 'igx-date-range-single-input-test',
316+
selector: 'igx-date-range-two-inputs-test',
272317
template: `
273318
<igx-input-group>
274319
<input #fullName igxInput type="text">
@@ -298,7 +343,7 @@ export class DateRangeTestComponent implements OnInit {
298343
export class DateRangeTwoInputsTestComponent extends DateRangeTestComponent { }
299344

300345
@Component({
301-
selector: 'igx-date-range-two-inputs-test',
346+
selector: 'igx-date-range-single-input-test',
302347
template: `
303348
<igx-input-group>
304349
<input #fullName igxInput type="text">
@@ -318,18 +363,36 @@ export class DateRangeTwoInputsTestComponent extends DateRangeTestComponent { }
318363
</igx-date-range>
319364
`
320365
})
321-
export class DateRangeSingleInputTestComponent extends DateRangeTestComponent { }
366+
export class DateRangeSingleInputTestComponent extends DateRangeTestComponent {
367+
}
368+
369+
@Component({
370+
selector: 'igx-date-range-single-input-aria-test',
371+
template: `
372+
<igx-date-range [mode]="mode" [todayButtonText]="todayButtonText" [doneButtonText]="doneButtonText">
373+
<igx-input-group>
374+
<input #singleInput igxInput igxDateRange type="text">
375+
<label igxLabel for="singleInput">Input Date</label>
376+
<igx-prefix>
377+
<igx-icon>today</igx-icon>
378+
</igx-prefix>
379+
</igx-input-group>
380+
</igx-date-range>
381+
`
382+
})
383+
export class DateRangeSingleInputTestARIAComponent extends DateRangeTestComponent {
384+
}
322385

323386
@NgModule({
324387
declarations: [
325388
DateRangeSingleInputTestComponent,
389+
DateRangeSingleInputTestARIAComponent,
326390
DateRangeTwoInputsTestComponent,
327391
DateRangeTestComponent
328392
],
329393
imports: [
330394
IgxDateRangeModule,
331395
NoopAnimationsModule,
332-
IgxInputGroupModule,
333396
ReactiveFormsModule,
334397
IgxIconModule,
335398
IgxCalendarModule,
@@ -339,6 +402,7 @@ export class DateRangeSingleInputTestComponent extends DateRangeTestComponent {
339402
],
340403
exports: [
341404
DateRangeSingleInputTestComponent,
405+
DateRangeSingleInputTestARIAComponent,
342406
DateRangeTwoInputsTestComponent,
343407
DateRangeTestComponent
344408
]

0 commit comments

Comments
 (0)