viewpoint-cdp 0.4.3

Low-level Chrome DevTools Protocol implementation over WebSocket
Documentation
use super::*;

#[test]
fn test_target_info_changed_event_deserialization() {
    let json = r#"{
        "targetInfo": {
            "targetId": "ABC123",
            "type": "page",
            "title": "Example Page",
            "url": "https://example.com",
            "attached": true,
            "browserContextId": "context-456"
        }
    }"#;

    let event: TargetInfoChangedEvent = serde_json::from_str(json).unwrap();
    assert_eq!(event.target_info.target_id, "ABC123");
    assert_eq!(event.target_info.target_type, "page");
    assert_eq!(event.target_info.title, "Example Page");
    assert_eq!(event.target_info.url, "https://example.com");
    assert!(event.target_info.attached);
    assert_eq!(
        event.target_info.browser_context_id,
        Some("context-456".to_string())
    );
}

#[test]
fn test_target_info_changed_event_without_context_id() {
    let json = r#"{
        "targetInfo": {
            "targetId": "DEF789",
            "type": "page",
            "title": "Default Context Page",
            "url": "about:blank",
            "attached": false
        }
    }"#;

    let event: TargetInfoChangedEvent = serde_json::from_str(json).unwrap();
    assert_eq!(event.target_info.target_id, "DEF789");
    assert!(!event.target_info.attached);
    assert!(event.target_info.browser_context_id.is_none());
    assert!(event.target_info.opener_id.is_none());
}

#[test]
fn test_target_created_event_deserialization() {
    let json = r#"{
        "targetInfo": {
            "targetId": "target-123",
            "type": "page",
            "title": "New Tab",
            "url": "chrome://newtab/",
            "attached": false,
            "openerId": "opener-456"
        }
    }"#;

    let event: TargetCreatedEvent = serde_json::from_str(json).unwrap();
    assert_eq!(event.target_info.target_id, "target-123");
    assert_eq!(event.target_info.opener_id, Some("opener-456".to_string()));
}