famiq 0.3.1

Experimental GUI library, powered by Bevy engine.
Documentation
#![cfg(test)]

use crate::FamiqPlugin;
use crate::widgets::color::PRIMARY_COLOR;
use crate::widgets::WidgetClasses;
use crate::utils;
use crate::text_input;
use bevy::input::InputPlugin;
use super::*;

fn setup_test_default_input(
    mut famiq_res: ResMut<FamiqResource>,
    mut fa_query: FaQuery
) {
    FamiqBuilder::new(&mut fa_query, &mut famiq_res).inject();
    text_input!(placeholder: "First name", id: "#test-input");
}

fn setup_test_input_with_built_in_class(
    mut famiq_res: ResMut<FamiqResource>,
    mut fa_query: FaQuery
) {
    FamiqBuilder::new(&mut fa_query, &mut famiq_res).inject();
    text_input!(placeholder: "First name", class: "primary");
}

#[test]
fn test_create_default_input() {
    let mut app = utils::create_test_app();
    app.add_plugins(FamiqPlugin::new());
    app.add_plugins(InputPlugin::default());
    app.add_systems(Startup, setup_test_default_input);
    app.update();

    let input_q = app.world_mut()
        .query::<(&WidgetId, &IsFamiqTextInput)>()
        .single(app.world());

    let input_id = input_q.unwrap().0;
    assert_eq!("#test-input".to_string(), input_id.0);
}

#[test]
fn test_create_input_with_built_in_class() {
    let mut app = utils::create_test_app();
    app.add_plugins(FamiqPlugin::new());
    app.add_plugins(InputPlugin::default());
    app.add_systems(Startup, setup_test_input_with_built_in_class);
    app.update();

    let input_q = app.world_mut()
        .query::<(&WidgetClasses, &BackgroundColor, &IsFamiqTextInput)>()
        .single(app.world());

    let input_class = input_q.as_ref().unwrap().0;
    assert_eq!("primary".to_string(), input_class.0);

    let input_bg = input_q.as_ref().unwrap().1;
    assert_eq!(BackgroundColor(PRIMARY_COLOR), *input_bg);
}