// yt - A fully featured command line YouTube client // // Copyright (C) 2024 Benedikt Peetz // SPDX-License-Identifier: GPL-3.0-or-later // // This file is part of Yt. // // You should have received a copy of the License along with this program. // If not, see . use std::sync::LazyLock; use serde_json::{json, Value}; use url::Url; static YT_OPTS: LazyLock> = LazyLock::new(|| { match json!({ "playliststart": 1, "playlistend": 10, "noplaylist": false, "extract_flat": false, }) { Value::Object(obj) => obj, _ => unreachable!("This json is hardcoded"), } }); #[tokio::test] async fn test_extract_info_video() { let info = crate::extract_info( &YT_OPTS, &Url::parse("https://www.youtube.com/watch?v=dbjPnXaacAU").expect("Is valid."), false, false, ) .await .map_err(|err| format!("Encountered error: '{}'", err)) .unwrap(); println!("{:#?}", info); } #[tokio::test] async fn test_extract_info_url() { let err = crate::extract_info( &YT_OPTS, &Url::parse("https://google.com").expect("Is valid."), false, false, ) .await .map_err(|err| format!("Encountered error: '{}'", err)) .unwrap(); println!("{:#?}", err); } #[tokio::test] async fn test_extract_info_playlist() { let err = crate::extract_info( &YT_OPTS, &Url::parse("https://www.youtube.com/@TheGarriFrischer/videos").expect("Is valid."), false, true, ) .await .map_err(|err| format!("Encountered error: '{}'", err)) .unwrap(); println!("{:#?}", err); } #[tokio::test] async fn test_extract_info_playlist_full() { let err = crate::extract_info( &YT_OPTS, &Url::parse("https://www.youtube.com/@NixOS-Foundation/videos").expect("Is valid."), false, true, ) .await .map_err(|err| format!("Encountered error: '{}'", err)) .unwrap(); println!("{:#?}", err); }