bevy_persistence_database 0.2.3

A persistence and database integration solution for the Bevy game engine
Documentation
use crate::common::*;
use bevy::prelude::App;
use bevy_persistence_database::{
    Guid, PersistentQuery, commit_sync, persistence_plugin::PersistencePlugins,
};
use bevy_persistence_database_derive::db_matrix_test;

#[db_matrix_test]
fn test_load_resources_alongside_entities() {
    let (db, _container) = setup();
    let mut app1 = App::new();
    app1.add_plugins(PersistencePlugins::new(db.clone()));

    // GIVEN a committed GameSettings resource
    let settings = GameSettings {
        difficulty: 0.42,
        map_name: "mystic".into(),
    };
    app1.insert_resource(settings.clone());
    app1.update();
    commit_sync(&mut app1, db.clone(), TEST_STORE).expect("Initial commit failed");

    // WHEN any query is fetched into a new app
    let mut app2 = App::new();
    app2.add_plugins(PersistencePlugins::new(db.clone()));
    fn sys(mut pq: PersistentQuery<&Guid>) {
        let _ = pq.ensure_loaded();
    }
    app2.add_systems(bevy::prelude::Update, sys);
    app2.update();

    // THEN the GameSettings resource is loaded
    let loaded: &GameSettings = app2.world().resource();
    assert_eq!(loaded.difficulty, 0.42);
    assert_eq!(loaded.map_name, "mystic");
}