| 70 | } |
| 71 | |
| 72 | class LifecycleContractConsumer extends LitElement { |
| 73 | private readonly instanceId = ++contractConsumerInstanceCount |
| 74 | |
| 75 | private readonly query = createQueryController<ContractProbeData, Error>( |
| 76 | this, |
| 77 | { |
| 78 | queryKey: contractQueryKey, |
| 79 | queryFn: () => { |
| 80 | throw new Error( |
| 81 | 'Lifecycle contract fixture unexpectedly fetched from queryFn.', |
| 82 | ) |
| 83 | }, |
| 84 | retry: false, |
| 85 | staleTime: Number.POSITIVE_INFINITY, |
| 86 | }, |
| 87 | ) |
| 88 | |
| 89 | protected override createRenderRoot(): HTMLElement | DocumentFragment { |
| 90 | return this |
| 91 | } |
| 92 | |
| 93 | private renderQueryState() { |
| 94 | try { |
| 95 | const query = this.query() |
| 96 | |
| 97 | return html` |
| 98 | <div data-testid="contract-query-status">query: ${query.status}</div> |
| 99 | <div data-testid="contract-provider-value"> |
| 100 | provider: ${query.data?.provider ?? 'none'} |
| 101 | </div> |
| 102 | <div data-testid="contract-payload"> |
| 103 | payload: ${query.data?.payload ?? 'none'} |
| 104 | </div> |
| 105 | <div data-testid="contract-error"> |
| 106 | error: ${query.error ? String(query.error) : 'none'} |
| 107 | </div> |
| 108 | ` |
| 109 | } catch (error) { |
| 110 | const message = error instanceof Error ? error.message : String(error) |
| 111 | |
| 112 | return html` |
| 113 | <div data-testid="contract-query-status">query: missing-client</div> |
| 114 | <div data-testid="contract-provider-value">provider: none</div> |
| 115 | <div data-testid="contract-payload">payload: none</div> |
| 116 | <div data-testid="contract-error">error: ${message}</div> |
| 117 | ` |
| 118 | } |
| 119 | } |
| 120 | |
| 121 | render() { |
| 122 | return html` |
| 123 | <div data-testid="contract-instance-id">instance: ${this.instanceId}</div> |
| 124 | ${this.renderQueryState()} |
| 125 | ` |
| 126 | } |
| 127 | } |
| 128 | |
| 129 | if (!customElements.get('lifecycle-contract-consumer')) { |
nothing calls this directly
no test coverage detected