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);
}