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::collections::HashMap;

use wp_query_rs::*;

pub fn ensure_no_duplicate(posts: &[WP_Post]) {
    let all_counts_less_than_one = posts
        .iter()
        .fold(HashMap::new(), |mut acc, post| {
            let c = acc.entry(post.ID).or_insert(0);
            *c += 1;

            acc
        })
        .values()
        .all(|c| *c == 1);
    assert!(all_counts_less_than_one, "Duplicates found!")
}

#[test]
fn default_selects_posts() {
    let params = ParamBuilder::new();

    let posts = WP_Query::new(params).expect("SqlFailed");
    assert_eq!(posts.post_count(), 10);
}

#[test]
fn no_duplicate_ids() {
    let params = ParamBuilder::new();
    let posts = WP_Query::new(params).expect("SqlFailed");
    ensure_no_duplicate(&posts.posts);
}

#[test]
fn no_dups_on_term_join() {
    let params = ParamBuilder::new().tag_id(1);

    let posts = WP_Query::new(params).expect("SqlFailed");
    ensure_no_duplicate(&posts.posts);
}

#[test]
fn meta_data() {
    let params = ParamBuilder::new().meta_value("1");

    let posts = WP_Query::new(params).expect("SqlFailed");
    assert!(posts.post_count() > 0);
}

#[test]
fn meta_join_no_dups() {
    let params = ParamBuilder::new().meta_value("1");

    let posts = WP_Query::new(params).expect("SqlFailed");
    ensure_no_duplicate(&posts.posts);
}

#[test]
fn paginate() {
    let params = ParamBuilder::new().page(1);

    let posts = WP_Query::new(params).expect("SqlFailed");
    assert!(posts.post_count() > 0);

    let params = ParamBuilder::new().posts_per_page(2);

    let posts = WP_Query::new(params).expect("SqlFailed");
    assert!(posts.post_count() == 2);
}