use tiny_counter::EventStore;
#[cfg(feature = "serde")]
#[test]
fn compact_updates_config_and_clears_memory() {
use tiny_counter::storage::MemoryStorage;
let mut store = EventStore::builder()
.track_days(7)
.with_storage(MemoryStorage::new())
.build()
.unwrap();
store.record_count("event1", 100);
store.record_count("event2", 50);
store.persist_all().unwrap();
let memory_before = store.memory_usage();
assert!(memory_before > 0);
store.compact().unwrap();
let memory_after = store.memory_usage();
assert_eq!(memory_after, 0);
assert_eq!(store.query("event1").last_days(7).sum(), Some(100));
assert_eq!(store.query("event2").last_days(7).sum(), Some(50));
assert!(store.memory_usage() > 0);
}
#[cfg(feature = "serde")]
#[test]
fn compact_persists_to_storage() {
use tiny_counter::storage::MemoryStorage;
let mut store = EventStore::builder()
.track_days(7)
.with_storage(MemoryStorage::new())
.build()
.unwrap();
store.record_count("event1", 100);
store.record_count("event2", 50);
store.compact().unwrap();
assert_eq!(store.memory_usage(), 0);
assert_eq!(store.query("event1").last_days(7).sum(), Some(100));
assert_eq!(store.query("event2").last_days(7).sum(), Some(50));
}
#[cfg(feature = "serde")]
#[test]
fn scenario_config_migration() {
use tiny_counter::storage::MemoryStorage;
let mut store = EventStore::builder()
.track_days(7)
.with_storage(MemoryStorage::new())
.build()
.unwrap();
store.record_count("user_signups", 100);
store.persist_all().unwrap();
store.compact().unwrap();
assert_eq!(store.memory_usage(), 0);
assert_eq!(store.query("user_signups").last_days(7).sum(), Some(100));
}