Skip to content

Commit

Permalink
Added tests for cascade and removed async testing.
Browse files Browse the repository at this point in the history
  • Loading branch information
jwshinjwshin committed Jun 29, 2017
1 parent e5b023c commit aa00bcd
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 20 deletions.
6 changes: 3 additions & 3 deletions src/demo-app/datepicker/datepicker-demo.html
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ <h2>Options</h2>
<h2>Result</h2>

<p>
<button [mdDatepickerToggle]="resultPicker" [disabled]="resultPickerModel.disabled"></button>
<button [mdDatepickerToggle]="resultPicker"></button>
<md-input-container>
<input mdInput
#resultPickerModel="ngModel"
Expand Down Expand Up @@ -84,8 +84,8 @@ <h2>Input disabled, datepicker popup enabled</h2>
<p>
<button [mdDatepickerToggle]="datePicker2"></button>
<md-input-container>
<input mdInput [mdDatepicker]="datePicker2" [(ngModel)]="date" [min]="minDate" [max]="maxDate"
[mdDatepickerFilter]="filterOdd ? dateFilter : null" [disabled]="true"
<input mdInput disabled [mdDatepicker]="datePicker2" [(ngModel)]="date" [min]="minDate" [max]="maxDate"
[mdDatepickerFilter]="filterOdd ? dateFilter : null"
placeholder="Input disabled, datepicker enabled">
</md-input-container>
<md-datepicker #datePicker2 [touchUi]="touch" [disabled]="false" [startAt]="startAt"
Expand Down
2 changes: 1 addition & 1 deletion src/lib/datepicker/datepicker-toggle.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ export class MdDatepickerToggle<D> {
constructor(public _intl: MdDatepickerIntl) {}

_open(event: Event): void {
if (this.datepicker && !this._disabled) {
if (this.datepicker && !this.disabled) {
this.datepicker.open();
event.stopPropagation();
}
Expand Down
51 changes: 39 additions & 12 deletions src/lib/datepicker/datepicker.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -75,27 +75,28 @@ describe('MdDatepicker', () => {
fixture.detectChanges();
}));

it('open non-touch should open popup', async(() => {
it('open non-touch should open popup', () => {
expect(document.querySelector('.cdk-overlay-pane')).toBeNull();

testComponent.datepicker.open();
fixture.detectChanges();

expect(document.querySelector('.cdk-overlay-pane')).not.toBeNull();
}));
});

it('open touch should open dialog', async(() => {
it('open touch should open dialog', () => {
testComponent.touch = true;
fixture.detectChanges();

expect(document.querySelector('md-dialog-container')).toBeNull();

testComponent.datepicker.open();
fixture.detectChanges();

expect(document.querySelector('md-dialog-container')).not.toBeNull();
}));
});

it('open in disabled mode should not open the calendar', async(() => {
it('open in disabled mode should not open the calendar', () => {
testComponent.disabled = true;
fixture.detectChanges();

Expand All @@ -107,9 +108,22 @@ describe('MdDatepicker', () => {

expect(document.querySelector('.cdk-overlay-pane')).toBeNull();
expect(document.querySelector('md-dialog-container')).toBeNull();
}));
});

it('disabled datepicker input should open the calendar if datepicker is enabled', () => {
testComponent.datepicker.disabled = false;
testComponent.datepickerInput.disabled = true;
fixture.detectChanges();

expect(document.querySelector('.cdk-overlay-pane')).toBeNull();

testComponent.datepicker.open();
fixture.detectChanges();

expect(document.querySelector('.cdk-overlay-pane')).not.toBeNull();
});

it('close should close popup', async(() => {
it('close should close popup', () => {
testComponent.datepicker.open();
fixture.detectChanges();

Expand All @@ -123,7 +137,7 @@ describe('MdDatepicker', () => {
fixture.whenStable().then(() => {
expect(parseInt(getComputedStyle(popup).height as string)).toBe(0);
});
}));
});

it('should close the popup when pressing ESCAPE', () => {
testComponent.datepicker.open();
Expand All @@ -142,7 +156,7 @@ describe('MdDatepicker', () => {
.toBe(true, 'Expected default ESCAPE action to be prevented.');
});

it('close should close dialog', async(() => {
it('close should close dialog', () => {
testComponent.touch = true;
fixture.detectChanges();

Expand All @@ -157,9 +171,9 @@ describe('MdDatepicker', () => {
fixture.whenStable().then(() => {
expect(document.querySelector('md-dialog-container')).toBeNull();
});
}));
});

it('setting selected should update input and close calendar', async(() => {
it('setting selected should update input and close calendar', () => {
testComponent.touch = true;
fixture.detectChanges();

Expand All @@ -177,7 +191,7 @@ describe('MdDatepicker', () => {
expect(document.querySelector('md-dialog-container')).toBeNull();
expect(testComponent.datepickerInput.value).toEqual(new Date(2020, JAN, 2));
});
}));
});

it('startAt should fallback to input value', () => {
expect(testComponent.datepicker.startAt).toEqual(new Date(2020, JAN, 1));
Expand Down Expand Up @@ -456,6 +470,19 @@ describe('MdDatepicker', () => {
expect(document.querySelector('md-dialog-container')).not.toBeNull();
});

it('should not open calendar when toggle clicked if datepicker is disabled', () => {
testComponent.datepicker.disabled = true;
fixture.detectChanges();

expect(document.querySelector('md-dialog-container')).toBeNull();

let toggle = fixture.debugElement.query(By.css('button'));
dispatchMouseEvent(toggle.nativeElement, 'click');
fixture.detectChanges();

expect(document.querySelector('md-dialog-container')).toBeNull();
});

it('should set the `button` type on the trigger to prevent form submissions', () => {
let toggle = fixture.debugElement.query(By.css('button')).nativeElement;
expect(toggle.getAttribute('type')).toBe('button');
Expand Down
5 changes: 1 addition & 4 deletions src/lib/datepicker/datepicker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -217,10 +217,7 @@ export class MdDatepicker<D> implements OnDestroy {

/** Open the calendar. */
open(): void {
if (this.opened) {
return;
}
if (this.disabled) {
if (this.opened || this.disabled) {
return;
}
if (!this._datepickerInput) {
Expand Down

0 comments on commit aa00bcd

Please sign in to comment.