thunderstore 0.4.0

A library for interacting with the Thunderstore API
Documentation
use super::*;

#[test]
fn version_id_new() {
    let id = VersionIdent::new("Kesomannen", "GaleModManager", "0.6.0");
    assert_eq!(id.namespace(), "Kesomannen");
    assert_eq!(id.name(), "GaleModManager");
    assert_eq!(id.version(), "0.6.0");
}

#[test]
fn version_id_path() {
    let id = VersionIdent::new("notnotnotswipez", "MoreCompany", "1.9.1");
    assert_eq!(id.path().to_string(), "notnotnotswipez/MoreCompany/1.9.1");
}

#[test]
fn parse_version_id() {
    let id: VersionIdent = "Evaisa-LethalLib-0.16.0".parse().unwrap();
    assert_eq!(id.namespace(), "Evaisa");
    assert_eq!(id.name(), "LethalLib");
    assert_eq!(id.version(), "0.16.0");
}

#[test]
fn version_id_from_tuple() {
    let id: VersionIdent = ("A", "B", "1.2.3").into();
    assert_eq!(id.namespace(), "A");
    assert_eq!(id.name(), "B");
    assert_eq!(id.version(), "1.2.3");
}

#[test]
fn package_id_new_and_parts() {
    let id = PackageIdent::new("X", "Y");
    assert_eq!(id.namespace(), "X");
    assert_eq!(id.name(), "Y");
    assert_eq!(id.to_string(), "X-Y");
}

#[test]
fn package_id_from_str() {
    let id: PackageIdent = "Author-Mod".parse().unwrap();
    assert_eq!(id.namespace(), "Author");
    assert_eq!(id.name(), "Mod");
}

#[test]
fn package_id_path() {
    let id = PackageIdent::new("NS", "Mod");
    assert_eq!(id.path().to_string(), "NS/Mod");
}

#[test]
fn version_id_into_package_id() {
    let vid = VersionIdent::new("N", "M", "0.0.1");
    let pid: PackageIdent = vid.package_id();
    assert_eq!(pid.namespace(), "N");
    assert_eq!(pid.name(), "M");
}

#[test]
fn version_id_serde_roundtrip() {
    let original = VersionIdent::new("TestAuthor", "TestMod", "1.2.3");
    let json = serde_json::to_string(&original).unwrap();
    let deserialized: VersionIdent = serde_json::from_str(&json).unwrap();
    assert_eq!(original, deserialized);
}

#[test]
fn package_id_serde_roundtrip() {
    let original = PackageIdent::new("TestAuthor", "TestMod");
    let json = serde_json::to_string(&original).unwrap();
    let deserialized: PackageIdent = serde_json::from_str(&json).unwrap();
    assert_eq!(original, deserialized);
}

#[test]
fn version_id_serde_from_string() {
    let json = r#""SomeAuthor-SomeMod-0.0.5""#;
    let id: VersionIdent = serde_json::from_str(json).unwrap();
    assert_eq!(id.namespace(), "SomeAuthor");
    assert_eq!(id.name(), "SomeMod");
    assert_eq!(id.version(), "0.0.5");
}

#[test]
fn package_id_serde_from_string() {
    let json = r#""CoolGuy-ModPack""#;
    let id: PackageIdent = serde_json::from_str(json).unwrap();
    assert_eq!(id.namespace(), "CoolGuy");
    assert_eq!(id.name(), "ModPack");
}