petrify 0.2.0

Petrify live websites into static offline copies
Documentation
use petrify::config::Config;
use petrify::types::ResourceType;

#[test]
fn default_download_only_includes_fonts_and_media() {
    let config = Config::new();
    for expected in ["js", "css", "images", "video", "html", "pdf", "fonts"] {
        assert!(
            config.download_only.iter().any(|t| t == expected),
            "default download_only missing {expected}"
        );
    }
}

#[test]
fn should_download_matches_cli_filter_names() {
    let config = Config::new();

    assert!(config.should_download_type(&ResourceType::JavaScript));
    assert!(config.should_download_type(&ResourceType::CSS));
    assert!(config.should_download_type(&ResourceType::Image));
    assert!(config.should_download_type(&ResourceType::Font));
}

#[test]
fn respects_custom_download_only_list() {
    let mut config = Config::new();
    config.download_only = vec!["html".to_string(), "js".to_string()];

    assert!(config.should_download_type(&ResourceType::HTML));
    assert!(config.should_download_type(&ResourceType::JavaScript));
    assert!(!config.should_download_type(&ResourceType::CSS));
}

#[test]
fn max_pages_limit_helpers() {
    let mut config = Config::new();
    assert!(!config.should_limit_pages());

    config.max_pages = 5;
    assert!(config.should_limit_pages());
    assert!(!config.is_page_limit_reached(4));
    assert!(config.is_page_limit_reached(5));
}

#[test]
fn depth_limit_parsing() {
    let mut config = Config::new();
    assert_eq!(config.get_depth_limit(), None);

    config.depth = "3".to_string();
    assert_eq!(config.get_depth_limit(), Some(3));
}