1c6a02be9SBartosz Kaszubowskiimport { render } from '@testing-library/react';
2c6a02be9SBartosz Kaszubowski
35990cc31SBartosz Kaszubowskiimport type { CommentData } from './APIDataTypes';
4*f6311d0dSBartosz Kaszubowskiimport { CommentTextBlock, resolveTypeName } from './APISectionUtils';
5c6a02be9SBartosz Kaszubowski
6c6a02be9SBartosz Kaszubowskidescribe('APISectionUtils.resolveTypeName', () => {
7c6a02be9SBartosz Kaszubowski  test('void', () => {
8c6a02be9SBartosz Kaszubowski    const { container } = render(<>{resolveTypeName({ type: 'intrinsic', name: 'void' })}</>);
9c6a02be9SBartosz Kaszubowski    expect(container).toMatchSnapshot();
10c6a02be9SBartosz Kaszubowski  });
11c6a02be9SBartosz Kaszubowski
12c6a02be9SBartosz Kaszubowski  test('generic type', () => {
13c6a02be9SBartosz Kaszubowski    const { container } = render(<>{resolveTypeName({ type: 'intrinsic', name: 'string' })}</>);
14c6a02be9SBartosz Kaszubowski    expect(container).toMatchSnapshot();
15c6a02be9SBartosz Kaszubowski  });
16c6a02be9SBartosz Kaszubowski
17c6a02be9SBartosz Kaszubowski  test('custom type', () => {
18c6a02be9SBartosz Kaszubowski    const { container } = render(
19c6a02be9SBartosz Kaszubowski      <>{resolveTypeName({ type: 'reference', name: 'SpeechSynthesisEvent' })}</>
20c6a02be9SBartosz Kaszubowski    );
21c6a02be9SBartosz Kaszubowski    expect(container).toMatchSnapshot();
22c6a02be9SBartosz Kaszubowski  });
23c6a02be9SBartosz Kaszubowski
24c6a02be9SBartosz Kaszubowski  test('custom type array', () => {
25c6a02be9SBartosz Kaszubowski    const { container } = render(
26c6a02be9SBartosz Kaszubowski      <>
27c6a02be9SBartosz Kaszubowski        {resolveTypeName({
28c6a02be9SBartosz Kaszubowski          type: 'array',
29c6a02be9SBartosz Kaszubowski          elementType: { type: 'reference', name: 'AppleAuthenticationScope' },
30c6a02be9SBartosz Kaszubowski        })}
31c6a02be9SBartosz Kaszubowski      </>
32c6a02be9SBartosz Kaszubowski    );
33c6a02be9SBartosz Kaszubowski    expect(container).toMatchSnapshot();
34c6a02be9SBartosz Kaszubowski  });
35c6a02be9SBartosz Kaszubowski
36d87a784eSBartosz Kaszubowski  test('custom type non-linkable array', () => {
37d87a784eSBartosz Kaszubowski    const { container } = render(
38d87a784eSBartosz Kaszubowski      <>
39d87a784eSBartosz Kaszubowski        {resolveTypeName({
40d87a784eSBartosz Kaszubowski          type: 'array',
41d87a784eSBartosz Kaszubowski          elementType: { type: 'reference', name: 'T' },
42d87a784eSBartosz Kaszubowski        })}
43d87a784eSBartosz Kaszubowski      </>
44d87a784eSBartosz Kaszubowski    );
45d87a784eSBartosz Kaszubowski    expect(container).toMatchSnapshot();
46d87a784eSBartosz Kaszubowski  });
47d87a784eSBartosz Kaszubowski
486062847eSBartosz Kaszubowski  test('query type', () => {
496062847eSBartosz Kaszubowski    const { container } = render(
506062847eSBartosz Kaszubowski      <>
516062847eSBartosz Kaszubowski        {resolveTypeName({
526062847eSBartosz Kaszubowski          type: 'reference',
536062847eSBartosz Kaszubowski          typeArguments: [{ queryType: { type: 'reference', name: 'View' }, type: 'query' }],
546062847eSBartosz Kaszubowski          name: 'React.ComponentProps',
556062847eSBartosz Kaszubowski        })}
566062847eSBartosz Kaszubowski      </>
576062847eSBartosz Kaszubowski    );
586062847eSBartosz Kaszubowski    expect(container).toMatchSnapshot();
596062847eSBartosz Kaszubowski  });
606062847eSBartosz Kaszubowski
61c6a02be9SBartosz Kaszubowski  test('Promise', () => {
62c6a02be9SBartosz Kaszubowski    const { container } = render(
63c6a02be9SBartosz Kaszubowski      <>
64c6a02be9SBartosz Kaszubowski        {resolveTypeName({
65c6a02be9SBartosz Kaszubowski          type: 'reference',
66c6a02be9SBartosz Kaszubowski          typeArguments: [{ type: 'intrinsic', name: 'void' }],
67c6a02be9SBartosz Kaszubowski          name: 'Promise',
68c6a02be9SBartosz Kaszubowski        })}
69c6a02be9SBartosz Kaszubowski      </>
70c6a02be9SBartosz Kaszubowski    );
71c6a02be9SBartosz Kaszubowski    expect(container).toMatchSnapshot();
72c6a02be9SBartosz Kaszubowski  });
73c6a02be9SBartosz Kaszubowski
74c6a02be9SBartosz Kaszubowski  test('Promise with custom type', () => {
75c6a02be9SBartosz Kaszubowski    const { container } = render(
76c6a02be9SBartosz Kaszubowski      <>
77c6a02be9SBartosz Kaszubowski        {resolveTypeName({
78c6a02be9SBartosz Kaszubowski          type: 'reference',
79c6a02be9SBartosz Kaszubowski          typeArguments: [{ type: 'reference', name: 'AppleAuthenticationCredential' }],
80c6a02be9SBartosz Kaszubowski          name: 'Promise',
81c6a02be9SBartosz Kaszubowski        })}
82c6a02be9SBartosz Kaszubowski      </>
83c6a02be9SBartosz Kaszubowski    );
84c6a02be9SBartosz Kaszubowski    expect(container).toMatchSnapshot();
85c6a02be9SBartosz Kaszubowski  });
86c6a02be9SBartosz Kaszubowski
87c6a02be9SBartosz Kaszubowski  test('Record', () => {
88c6a02be9SBartosz Kaszubowski    const { container } = render(
89c6a02be9SBartosz Kaszubowski      <>
90c6a02be9SBartosz Kaszubowski        {resolveTypeName({
91c6a02be9SBartosz Kaszubowski          type: 'reference',
92c6a02be9SBartosz Kaszubowski          typeArguments: [
93c6a02be9SBartosz Kaszubowski            { type: 'intrinsic', name: 'string' },
94c6a02be9SBartosz Kaszubowski            { type: 'intrinsic', name: 'any' },
95c6a02be9SBartosz Kaszubowski          ],
96c6a02be9SBartosz Kaszubowski          name: 'Record',
97c6a02be9SBartosz Kaszubowski        })}
98c6a02be9SBartosz Kaszubowski      </>
99c6a02be9SBartosz Kaszubowski    );
100c6a02be9SBartosz Kaszubowski    expect(container).toMatchSnapshot();
101c6a02be9SBartosz Kaszubowski  });
102c6a02be9SBartosz Kaszubowski
103abded2bbSBartosz Kaszubowski  test('alternative generic object notation', () => {
104abded2bbSBartosz Kaszubowski    const { container } = render(
105abded2bbSBartosz Kaszubowski      <>
106abded2bbSBartosz Kaszubowski        {resolveTypeName({
107abded2bbSBartosz Kaszubowski          type: 'array',
108abded2bbSBartosz Kaszubowski          elementType: {
109abded2bbSBartosz Kaszubowski            type: 'reflection',
110abded2bbSBartosz Kaszubowski            declaration: {
111abded2bbSBartosz Kaszubowski              name: '__type',
112abded2bbSBartosz Kaszubowski              indexSignature: {
113abded2bbSBartosz Kaszubowski                name: '__index',
114abded2bbSBartosz Kaszubowski                parameters: [{ name: 'column', type: { type: 'intrinsic', name: 'string' } }],
115abded2bbSBartosz Kaszubowski                type: { type: 'intrinsic', name: 'any' },
116abded2bbSBartosz Kaszubowski              },
117abded2bbSBartosz Kaszubowski            },
118abded2bbSBartosz Kaszubowski          },
119abded2bbSBartosz Kaszubowski        })}
120abded2bbSBartosz Kaszubowski      </>
121abded2bbSBartosz Kaszubowski    );
122abded2bbSBartosz Kaszubowski    expect(container).toMatchSnapshot();
123abded2bbSBartosz Kaszubowski  });
124abded2bbSBartosz Kaszubowski
1256062847eSBartosz Kaszubowski  test('Record with union', () => {
1266062847eSBartosz Kaszubowski    const { container } = render(
1276062847eSBartosz Kaszubowski      <>
1286062847eSBartosz Kaszubowski        {resolveTypeName({
1296062847eSBartosz Kaszubowski          type: 'reference',
1306062847eSBartosz Kaszubowski          typeArguments: [
1316062847eSBartosz Kaszubowski            { type: 'intrinsic', name: 'string' },
1326062847eSBartosz Kaszubowski            {
1336062847eSBartosz Kaszubowski              type: 'union',
1346062847eSBartosz Kaszubowski              types: [
1356062847eSBartosz Kaszubowski                { type: 'intrinsic', name: 'number' },
1366062847eSBartosz Kaszubowski                { type: 'intrinsic', name: 'boolean' },
1376062847eSBartosz Kaszubowski                { type: 'intrinsic', name: 'string' },
1386062847eSBartosz Kaszubowski              ],
1396062847eSBartosz Kaszubowski            },
1406062847eSBartosz Kaszubowski          ],
1416062847eSBartosz Kaszubowski          name: 'Record',
1426062847eSBartosz Kaszubowski        })}
1436062847eSBartosz Kaszubowski      </>
1446062847eSBartosz Kaszubowski    );
1456062847eSBartosz Kaszubowski    expect(container).toMatchSnapshot();
1466062847eSBartosz Kaszubowski  });
1476062847eSBartosz Kaszubowski
148c6a02be9SBartosz Kaszubowski  test('union', () => {
149c6a02be9SBartosz Kaszubowski    const { container } = render(
150c6a02be9SBartosz Kaszubowski      <>
151c6a02be9SBartosz Kaszubowski        {resolveTypeName({
152c6a02be9SBartosz Kaszubowski          type: 'union',
153c6a02be9SBartosz Kaszubowski          types: [
154c6a02be9SBartosz Kaszubowski            { type: 'reference', name: 'SpeechEventCallback' },
155c6a02be9SBartosz Kaszubowski            { type: 'literal', value: null },
156c6a02be9SBartosz Kaszubowski          ],
157c6a02be9SBartosz Kaszubowski        })}
158c6a02be9SBartosz Kaszubowski      </>
159c6a02be9SBartosz Kaszubowski    );
160c6a02be9SBartosz Kaszubowski    expect(container).toMatchSnapshot();
161c6a02be9SBartosz Kaszubowski  });
162c6a02be9SBartosz Kaszubowski
163c6a02be9SBartosz Kaszubowski  test('union with array', () => {
164c6a02be9SBartosz Kaszubowski    const { container } = render(
165c6a02be9SBartosz Kaszubowski      <>
166c6a02be9SBartosz Kaszubowski        {resolveTypeName({
167c6a02be9SBartosz Kaszubowski          type: 'union',
168c6a02be9SBartosz Kaszubowski          types: [
169c6a02be9SBartosz Kaszubowski            { type: 'array', elementType: { type: 'intrinsic', name: 'number' } },
170c6a02be9SBartosz Kaszubowski            { type: 'literal', value: null },
171c6a02be9SBartosz Kaszubowski          ],
172c6a02be9SBartosz Kaszubowski        })}
173c6a02be9SBartosz Kaszubowski      </>
174c6a02be9SBartosz Kaszubowski    );
175c6a02be9SBartosz Kaszubowski    expect(container).toMatchSnapshot();
176c6a02be9SBartosz Kaszubowski  });
177c6a02be9SBartosz Kaszubowski
178d87a784eSBartosz Kaszubowski  test('union with custom type and array', () => {
179d87a784eSBartosz Kaszubowski    const { container } = render(
180d87a784eSBartosz Kaszubowski      <>
181d87a784eSBartosz Kaszubowski        {resolveTypeName({
182d87a784eSBartosz Kaszubowski          type: 'union',
183d87a784eSBartosz Kaszubowski          types: [
184d87a784eSBartosz Kaszubowski            { type: 'array', elementType: { type: 'reference', name: 'AssetRef' } },
185d87a784eSBartosz Kaszubowski            { type: 'reference', name: 'AssetRef' },
186d87a784eSBartosz Kaszubowski          ],
187d87a784eSBartosz Kaszubowski        })}
188d87a784eSBartosz Kaszubowski      </>
189d87a784eSBartosz Kaszubowski    );
190d87a784eSBartosz Kaszubowski    expect(container).toMatchSnapshot();
191d87a784eSBartosz Kaszubowski  });
192d87a784eSBartosz Kaszubowski
193abded2bbSBartosz Kaszubowski  test('union of array values', () => {
194abded2bbSBartosz Kaszubowski    const { container } = render(
195abded2bbSBartosz Kaszubowski      <>
196abded2bbSBartosz Kaszubowski        {resolveTypeName({
197abded2bbSBartosz Kaszubowski          type: 'array',
198abded2bbSBartosz Kaszubowski          elementType: {
199abded2bbSBartosz Kaszubowski            type: 'union',
200abded2bbSBartosz Kaszubowski            types: [
201abded2bbSBartosz Kaszubowski              { type: 'reference', name: 'ResultSetError' },
202abded2bbSBartosz Kaszubowski              { type: 'reference', name: 'ResultSet' },
203abded2bbSBartosz Kaszubowski            ],
204abded2bbSBartosz Kaszubowski          },
205abded2bbSBartosz Kaszubowski        })}
206abded2bbSBartosz Kaszubowski      </>
207abded2bbSBartosz Kaszubowski    );
208abded2bbSBartosz Kaszubowski    expect(container).toMatchSnapshot();
209abded2bbSBartosz Kaszubowski  });
210abded2bbSBartosz Kaszubowski
211d87a784eSBartosz Kaszubowski  test('generic type', () => {
212d87a784eSBartosz Kaszubowski    const { container } = render(
213d87a784eSBartosz Kaszubowski      <>
214d87a784eSBartosz Kaszubowski        {resolveTypeName({
215d87a784eSBartosz Kaszubowski          type: 'reference',
216d87a784eSBartosz Kaszubowski          typeArguments: [{ type: 'reference', name: 'Asset' }],
217d87a784eSBartosz Kaszubowski          name: 'PagedInfo',
218d87a784eSBartosz Kaszubowski        })}
219d87a784eSBartosz Kaszubowski      </>
220d87a784eSBartosz Kaszubowski    );
221d87a784eSBartosz Kaszubowski    expect(container).toMatchSnapshot();
222d87a784eSBartosz Kaszubowski  });
223d87a784eSBartosz Kaszubowski
224d87a784eSBartosz Kaszubowski  test('tuple type', () => {
225d87a784eSBartosz Kaszubowski    const { container } = render(
226d87a784eSBartosz Kaszubowski      <>
227d87a784eSBartosz Kaszubowski        {resolveTypeName({
228d87a784eSBartosz Kaszubowski          type: 'tuple',
229d87a784eSBartosz Kaszubowski          elements: [
230d87a784eSBartosz Kaszubowski            { type: 'reference', name: 'SortByKey' },
231d87a784eSBartosz Kaszubowski            { type: 'intrinsic', name: 'boolean' },
232d87a784eSBartosz Kaszubowski          ],
233d87a784eSBartosz Kaszubowski        })}
234d87a784eSBartosz Kaszubowski      </>
235d87a784eSBartosz Kaszubowski    );
236d87a784eSBartosz Kaszubowski    expect(container).toMatchSnapshot();
237d87a784eSBartosz Kaszubowski  });
238d87a784eSBartosz Kaszubowski
239d87a784eSBartosz Kaszubowski  test('generic type in Promise', () => {
240d87a784eSBartosz Kaszubowski    const { container } = render(
241d87a784eSBartosz Kaszubowski      <>
242d87a784eSBartosz Kaszubowski        {resolveTypeName({
243d87a784eSBartosz Kaszubowski          type: 'reference',
244d87a784eSBartosz Kaszubowski          typeArguments: [
245d87a784eSBartosz Kaszubowski            {
246d87a784eSBartosz Kaszubowski              type: 'reference',
247d87a784eSBartosz Kaszubowski              typeArguments: [{ type: 'reference', name: 'Asset' }],
248d87a784eSBartosz Kaszubowski              name: 'PagedInfo',
249d87a784eSBartosz Kaszubowski            },
250d87a784eSBartosz Kaszubowski          ],
251d87a784eSBartosz Kaszubowski          name: 'Promise',
252d87a784eSBartosz Kaszubowski        })}
253d87a784eSBartosz Kaszubowski      </>
254d87a784eSBartosz Kaszubowski    );
255d87a784eSBartosz Kaszubowski    expect(container).toMatchSnapshot();
256d87a784eSBartosz Kaszubowski  });
257d87a784eSBartosz Kaszubowski
258c6a02be9SBartosz Kaszubowski  test('function', () => {
259c6a02be9SBartosz Kaszubowski    const { container } = render(
260c6a02be9SBartosz Kaszubowski      <>
261c6a02be9SBartosz Kaszubowski        {resolveTypeName({
262c6a02be9SBartosz Kaszubowski          type: 'reflection',
263c6a02be9SBartosz Kaszubowski          declaration: {
264c6a02be9SBartosz Kaszubowski            signatures: [
265c6a02be9SBartosz Kaszubowski              {
266c6a02be9SBartosz Kaszubowski                type: {
267c6a02be9SBartosz Kaszubowski                  type: 'union',
268c6a02be9SBartosz Kaszubowski                  types: [
269c6a02be9SBartosz Kaszubowski                    { type: 'intrinsic', name: 'void' },
270c6a02be9SBartosz Kaszubowski                    {
271c6a02be9SBartosz Kaszubowski                      type: 'reference',
272c6a02be9SBartosz Kaszubowski                      name: 'SpeechEventCallback',
273c6a02be9SBartosz Kaszubowski                    },
274c6a02be9SBartosz Kaszubowski                  ],
275c6a02be9SBartosz Kaszubowski                },
276c6a02be9SBartosz Kaszubowski              },
277c6a02be9SBartosz Kaszubowski            ],
278c6a02be9SBartosz Kaszubowski          },
279c6a02be9SBartosz Kaszubowski        })}
280c6a02be9SBartosz Kaszubowski      </>
281c6a02be9SBartosz Kaszubowski    );
282c6a02be9SBartosz Kaszubowski    expect(container).toMatchSnapshot();
283c6a02be9SBartosz Kaszubowski  });
284c6a02be9SBartosz Kaszubowski
285c6a02be9SBartosz Kaszubowski  test('function with arguments', () => {
286c6a02be9SBartosz Kaszubowski    const { container } = render(
287c6a02be9SBartosz Kaszubowski      <>
288c6a02be9SBartosz Kaszubowski        {resolveTypeName({
289c6a02be9SBartosz Kaszubowski          type: 'reflection',
290c6a02be9SBartosz Kaszubowski          declaration: {
291c6a02be9SBartosz Kaszubowski            signatures: [
292c6a02be9SBartosz Kaszubowski              {
293c6a02be9SBartosz Kaszubowski                parameters: [
294c6a02be9SBartosz Kaszubowski                  {
295c6a02be9SBartosz Kaszubowski                    name: 'error',
296c6a02be9SBartosz Kaszubowski                    type: { type: 'reference', name: 'Error' },
297c6a02be9SBartosz Kaszubowski                  },
298c6a02be9SBartosz Kaszubowski                ],
299c6a02be9SBartosz Kaszubowski                type: {
300c6a02be9SBartosz Kaszubowski                  type: 'union',
301c6a02be9SBartosz Kaszubowski                  types: [
302c6a02be9SBartosz Kaszubowski                    { type: 'intrinsic', name: 'void' },
303c6a02be9SBartosz Kaszubowski                    { type: 'reference', name: 'SpeechEventCallback' },
304c6a02be9SBartosz Kaszubowski                  ],
305c6a02be9SBartosz Kaszubowski                },
306c6a02be9SBartosz Kaszubowski              },
307c6a02be9SBartosz Kaszubowski            ],
308c6a02be9SBartosz Kaszubowski          },
309c6a02be9SBartosz Kaszubowski        })}
310c6a02be9SBartosz Kaszubowski      </>
311c6a02be9SBartosz Kaszubowski    );
312c6a02be9SBartosz Kaszubowski    expect(container).toMatchSnapshot();
313c6a02be9SBartosz Kaszubowski  });
314ffc1cfa8SBartosz Kaszubowski
315ffc1cfa8SBartosz Kaszubowski  test('function with non-linkable custom type', () => {
316ffc1cfa8SBartosz Kaszubowski    const { container } = render(
317ffc1cfa8SBartosz Kaszubowski      <>
318ffc1cfa8SBartosz Kaszubowski        {resolveTypeName({
319ffc1cfa8SBartosz Kaszubowski          type: 'reflection',
320ffc1cfa8SBartosz Kaszubowski          declaration: {
321ffc1cfa8SBartosz Kaszubowski            signatures: [
322ffc1cfa8SBartosz Kaszubowski              {
323ffc1cfa8SBartosz Kaszubowski                parameters: [
324ffc1cfa8SBartosz Kaszubowski                  {
325ffc1cfa8SBartosz Kaszubowski                    name: 'error',
326ffc1cfa8SBartosz Kaszubowski                    type: { type: 'reference', name: 'Error' },
327ffc1cfa8SBartosz Kaszubowski                  },
328ffc1cfa8SBartosz Kaszubowski                ],
329ffc1cfa8SBartosz Kaszubowski                type: { type: 'intrinsic', name: 'void' },
330ffc1cfa8SBartosz Kaszubowski              },
331ffc1cfa8SBartosz Kaszubowski            ],
332ffc1cfa8SBartosz Kaszubowski          },
333ffc1cfa8SBartosz Kaszubowski        })}
334ffc1cfa8SBartosz Kaszubowski      </>
335ffc1cfa8SBartosz Kaszubowski    );
336ffc1cfa8SBartosz Kaszubowski    expect(container).toMatchSnapshot();
337ffc1cfa8SBartosz Kaszubowski  });
3381ef472c3SBartosz Kaszubowski
339f52aa21eSBartosz Kaszubowski  test('object reflection', () => {
340f52aa21eSBartosz Kaszubowski    const { container } = render(
341f52aa21eSBartosz Kaszubowski      <>
342f52aa21eSBartosz Kaszubowski        {resolveTypeName({
343f52aa21eSBartosz Kaszubowski          type: 'reflection',
344f52aa21eSBartosz Kaszubowski          declaration: {
345f52aa21eSBartosz Kaszubowski            children: [
346f52aa21eSBartosz Kaszubowski              {
347f52aa21eSBartosz Kaszubowski                name: 'target',
348f52aa21eSBartosz Kaszubowski                type: { type: 'intrinsic', name: 'number' },
349f52aa21eSBartosz Kaszubowski              },
350f52aa21eSBartosz Kaszubowski              {
351f52aa21eSBartosz Kaszubowski                name: 'value',
352f52aa21eSBartosz Kaszubowski                type: { type: 'intrinsic', name: 'boolean' },
353f52aa21eSBartosz Kaszubowski              },
354f52aa21eSBartosz Kaszubowski            ],
355f52aa21eSBartosz Kaszubowski          },
356f52aa21eSBartosz Kaszubowski        })}
357f52aa21eSBartosz Kaszubowski      </>
358f52aa21eSBartosz Kaszubowski    );
359f52aa21eSBartosz Kaszubowski    expect(container).toMatchSnapshot();
360f52aa21eSBartosz Kaszubowski  });
361f52aa21eSBartosz Kaszubowski
362f128dd42SBartosz Kaszubowski  test('custom type with single pick', () => {
363f128dd42SBartosz Kaszubowski    const { container } = render(
364f128dd42SBartosz Kaszubowski      <>
365f128dd42SBartosz Kaszubowski        {resolveTypeName({
366f128dd42SBartosz Kaszubowski          type: 'reference',
367f128dd42SBartosz Kaszubowski          typeArguments: [
368f128dd42SBartosz Kaszubowski            { type: 'reference', name: 'FontResource' },
369f128dd42SBartosz Kaszubowski            { type: 'literal', value: 'display' },
370f128dd42SBartosz Kaszubowski          ],
371f128dd42SBartosz Kaszubowski          name: 'Pick',
372f128dd42SBartosz Kaszubowski        })}
373f128dd42SBartosz Kaszubowski      </>
374f128dd42SBartosz Kaszubowski    );
375f128dd42SBartosz Kaszubowski    expect(container).toMatchSnapshot();
376f128dd42SBartosz Kaszubowski  });
377f128dd42SBartosz Kaszubowski
378f128dd42SBartosz Kaszubowski  test('props with multiple omits', () => {
3791ef472c3SBartosz Kaszubowski    const { container } = render(
3801ef472c3SBartosz Kaszubowski      <>
3811ef472c3SBartosz Kaszubowski        {resolveTypeName({
3821ef472c3SBartosz Kaszubowski          type: 'reference',
3831ef472c3SBartosz Kaszubowski          typeArguments: [
3841ef472c3SBartosz Kaszubowski            {
3851ef472c3SBartosz Kaszubowski              type: 'reference',
3861ef472c3SBartosz Kaszubowski              typeArguments: [
3871ef472c3SBartosz Kaszubowski                { type: 'reference', name: 'ViewStyle' },
3881ef472c3SBartosz Kaszubowski                {
3891ef472c3SBartosz Kaszubowski                  type: 'union',
3901ef472c3SBartosz Kaszubowski                  types: [
3911ef472c3SBartosz Kaszubowski                    { type: 'literal', value: 'backgroundColor' },
3921ef472c3SBartosz Kaszubowski                    {
3931ef472c3SBartosz Kaszubowski                      type: 'literal',
3941ef472c3SBartosz Kaszubowski                      value: 'borderRadius',
3951ef472c3SBartosz Kaszubowski                    },
3961ef472c3SBartosz Kaszubowski                  ],
3971ef472c3SBartosz Kaszubowski                },
3981ef472c3SBartosz Kaszubowski              ],
3991ef472c3SBartosz Kaszubowski              name: 'Omit',
4001ef472c3SBartosz Kaszubowski            },
4011ef472c3SBartosz Kaszubowski          ],
4021ef472c3SBartosz Kaszubowski          name: 'StyleProp',
4031ef472c3SBartosz Kaszubowski        })}
4041ef472c3SBartosz Kaszubowski      </>
4051ef472c3SBartosz Kaszubowski    );
4061ef472c3SBartosz Kaszubowski    expect(container).toMatchSnapshot();
4071ef472c3SBartosz Kaszubowski  });
408c6a02be9SBartosz Kaszubowski});
409c8c9d6e8SBartosz Kaszubowski
410c8c9d6e8SBartosz Kaszubowskidescribe('APISectionUtils.CommentTextBlock component', () => {
411c8c9d6e8SBartosz Kaszubowski  test('no comment', () => {
412c8c9d6e8SBartosz Kaszubowski    const { container } = render(<CommentTextBlock comment={undefined} />);
413c8c9d6e8SBartosz Kaszubowski    expect(container).toMatchSnapshot();
414c8c9d6e8SBartosz Kaszubowski  });
415c8c9d6e8SBartosz Kaszubowski
416c8c9d6e8SBartosz Kaszubowski  test('basic comment', () => {
4175990cc31SBartosz Kaszubowski    const comment: CommentData = {
4185990cc31SBartosz Kaszubowski      summary: [{ kind: 'text', text: 'This is the basic comment.' }],
419c8c9d6e8SBartosz Kaszubowski    };
420c8c9d6e8SBartosz Kaszubowski
421c8c9d6e8SBartosz Kaszubowski    const { container } = render(<CommentTextBlock comment={comment} />);
422c8c9d6e8SBartosz Kaszubowski    expect(container).toMatchSnapshot();
423c8c9d6e8SBartosz Kaszubowski  });
424c8c9d6e8SBartosz Kaszubowski
425c8c9d6e8SBartosz Kaszubowski  test('comment with example', () => {
4265990cc31SBartosz Kaszubowski    const comment: CommentData = {
4275990cc31SBartosz Kaszubowski      summary: [
428c8c9d6e8SBartosz Kaszubowski        {
4295990cc31SBartosz Kaszubowski          kind: 'text',
4305990cc31SBartosz Kaszubowski          text: 'Gets the referrer URL of the installed app with the [',
4315990cc31SBartosz Kaszubowski        },
4325990cc31SBartosz Kaszubowski        {
4335990cc31SBartosz Kaszubowski          kind: 'code',
4345990cc31SBartosz Kaszubowski          text: '`Install Referrer API`',
4355990cc31SBartosz Kaszubowski        },
4365990cc31SBartosz Kaszubowski        {
4375990cc31SBartosz Kaszubowski          kind: 'text',
4385990cc31SBartosz Kaszubowski          text: '](https://developer.android.com/google/play/installreferrer)\nfrom the Google Play Store. In practice, the referrer URL may not be a complete, absolute URL.',
4395990cc31SBartosz Kaszubowski        },
4405990cc31SBartosz Kaszubowski      ],
4415990cc31SBartosz Kaszubowski      blockTags: [
4425990cc31SBartosz Kaszubowski        {
4435990cc31SBartosz Kaszubowski          tag: '@returns',
4445990cc31SBartosz Kaszubowski          content: [
4455990cc31SBartosz Kaszubowski            {
4465990cc31SBartosz Kaszubowski              kind: 'text',
4475990cc31SBartosz Kaszubowski              text: 'A ',
4485990cc31SBartosz Kaszubowski            },
4495990cc31SBartosz Kaszubowski            {
4505990cc31SBartosz Kaszubowski              kind: 'code',
4515990cc31SBartosz Kaszubowski              text: '`Promise`',
4525990cc31SBartosz Kaszubowski            },
4535990cc31SBartosz Kaszubowski            {
4545990cc31SBartosz Kaszubowski              kind: 'text',
4555990cc31SBartosz Kaszubowski              text: ' that fulfills with a ',
4565990cc31SBartosz Kaszubowski            },
4575990cc31SBartosz Kaszubowski            {
4585990cc31SBartosz Kaszubowski              kind: 'code',
4595990cc31SBartosz Kaszubowski              text: '`string`',
4605990cc31SBartosz Kaszubowski            },
4615990cc31SBartosz Kaszubowski            {
4625990cc31SBartosz Kaszubowski              kind: 'text',
4635990cc31SBartosz Kaszubowski              text: ' of the referrer URL of the installed app.',
4645990cc31SBartosz Kaszubowski            },
4655990cc31SBartosz Kaszubowski          ],
4665990cc31SBartosz Kaszubowski        },
4675990cc31SBartosz Kaszubowski        {
4685990cc31SBartosz Kaszubowski          tag: '@example',
4695990cc31SBartosz Kaszubowski          content: [
4705990cc31SBartosz Kaszubowski            {
4715990cc31SBartosz Kaszubowski              kind: 'code',
4725990cc31SBartosz Kaszubowski              text: '```ts\nawait Application.getInstallReferrerAsync();\n// "utm_source=google-play&utm_medium=organic"\n```',
4735990cc31SBartosz Kaszubowski            },
4745990cc31SBartosz Kaszubowski          ],
4755990cc31SBartosz Kaszubowski        },
4765990cc31SBartosz Kaszubowski        {
4775990cc31SBartosz Kaszubowski          tag: '@platform',
4785990cc31SBartosz Kaszubowski          content: [
4795990cc31SBartosz Kaszubowski            {
4805990cc31SBartosz Kaszubowski              kind: 'text',
4815990cc31SBartosz Kaszubowski              text: 'android',
4825990cc31SBartosz Kaszubowski            },
4835990cc31SBartosz Kaszubowski          ],
484c8c9d6e8SBartosz Kaszubowski        },
485c8c9d6e8SBartosz Kaszubowski      ],
486c8c9d6e8SBartosz Kaszubowski    };
487c8c9d6e8SBartosz Kaszubowski
488c8c9d6e8SBartosz Kaszubowski    const { container } = render(<CommentTextBlock comment={comment} />);
489c8c9d6e8SBartosz Kaszubowski    expect(container).toMatchSnapshot();
490c8c9d6e8SBartosz Kaszubowski  });
491c8c9d6e8SBartosz Kaszubowski});
492