@@ -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