import { describe, expect, it } from 'vitest';
import { getRegistry } from '@jackwener/opencli/registry';
import { __test__ } from './thread.js';

describe('twitter thread parser', () => {
    it('extracts author bio from tweet user entity', () => {
        const command = getRegistry().get('twitter/thread');
        expect(command?.columns).toEqual(['id', 'author', 'bio', 'text', 'likes', 'retweets', 'url', 'has_media', 'media_urls', 'media_posters', 'card', 'quoted_tweet']);
        const result = __test__.parseTweetDetail({
            data: {
                threaded_conversation_with_injections_v2: {
                    instructions: [
                        {
                            entries: [
                                {
                                    content: {
                                        itemContent: {
                                            tweet_results: {
                                                result: {
                                                    rest_id: '1',
                                                    legacy: {
                                                        full_text: 'thread tweet',
                                                        favorite_count: 3,
                                                        retweet_count: 2,
                                                    },
                                                    core: {
                                                        user_results: {
                                                            result: {
                                                                legacy: {
                                                                    screen_name: 'alice',
                                                                    description: 'Thread author bio',
                                                                },
                                                            },
                                                        },
                                                    },
                                                },
                                            },
                                        },
                                    },
                                },
                            ],
                        },
                    ],
                },
            },
        }, new Set());
        expect(result.tweets).toHaveLength(1);
        expect(result.tweets[0]).toMatchObject({
            id: '1',
            author: 'alice',
            bio: 'Thread author bio',
            text: 'thread tweet',
            likes: 3,
            retweets: 2,
            url: 'https://x.com/alice/status/1',
        });
    });
});
