wp_query_rs 0.4.1

A rust implementation of the classic WP_Query utility to access WordPress posts outside of a WordPress environment.
Documentation
use std::time::{SystemTime, UNIX_EPOCH};
use wp_query_rs::{
    wp_post::{meta::WpMeta, WpMetaResults},
    *,
};

fn add_post() -> u64 {
    let mut post = WP_Post::new(1);
    let now = SystemTime::now()
        .duration_since(UNIX_EPOCH)
        .unwrap()
        .as_secs();
    let title = format!("My Test Meta Post {}", now);
    post.post_title = title.clone();

    post.insert().expect("InsertFailed");

    let q = ParamBuilder::new().s(&title);
    let query = WP_Query::new(q).unwrap();

    query.posts.first().unwrap().ID
}

#[test]
fn can_add_post_meta() {
    let post_id = add_post();

    add_post_meta(post_id, "my_custom_rs_meta", 42).expect("MetaInsertFailed");
}

#[test]
fn can_get_post_meta() {
    let post_id = add_post();

    add_post_meta(post_id, "my_custom_rs_meta", 42).expect("MetaInsertFailed");

    let meta = get_post_meta(post_id, "my_custom_rs_meta", true);

    match meta {
        WpMetaResults::Single(meta) => {
            assert_eq!(meta.meta_value, "42")
        }
        _ => panic!("MetaQueryFailed"),
    }
}

#[test]
fn can_bulk_insert_meta() {
    let post_id = add_post();

    WpMeta::add_post_meta_bulk(
        post_id,
        &[("my_custom_rs_bulk_meta", 1), ("my_custom_rs_bulk_meta", 2)],
    )
    .expect("insertError");

    let meta = get_post_meta(post_id, "my_custom_rs_bulk_meta", false);

    match meta {
        WpMetaResults::Array(meta) => {
            assert_eq!(meta.len(), 2)
        }
        _ => panic!("MetaQueryFailed"),
    }
}

#[test]
fn can_insert_post_meta() {
    let post_id = add_post();

    let pm = WpMeta::new(post_id, "my_inserted_meta", 42);
    pm.insert().expect("InsertFailed");

    let meta = get_post_meta(post_id, "my_inserted_meta", true);

    match meta {
        WpMetaResults::Single(meta) => {
            assert_eq!(meta.meta_value, "42")
        }
        _ => panic!("MetaQueryFailed"),
    }
}