|  | 
| 1 | 1 | import {HarnessLoader, parallel} from '@angular/cdk/testing'; | 
| 2 | 2 | import {TestbedHarnessEnvironment} from '@angular/cdk/testing/testbed'; | 
| 3 | 3 | import {Component} from '@angular/core'; | 
| 4 |  | -import {MatNativeDateModule} from '@angular/material/core'; | 
|  | 4 | +import {DateAdapter, MatNativeDateModule} from '@angular/material/core'; | 
| 5 | 5 | import {ComponentFixture, TestBed} from '@angular/core/testing'; | 
| 6 | 6 | import {FormsModule} from '@angular/forms'; | 
| 7 | 7 | import {MatDatepickerModule} from '@angular/material/datepicker'; | 
| @@ -86,6 +86,31 @@ export function runDatepickerInputHarnessTests( | 
| 86 | 86 |     expect(await input.getValue()).toBe('1/1/2020'); | 
| 87 | 87 |   }); | 
| 88 | 88 | 
 | 
|  | 89 | +  it('should set the input value based on date adapter validation and formatting', async () => { | 
|  | 90 | +    const adapter = fixture.debugElement.injector.get(DateAdapter); | 
|  | 91 | +    const input = await loader.getHarness(datepickerInputHarness.with({selector: '#basic'})); | 
|  | 92 | +    const validValues: any[] = [new Date(0), '', 0, false]; | 
|  | 93 | +    const invalidValues: any[] = [null, undefined]; | 
|  | 94 | +    spyOn(adapter, 'format').and.returnValue('FORMATTED_VALUE'); | 
|  | 95 | +    spyOn(adapter, 'isValid').and.callFake(value => validValues.includes(value)); | 
|  | 96 | +    spyOn(adapter, 'deserialize').and.callFake(value => | 
|  | 97 | +      validValues.includes(value) ? value : null, | 
|  | 98 | +    ); | 
|  | 99 | +    spyOn(adapter, 'getValidDateOrNull').and.callFake(value => | 
|  | 100 | +      adapter.isValid(value) ? value : null, | 
|  | 101 | +    ); | 
|  | 102 | + | 
|  | 103 | +    for (let value of validValues) { | 
|  | 104 | +      fixture.componentInstance.date = value; | 
|  | 105 | +      expect(await input.getValue()).toBe('FORMATTED_VALUE'); | 
|  | 106 | +    } | 
|  | 107 | + | 
|  | 108 | +    for (let value of invalidValues) { | 
|  | 109 | +      fixture.componentInstance.date = value; | 
|  | 110 | +      expect(await input.getValue()).toBe(''); | 
|  | 111 | +    } | 
|  | 112 | +  }); | 
|  | 113 | + | 
| 89 | 114 |   it('should get the input placeholder', async () => { | 
| 90 | 115 |     const inputs = await loader.getAllHarnesses(datepickerInputHarness); | 
| 91 | 116 |     expect( | 
|  | 
0 commit comments