tinyhumans 0.1.0

Rust SDK for the TinyHumans backend
Documentation
use serde_json::json;
use tinyhumans_sdk::api::types::ClaimReferralRequest;
use tinyhumans_sdk::TinyHumansClient;
use wiremock::matchers::{method, path};
use wiremock::{Mock, MockServer, ResponseTemplate};

#[tokio::test]
async fn claim_referral_posts_json_body() {
    let server = MockServer::start().await;
    Mock::given(method("POST"))
        .and(path("/referral/claim"))
        .respond_with(
            ResponseTemplate::new(200)
                .set_body_json(json!({"success": true, "data": {"claimed": true}})),
        )
        .mount(&server)
        .await;

    let client = TinyHumansClient::new(server.uri());
    let result = client
        .referral()
        .claim_referral(&ClaimReferralRequest {
            code: "abc".into(),
            device_fingerprint: None,
        })
        .await
        .unwrap();

    assert_eq!(result, json!({"claimed": true}));
}

#[tokio::test]
async fn get_referral_stats_unwraps_envelope() {
    let server = MockServer::start().await;
    Mock::given(method("GET"))
        .and(path("/referral/stats"))
        .respond_with(
            ResponseTemplate::new(200)
                .set_body_json(json!({"success": true, "data": {"earnings": 10}})),
        )
        .mount(&server)
        .await;

    let client = TinyHumansClient::new(server.uri());
    let result = client.referral().get_referral_stats().await.unwrap();

    assert_eq!(result, json!({"earnings": 10}));
}