From 7b63a0cdaa8c2f5aa2c50c9db9946aa325975805 Mon Sep 17 00:00:00 2001 From: LingX Date: Sat, 13 Jun 2026 16:26:24 -0400 Subject: [PATCH] Fix events list default closed filter --- src/commands/events.rs | 65 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 53 insertions(+), 12 deletions(-) diff --git a/src/commands/events.rs b/src/commands/events.rs index bd7f045..54e1828 100644 --- a/src/commands/events.rs +++ b/src/commands/events.rs @@ -73,18 +73,8 @@ pub async fn execute(client: &gamma::Client, args: EventsArgs, output: OutputFor ascending, tag, } => { - let resolved_closed = closed.or_else(|| active.map(|a| !a)); - - let request = EventsRequest::builder() - .limit(limit) - .maybe_closed(resolved_closed) - .maybe_offset(offset) - .ascending(ascending) - .maybe_tag_slug(tag) - // EventsRequest::order is Vec; into_iter on Option yields 0 or 1 items. - .order(order.into_iter().collect()) - .build(); - + let request = + build_events_list_request(active, closed, limit, offset, order, ascending, tag); let events = client.events(&request).await?; print_events(&events, &output)?; } @@ -112,3 +102,54 @@ pub async fn execute(client: &gamma::Client, args: EventsArgs, output: OutputFor Ok(()) } + +fn build_events_list_request( + active: Option, + closed: Option, + limit: i32, + offset: Option, + order: Option, + ascending: bool, + tag: Option, +) -> EventsRequest { + let resolved_closed = Some(closed.unwrap_or_else(|| active.map(|a| !a).unwrap_or(false))); + + EventsRequest::builder() + .limit(limit) + .maybe_closed(resolved_closed) + .maybe_offset(offset) + .ascending(ascending) + .maybe_tag_slug(tag) + // EventsRequest::order is Vec; into_iter on Option yields 0 or 1 items. + .order(order.into_iter().collect()) + .build() +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn events_list_resolves_closed_filter() { + assert_eq!( + build_events_list_request(None, None, 25, None, None, false, None).closed, + Some(false) + ); + assert_eq!( + build_events_list_request(None, Some(true), 25, None, None, false, None).closed, + Some(true) + ); + assert_eq!( + build_events_list_request(Some(true), None, 25, None, None, false, None).closed, + Some(false) + ); + assert_eq!( + build_events_list_request(Some(false), None, 25, None, None, false, None).closed, + Some(true) + ); + assert_eq!( + build_events_list_request(Some(true), Some(true), 25, None, None, false, None).closed, + Some(true) + ); + } +}