StratoSDK is a framework with a declarative approach similar to Flutter/React, written and designed entirely for Rust.
| 1 | use crate::app_focus_telemetry::AppFocusInfo; |
| 2 | use crate::time::test_offset_time; |
| 3 | use chrono::Duration; |
| 4 | |
| 5 | #[test] |
| 6 | fn test_daily_app_focus_duration_increase() { |
| 7 | let mut app_focus_info = AppFocusInfo::new(); |
| 8 | let user_id = Some("user123".to_string()); |
| 9 | let anonymous_id = "anon-user-xyz".to_string(); |
| 10 | |
| 11 | // When app blurs, the daily focus duration increases if date is the same |
| 12 | let focus_duration_0 = app_focus_info.daily_app_focus_duration.duration; |
| 13 | let last_synced_date_0 = app_focus_info |
| 14 | .daily_app_focus_duration |
| 15 | .last_synced_time |
| 16 | .date_naive(); |
| 17 | app_focus_info.record_app_focus(user_id.clone(), anonymous_id.clone()); |
| 18 | test_offset_time(10); |
| 19 | app_focus_info.record_app_blur(user_id.clone(), anonymous_id.clone()); |
| 20 | let focus_duration_1 = app_focus_info.daily_app_focus_duration.duration; |
| 21 | let last_synced_date_1 = app_focus_info |
| 22 | .daily_app_focus_duration |
| 23 | .last_synced_time |
| 24 | .date_naive(); |
| 25 | assert_eq!(focus_duration_1 - focus_duration_0, Duration::seconds(10)); |
| 26 | assert_eq!(last_synced_date_1, last_synced_date_0); |
| 27 | |
| 28 | // If date is the next day, the running total would be counted for the new day |
| 29 | app_focus_info.record_app_focus(user_id.clone(), anonymous_id.clone()); |
| 30 | let one_day_seconds = 24 * 60 * 60; |
| 31 | test_offset_time(one_day_seconds); |
| 32 | app_focus_info.record_app_blur(user_id, anonymous_id); |
| 33 | let focus_duration_2 = app_focus_info.daily_app_focus_duration.duration; |
| 34 | let last_synced_date_2 = app_focus_info |
| 35 | .daily_app_focus_duration |
| 36 | .last_synced_time |
| 37 | .date_naive(); |
| 38 | assert_eq!(focus_duration_2, Duration::seconds(one_day_seconds)); |
| 39 | assert_eq!(last_synced_date_2 - last_synced_date_1, Duration::days(1)); |
| 40 | } |
| 41 |