From 3b50928cb083b104043ac65433ed090c87731eb7 Mon Sep 17 00:00:00 2001 From: salmonik Date: Thu, 29 Oct 2026 17:02:49 +0100 Subject: v2.0.0: reset plays audit to a generic per-game schema --- tests/server_core.rs | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'tests') diff --git a/tests/server_core.rs b/tests/server_core.rs index 3f5dc9a..cab74a7 100644 --- a/tests/server_core.rs +++ b/tests/server_core.rs @@ -136,6 +136,33 @@ fn a_malicious_username_cannot_change_another_balance() { assert_eq!(core.play_count(evil), 1); } +#[test] +fn plays_record_the_game_type_and_game_specific_details() { + let (mut core, path) = setup("details", WIN3); + let mut state = ConnectionState::default(); + register(&mut core, &mut state, "alice"); + login(&mut core, &mut state, "alice"); + + let response = core.handle_message(&mut state, "PLAY_START slots 10"); + assert!(response.starts_with("GAME_RESULT"), "spin failed: {response}"); + + let conn = Connection::open(&path).unwrap(); + let (game_type, details): (String, String) = conn + .query_row( + "SELECT game_type, details FROM plays WHERE username = 'alice'", + [], + |row| Ok((row.get(0)?, row.get(1)?)), + ) + .unwrap(); + + assert_eq!(game_type, "slots"); + let details: serde_json::Value = serde_json::from_str(&details).unwrap(); + assert_eq!(details["reels"], "CCCCLLCLODGSDGS"); + assert_eq!(details["win_type"], "win"); + assert_eq!(details["win_lines"], "1"); + assert_eq!(details["win_cells"], "0,3,6"); +} + #[test] fn a_failed_audit_insert_rolls_back_the_balance_change() { let (mut core, path) = setup("rollback", LOSS); -- cgit v1.2.3