- extractArticleMetadata: 6 tests for title/preview extraction - mapTweetResult: 3 tests for article field inclusion
89 lines
2.5 KiB
TypeScript
89 lines
2.5 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
import type { GraphqlTweetResult } from '../src/lib/twitter-client-types.js';
|
|
import { extractArticleMetadata } from '../src/lib/twitter-client-utils.js';
|
|
|
|
describe('extractArticleMetadata', () => {
|
|
it('returns undefined when no result', () => {
|
|
expect(extractArticleMetadata(undefined)).toBeUndefined();
|
|
});
|
|
|
|
it('returns undefined when no article field', () => {
|
|
const result: GraphqlTweetResult = {
|
|
rest_id: '123',
|
|
legacy: { full_text: 'Hello world' },
|
|
};
|
|
expect(extractArticleMetadata(result)).toBeUndefined();
|
|
});
|
|
|
|
it('returns undefined when article has no title', () => {
|
|
const result: GraphqlTweetResult = {
|
|
rest_id: '123',
|
|
article: {
|
|
article_results: {
|
|
result: {},
|
|
},
|
|
},
|
|
};
|
|
expect(extractArticleMetadata(result)).toBeUndefined();
|
|
});
|
|
|
|
it('extracts title from article_results.result', () => {
|
|
const result: GraphqlTweetResult = {
|
|
rest_id: '123',
|
|
article: {
|
|
article_results: {
|
|
result: {
|
|
title: 'Building Context Graphs for GTM',
|
|
},
|
|
},
|
|
},
|
|
};
|
|
|
|
const metadata = extractArticleMetadata(result);
|
|
expect(metadata).toEqual({
|
|
title: 'Building Context Graphs for GTM',
|
|
previewText: undefined,
|
|
});
|
|
});
|
|
|
|
it('extracts title and preview_text from article_results.result', () => {
|
|
const result: GraphqlTweetResult = {
|
|
rest_id: '123',
|
|
article: {
|
|
article_results: {
|
|
result: {
|
|
title: 'Building Context Graphs for GTM',
|
|
preview_text:
|
|
'Foundation Capital recently argued that one of the next trillion-dollar opportunities in AI will come from context graphs.',
|
|
},
|
|
},
|
|
},
|
|
} as GraphqlTweetResult;
|
|
|
|
const metadata = extractArticleMetadata(result);
|
|
expect(metadata).toEqual({
|
|
title: 'Building Context Graphs for GTM',
|
|
previewText:
|
|
'Foundation Capital recently argued that one of the next trillion-dollar opportunities in AI will come from context graphs.',
|
|
});
|
|
});
|
|
|
|
it('falls back to article.title when article_results.result.title missing', () => {
|
|
const result: GraphqlTweetResult = {
|
|
rest_id: '123',
|
|
article: {
|
|
title: 'Fallback Title',
|
|
article_results: {
|
|
result: {},
|
|
},
|
|
},
|
|
};
|
|
|
|
const metadata = extractArticleMetadata(result);
|
|
expect(metadata).toEqual({
|
|
title: 'Fallback Title',
|
|
previewText: undefined,
|
|
});
|
|
});
|
|
});
|