Documentation
#[cfg(test)]
mod bilibili {
    use finata::{utils::Client, website::bilibili::*, AsClient, Extract};
    use reqwest::header::*;

    fn client() -> Client {
        let mut client = Client::with_header(finata::hdmap! {
            USER_AGENT => finata::utils::UA.clone(),
            REFERER => "https://www.bilibili.com",
        });
        *client.client_mut() = reqwest::Client::new();
        client
    }
    #[tokio::test]
    async fn base_extractor() {
        let mut extractor = BaseExtractor::new(54592589, 95677892, client());
        let res = extractor.extract().await.unwrap();
        assert_eq!(
            res.title(),
            "第一部网络视频长啥样?让你大开眼界的中国网络视频发展史#01"
        );
        assert!(!res.raws().is_empty());
    }
    #[tokio::test]
    async fn av() {
        let mut extractor = Video::new("https://www.bilibili.com/video/av54592589/").unwrap();
        *extractor.client_mut() = client();
        let res = extractor.extract().await.unwrap();
        assert_eq!(
            res.title(),
            "第一部网络视频长啥样?让你大开眼界的中国网络视频发展史#01"
        );
        assert!(!res.raws().is_empty());
    }
    #[tokio::test]
    async fn bv() {
        let mut extractor = Video::new("https://www.bilibili.com/video/BV1L4411M7sC").unwrap();
        *extractor.client_mut() = client();
        let res = extractor.extract().await.unwrap();
        assert_eq!(
            res.title(),
            "第一部网络视频长啥样?让你大开眼界的中国网络视频发展史#01"
        );
        assert!(!res.raws().is_empty());
    }
    #[tokio::test]
    async fn ep() {
        let mut extractor = Bangumi::new("https://www.bilibili.com/bangumi/play/ep28251").unwrap();
        *extractor.client_mut() = client();
        let res = extractor.extract().await.unwrap();
        assert_eq!(res.title(), "【1月】路人女主的养成方法 03");
        assert!(!res.raws().is_empty());
    }
    #[tokio::test]
    async fn ss() {
        let mut extractor = Bangumi::new("https://www.bilibili.com/bangumi/play/ss1512").unwrap();
        *extractor.client_mut() = client();
        let res = extractor.extract().await.unwrap();
        assert_eq!(res.title(), "【1月】路人女主的养成方法 00");
        assert!(!res.raws().is_empty());
    }
    #[tokio::test]
    async fn fix_old() {
        let mut extractor = Bangumi::new("https://www.bilibili.com/bangumi/play/ss5051").unwrap();
        *extractor.client_mut() = client();
        let res = extractor.extract().await.unwrap();
        assert_eq!(res.title(), "【剧场版】planetarian ~星之人~【独家正版】");
        assert!(!res.raws().is_empty());
    }
    #[tokio::test]
    async fn fix_pv() {
        let mut extractor = Bangumi::new("https://www.bilibili.com/bangumi/play/ep417116").unwrap();
        *extractor.client_mut() = client();
        let res = extractor.extract().await.unwrap();
        assert_eq!(res.title(), "《世界尽头的圣骑士》PV2");
        assert!(!res.raws().is_empty());
    }
}

#[cfg(test)]
mod netease_music {
    use finata::{utils::Client, website::netease_music::*, AsClient, Extract};
    use reqwest::header::*;

    fn client() -> Client {
        let mut client = Client::with_header(finata::hdmap! {
            USER_AGENT => finata::utils::UA.clone(),
            REFERER => "https://music.163.com",
        });
        *client.client_mut() = reqwest::Client::new();
        client
    }

    #[tokio::test]
    async fn song() {
        let mut extractor = Song::new("https://music.163.com/#/song?id=1458308282").unwrap();
        let res = extractor.extract().await.unwrap();
        *extractor.client_mut() = client();
        assert_eq!(
            res.title(),
            "嘘月(「想哭的我戴上猫的面具」片尾曲)(翻自 ヨルシカ)"
        );
        assert!(!res.raws().is_empty())
    }

    #[tokio::test]
    async fn playlist() {
        let mut extractor = PlayList::new("https://music.163.com/#/playlist?id=406607901").unwrap();
        let res = extractor.extract().await.unwrap();
        *extractor.client_mut() = client();
        assert_eq!(res.title(), "東方Project ——正作原曲合集");
    }
}

#[cfg(test)]
mod pixiv {
    use finata::{website::pixiv::*, Extract};

    #[tokio::test]
    async fn pixiv() {
        let mut extractor = Pixiv::with_pid(92386069.to_string());
        let res = extractor.extract().await.unwrap();
        assert_eq!(res.title(), "「とじこめて」");
        assert_eq!(res.raws()[0].tracks.len(), 2);
    }
}