qinstagram 0.1.1

Enterprise-grade IG Private API Architecture & Protocol Engineering toolkit with 100% Async-GraphQL & Websocket integration.
Documentation
use serde_json::json;
use qinstagram::types::message::Message;
use qinstagram::direct::parser::parse_message_item;

#[test]
fn test_parse_text_message() {
    let mock_json = json!({
        "item_id": "12345",
        "user_id": "111",
        "timestamp": 1600000000000u64,
        "item_type": "text",
        "text": "Hello world!"
    });
    
    let parsed = parse_message_item(&mock_json, "thread_1", "999");
    assert!(parsed.is_some());
    if let Some(Message::Text(t)) = parsed {
        assert_eq!(t.text, "Hello world!");
        assert_eq!(t.base.id, "12345");
        assert_eq!(t.base.is_outgoing, false);
    } else {
        panic!("Parsed wrong type");
    }
}

#[test]
fn test_parse_link_message() {
    let mock_json = json!({
        "item_id": "67890",
        "user_id": "999",
        "timestamp": 1600000000000u64,
        "item_type": "link",
        "link": {
            "text": "Check this out",
            "link_context": {
                "link_url": "https://example.com"
            }
        }
    });

    let parsed = parse_message_item(&mock_json, "thread_1", "999");
    assert!(parsed.is_some());
    if let Some(Message::Link(m)) = parsed {
        assert_eq!(m.link.text, "Check this out");
        assert_eq!(m.link.url, "https://example.com");
        assert_eq!(m.base.is_outgoing, true);
    } else {
        panic!("Parsed wrong type");
    }
}

#[test]
fn test_blocked_brainrot_message() {
    let mock_json = json!({
        "item_id": "99999",
        "user_id": "111",
        "timestamp": 1600000005000u64,
        "item_type": "reel_share"
    });

    let parsed = parse_message_item(&mock_json, "thread_1", "999");
    assert!(parsed.is_some());
    if let Some(Message::Placeholder(p)) = parsed {
        assert_eq!(p.text, "[Instagram CLI successfully blocked a brainrot]");
    } else {
        panic!("Parsed wrong type");
    }
}