famiq 0.3.1

Experimental GUI library, powered by Bevy engine.
Documentation
#![cfg(test)]
use crate::FamiqPlugin;
use crate::button;
use crate::widgets::{WidgetId, WidgetClasses, FaQuery};
use super::*;

fn setup_test_default_button(
    mut famiq_res: ResMut<FamiqResource>,
    mut famiq_query: FaQuery
) {
    FamiqBuilder::new(&mut famiq_query, &mut famiq_res).inject();
    button!(text: "Press me", id: "#test-btn");
}

fn setup_test_button_with_built_in_class(
    mut famiq_res: ResMut<FamiqResource>,
    mut famiq_query: FaQuery
) {
    FamiqBuilder::new(&mut famiq_query, &mut famiq_res).inject();
    button!(
        text: "Press me",
        id: "#test-btn",
        class: "is-primary is-large is-round"
    );
}

#[test]
fn test_create_default_button() {
    let mut app = create_test_app();
    app.add_plugins(FamiqPlugin::new());
    app.add_systems(Startup, setup_test_default_button);
    app.update();

    let btn_q = app.world_mut().query::<(&WidgetId, &IsFamiqButton)>().single(app.world());
    assert!(btn_q.is_ok(), "There should be only 1 button");

    let btn_id = btn_q.unwrap().0;
    assert_eq!(
        "#test-btn".to_string(),
        btn_id.0
    );

    let btn_text_q = app.world_mut().query::<(&Text, &IsFamiqButtonText)>()
                    .single(app.world());

    assert_eq!(
        "Press me".to_string(),
        btn_text_q.unwrap().0.0
    );
}

#[test]
fn test_create_button_with_built_in_class() {
    let mut app = create_test_app();
    app.add_plugins(FamiqPlugin::new());
    app.add_systems(Startup, setup_test_button_with_built_in_class);
    app.update();

    let btn_q = app.world_mut().query::<(&WidgetClasses, &IsFamiqButton)>().single(app.world());
    assert_eq!(
        "is-primary is-large is-round".to_string(),
        btn_q.unwrap().0.0
    );
}