APP-3015: Fix link metadata type detection (#11637)

This commit is contained in:
Samuel Newman
2026-09-02 23:50:13 +03:00
committed by GitHub
parent 7b8e50aeb2
commit af3fbcc940
2 changed files with 57 additions and 1208 deletions
+50 -5
View File
@@ -1,13 +1,58 @@
import {getLikelyType, LikelyType} from '../../src/lib/link-meta/link-meta'
import {
getLikelyType,
getLinkMeta,
LikelyType,
} from '../../src/lib/link-meta/link-meta'
describe('getLikelyType', () => {
it('correctly handles non-parsed url', async () => {
const output = await getLikelyType('https://example.com')
it('correctly handles non-parsed url', () => {
const output = getLikelyType('https://example.com')
expect(output).toEqual(LikelyType.HTML)
})
it('handles non-string urls without crashing', async () => {
const output = await getLikelyType('123')
it('handles non-string urls without crashing', () => {
const output = getLikelyType('123')
expect(output).toEqual(LikelyType.Other)
})
})
describe('getLinkMeta', () => {
const originalFetch = global.fetch
afterEach(() => {
global.fetch = originalFetch
})
it('fetches metadata for stream.place routes that look like files', async () => {
const fetchMock = jest.fn().mockResolvedValue({
json: () =>
Promise.resolve({
error: '',
description: 'AT Protocol livestreams',
image: 'https://stream.place/thumbnail.jpg',
title: 'atproto.com on stream.place',
}),
})
global.fetch = fetchMock
const output = await getLinkMeta('https://stream.place/atproto.com')
expect(fetchMock).toHaveBeenCalledTimes(1)
expect(output).toMatchObject({
description: 'AT Protocol livestreams',
image: 'https://stream.place/thumbnail.jpg',
likelyType: LikelyType.HTML,
title: 'atproto.com on stream.place',
})
})
it('skips metadata fetching for direct image URLs', async () => {
const fetchMock = jest.fn()
global.fetch = fetchMock
const output = await getLinkMeta('https://example.com/image.JPEG')
expect(fetchMock).not.toHaveBeenCalled()
expect(output).toMatchObject({likelyType: LikelyType.Image})
})
})
File diff suppressed because it is too large Load Diff