-
Notifications
You must be signed in to change notification settings - Fork 0
/
hello.component.spec.ts
49 lines (39 loc) · 1.63 KB
/
hello.component.spec.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import { FormControl, FormsModule, ReactiveFormsModule } from "@angular/forms";
import { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from "@angular/platform-browser-dynamic/testing";
import { TestBed } from "@angular/core/testing";
import { createHostFactory, SpectatorHost } from "@ngneat/spectator";
// NB: side-effect import of Module first so that Ivy compiles Hello component
// using the correct `imports` (e.g. FormsModule), otherwise it complains about
// `ngModel` being an unrecognized input
import "./app.module";
import { HelloInputComponent } from "./hello.component";
const createHost = createHostFactory({
component: HelloInputComponent,
imports: [
// Must include Forms/ReactiveForms here again because they're used by
// the dynamically-created host components
FormsModule,
ReactiveFormsModule,
],
});
describe("Hello Component", () => {
let host: SpectatorHost<HelloInputComponent>;
let fc = new FormControl("hi");
beforeAll(() => {
TestBed.initTestEnvironment(
[BrowserDynamicTestingModule], platformBrowserDynamicTesting());
});
it("binds to formControl", async () => {
host = createHost('<hello-input [formControl]="fc"></hello-input>', {
hostProps: {
fc,
}
});
// Needs two DT/stable cycles because displayed location is a second-order observable
host.detectChanges();
await host.fixture.whenStable();
const input: HTMLInputElement | null = host.query("input");
expect(input).toBeDefined();
expect(input?.value).toBe("hi");
})
});