From e20f510d10292b2662dbfb3c88f8ebef452e6332 Mon Sep 17 00:00:00 2001 From: driesva Date: Fri, 24 Nov 2023 20:31:21 +0100 Subject: [PATCH] Test to not report missing element type definitions when tag names which are static class properties. Requires runem/web-component-analyzer#279 --- .../no-missing-element-type-definition.ts | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/packages/lit-analyzer/src/test/rules/no-missing-element-type-definition.ts b/packages/lit-analyzer/src/test/rules/no-missing-element-type-definition.ts index c310bc37..93125503 100644 --- a/packages/lit-analyzer/src/test/rules/no-missing-element-type-definition.ts +++ b/packages/lit-analyzer/src/test/rules/no-missing-element-type-definition.ts @@ -16,7 +16,7 @@ tsTest("'no-missing-element-type-definition' reports diagnostic when element is hasDiagnostic(t, diagnostics, "no-missing-element-type-definition"); }); -tsTest("'no-missing-element-type-definition' reports no diagnostic when element is not in HTMLElementTagNameMap", t => { +tsTest("'no-missing-element-type-definition' reports no diagnostic when element is in HTMLElementTagNameMap", t => { const { diagnostics } = getDiagnostics( ` class MyElement extends HTMLElement { }; @@ -34,3 +34,24 @@ tsTest("'no-missing-element-type-definition' reports no diagnostic when element hasNoDiagnostics(t, diagnostics); }); + +tsTest("'no-missing-element-type-definition' reports no diagnostic when element is in HTMLElementTagNameMap using class property", t => { + const { diagnostics } = getDiagnostics( + ` + class MyElement extends HTMLElement { + static readonly TAG_NAME = "my-element" + }; + customElements.define(MyElement.TAG_NAME, MyElement) + declare global { + interface HTMLElementTagNameMap { + [MyElement.TAG_NAME]: MyElement + } + } + `, + { + rules: { "no-missing-element-type-definition": true } + } + ); + + hasNoDiagnostics(t, diagnostics); +});