feat: add typed WRN declarations
This commit is contained in:
@@ -80,3 +80,31 @@ test("recognizes literal attribute value types", () => {
|
||||
assert.equal(attributeValueType("{[1, 2]}"), "array");
|
||||
assert.equal(attributeValueType("plain"), "string");
|
||||
});
|
||||
|
||||
test("extracts explicit prop types and resolves typed prop/state expressions", () => {
|
||||
const input = `component DatePicker {
|
||||
props {
|
||||
required: boolean = false
|
||||
value: string
|
||||
}
|
||||
state count: number = 0
|
||||
view { <DateInput required="{required}" value="{value}" count="{count}" /> }
|
||||
}`;
|
||||
const target = parseComponentMetadata(`component DateInput {
|
||||
props {
|
||||
required: boolean = false
|
||||
value: string
|
||||
count: number = 0
|
||||
}
|
||||
view { <input/> }
|
||||
}`);
|
||||
const own = parseComponentMetadata(input);
|
||||
assert.deepEqual(
|
||||
own.props.map(({ name, type, required }) => ({ name, type, required })),
|
||||
[
|
||||
{ name: "required", type: "boolean", required: false },
|
||||
{ name: "value", type: "string", required: true },
|
||||
],
|
||||
);
|
||||
assert.deepEqual(validateComponentTags(input, new Map([["DateInput", target]])), []);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user