use tauri::test::{mock_builder, mock_context, noop_assets};
use tauri::WebviewWindowBuilder;
fn build_app() -> tauri::App<tauri::test::MockRuntime> {
let config = tauri_plugin_syncular::SyncularConfig {
auto_sync: false,
..Default::default()
};
mock_builder()
.plugin(tauri_plugin_syncular::init(config))
.build(mock_context(noop_assets()))
.expect("failed to build mock app with the syncular plugin")
}
#[test]
fn plugin_registers_and_setup_runs() {
let app = build_app();
std::thread::sleep(std::time::Duration::from_millis(20));
drop(app);
}
#[test]
fn window_builds_against_the_plugin() {
let app = build_app();
match WebviewWindowBuilder::new(&app, "main", Default::default()).build() {
Ok(_window) => {}
Err(e) => eprintln!("skipping window build: no windowing backend ({e})"),
}
}
#[cfg(feature = "test-clock")]
#[test]
fn consumer_sets_the_client_clock_through_the_public_seam() {
let mut core =
tauri_plugin_syncular::core::SyncularCore::new(&serde_json::json!({})).expect("build core");
assert_eq!(
core.set_now_ms(1_000).unwrap_err(),
"client.not_created: create a client before setting the clock"
);
let created = core.command(&serde_json::json!({
"method": "create",
"params": {
"clientId": "consumer-clock",
"schema": { "version": 1, "tables": [] },
"nowMs": 1_000
}
}));
assert!(created.get("error").is_none(), "{created}");
core.set_now_ms(2_000).expect("set the clock");
}