use wasm_bindgen_test::*; use chrono::{DateTime, Utc, TimeZone}; use crate::components::{MonthView, WeekView}; use crate::models::ical::VEvent; use yew::prelude::*; #[wasm_bindgen_test] fn month_view_renders_without_events() { let props = yew::props!( current_date: Utc.with_ymd_and_hms(2023, 12, 15, 0, 0, 0).unwrap(), events: vec![], on_event_click: Callback::noop(), on_date_click: Callback::noop(), on_event_drag: Callback::noop(), visible_calendar_paths: vec![], ); let _month_view = html! { }; // Test passes if no panic occurs during rendering } #[wasm_bindgen_test] fn week_view_renders_without_events() { let props = yew::props!( current_date: Utc.with_ymd_and_hms(2023, 12, 15, 0, 0, 0).unwrap(), events: vec![], on_event_click: Callback::noop(), on_event_drag: Callback::noop(), visible_calendar_paths: vec![], ); let _week_view = html! { }; // Test passes if no panic occurs during rendering } #[wasm_bindgen_test] fn month_view_handles_events() { // Create a test event let mut test_event = VEvent::new("test-event-123".to_string()); test_event.summary = Some("Test Event".to_string()); test_event.dtstart = Some(Utc.with_ymd_and_hms(2023, 12, 15, 14, 0, 0).unwrap()); test_event.dtend = Some(Utc.with_ymd_and_hms(2023, 12, 15, 15, 0, 0).unwrap()); let props = yew::props!( current_date: Utc.with_ymd_and_hms(2023, 12, 15, 0, 0, 0).unwrap(), events: vec![test_event], on_event_click: Callback::noop(), on_date_click: Callback::noop(), on_event_drag: Callback::noop(), visible_calendar_paths: vec!["test-calendar".to_string()], ); let _month_view = html! { }; // Test passes if no panic occurs during rendering with events } #[wasm_bindgen_test] fn week_view_handles_events() { // Create a test event let mut test_event = VEvent::new("test-event-456".to_string()); test_event.summary = Some("Weekly Test Event".to_string()); test_event.dtstart = Some(Utc.with_ymd_and_hms(2023, 12, 15, 10, 0, 0).unwrap()); test_event.dtend = Some(Utc.with_ymd_and_hms(2023, 12, 15, 11, 30, 0).unwrap()); let props = yew::props!( current_date: Utc.with_ymd_and_hms(2023, 12, 15, 0, 0, 0).unwrap(), events: vec![test_event], on_event_click: Callback::noop(), on_event_drag: Callback::noop(), visible_calendar_paths: vec!["test-calendar".to_string()], ); let _week_view = html! { }; // Test passes if no panic occurs during rendering with events } #[wasm_bindgen_test] fn event_time_calculations() { // Test event duration calculation let start_time = Utc.with_ymd_and_hms(2023, 12, 15, 10, 0, 0).unwrap(); let end_time = Utc.with_ymd_and_hms(2023, 12, 15, 11, 30, 0).unwrap(); let duration = end_time - start_time; assert_eq!(duration.num_minutes(), 90); // Test same-day event assert_eq!(start_time.date_naive(), end_time.date_naive()); // Test hour extraction assert_eq!(start_time.hour(), 10); assert_eq!(end_time.hour(), 11); }