Skip to content

Commit 7b63a0c

Browse files
committed
Fix events list default closed filter
1 parent 9b18b5f commit 7b63a0c

1 file changed

Lines changed: 53 additions & 12 deletions

File tree

src/commands/events.rs

Lines changed: 53 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -73,18 +73,8 @@ pub async fn execute(client: &gamma::Client, args: EventsArgs, output: OutputFor
7373
ascending,
7474
tag,
7575
} => {
76-
let resolved_closed = closed.or_else(|| active.map(|a| !a));
77-
78-
let request = EventsRequest::builder()
79-
.limit(limit)
80-
.maybe_closed(resolved_closed)
81-
.maybe_offset(offset)
82-
.ascending(ascending)
83-
.maybe_tag_slug(tag)
84-
// EventsRequest::order is Vec<String>; into_iter on Option yields 0 or 1 items.
85-
.order(order.into_iter().collect())
86-
.build();
87-
76+
let request =
77+
build_events_list_request(active, closed, limit, offset, order, ascending, tag);
8878
let events = client.events(&request).await?;
8979
print_events(&events, &output)?;
9080
}
@@ -112,3 +102,54 @@ pub async fn execute(client: &gamma::Client, args: EventsArgs, output: OutputFor
112102

113103
Ok(())
114104
}
105+
106+
fn build_events_list_request(
107+
active: Option<bool>,
108+
closed: Option<bool>,
109+
limit: i32,
110+
offset: Option<i32>,
111+
order: Option<String>,
112+
ascending: bool,
113+
tag: Option<String>,
114+
) -> EventsRequest {
115+
let resolved_closed = Some(closed.unwrap_or_else(|| active.map(|a| !a).unwrap_or(false)));
116+
117+
EventsRequest::builder()
118+
.limit(limit)
119+
.maybe_closed(resolved_closed)
120+
.maybe_offset(offset)
121+
.ascending(ascending)
122+
.maybe_tag_slug(tag)
123+
// EventsRequest::order is Vec<String>; into_iter on Option yields 0 or 1 items.
124+
.order(order.into_iter().collect())
125+
.build()
126+
}
127+
128+
#[cfg(test)]
129+
mod tests {
130+
use super::*;
131+
132+
#[test]
133+
fn events_list_resolves_closed_filter() {
134+
assert_eq!(
135+
build_events_list_request(None, None, 25, None, None, false, None).closed,
136+
Some(false)
137+
);
138+
assert_eq!(
139+
build_events_list_request(None, Some(true), 25, None, None, false, None).closed,
140+
Some(true)
141+
);
142+
assert_eq!(
143+
build_events_list_request(Some(true), None, 25, None, None, false, None).closed,
144+
Some(false)
145+
);
146+
assert_eq!(
147+
build_events_list_request(Some(false), None, 25, None, None, false, None).closed,
148+
Some(true)
149+
);
150+
assert_eq!(
151+
build_events_list_request(Some(true), Some(true), 25, None, None, false, None).closed,
152+
Some(true)
153+
);
154+
}
155+
}

0 commit comments

Comments
 (0)