@@ -5,25 +5,26 @@ use crate::helpers::{
55 mock_set_hours, mock_tasks_search,
66 } ,
77} ;
8- use assert_cmd:: { assert :: OutputAssertExt , Command } ;
8+ use assert_cmd:: Command ;
99use std:: { env, ffi} ;
1010use wiremock:: MockServer ;
1111
1212fn run_json (
1313 args : impl IntoIterator < Item = impl AsRef < ffi:: OsStr > > ,
1414 server_url : & str ,
1515) -> serde_json:: Value {
16- let output = run ( args, server_url) ;
16+ let output = run ( args, server_url) . unwrap ( ) ;
1717 serde_json:: from_slice ( & output. stdout ) . unwrap ( )
1818}
1919
2020fn run (
2121 args : impl IntoIterator < Item = impl AsRef < ffi:: OsStr > > ,
2222 server_url : & str ,
23- ) -> std :: process :: Output {
23+ ) -> assert_cmd :: Command {
2424 env:: set_var ( "MACONOMY__MACONOMY_URL" , server_url) ;
25- Command :: cargo_bin ( "maconomy" ) . unwrap ( ) . args ( args) . unwrap ( )
26- // output.stdout.into_output().to_string()
25+ let mut cmd = Command :: cargo_bin ( "maconomy" ) . unwrap ( ) ;
26+ cmd. args ( args) ;
27+ cmd
2728}
2829
2930#[ tokio:: main]
@@ -91,47 +92,48 @@ async fn test_set_hours() {
9192 create_test_config ( ) ;
9293
9394 // When
94- let output = run (
95- [
96- "set" ,
97- "8" ,
98- "--job" ,
99- "job one" ,
100- "--task" ,
101- "some task one" ,
102- "--day" ,
103- "monday" ,
104- ] ,
105- & mock_server. uri ( ) ,
106- ) ;
95+ let cmd = [
96+ "set" ,
97+ "8" ,
98+ "--job" ,
99+ "job one" ,
100+ "--task" ,
101+ "some task one" ,
102+ "--day" ,
103+ "monday" ,
104+ ] ;
105+ let mut output = run ( cmd, & mock_server. uri ( ) ) ;
107106
108107 // Then
109- assert ! ( output . status . success( ) ) ;
108+ output . assert ( ) . success ( ) ;
110109}
111110
112111#[ tokio:: main]
113112#[ test]
114- #[ ignore]
115113async fn test_set_hours_err ( ) {
116114 // Given
117-
118115 let mock_server = MockServer :: start ( ) . await ;
119116 mock_get_instance ( None ) . mount ( & mock_server) . await ;
120117 mock_get_table_rows ( None ) . mount ( & mock_server) . await ;
121118 mock_job_number_search ( None ) . mount ( & mock_server) . await ;
122- mock_set_hours ( None ) . mount ( & mock_server) . await ;
123119 mock_tasks_search ( None ) . mount ( & mock_server) . await ;
124120 mock_add_row ( None ) . mount ( & mock_server) . await ;
125121 create_test_config ( ) ;
126122
127123 // When
128- let output = run (
129- [ "set" , "--job" , "doesn't exist" , "--task" , "some task" , "8" ] ,
130- & mock_server. uri ( ) ,
131- ) ;
124+ let cmd = [
125+ "set" ,
126+ "--job" ,
127+ "doesn't exist" ,
128+ "--task" ,
129+ "some task one" ,
130+ "8" ,
131+ ] ;
132+ let mut output = run ( cmd, & mock_server. uri ( ) ) ;
132133
133- // Then
134- // TODO: `output.assert().failure()` doesn't seem to work. Is it because my program panics?
135- // dbg!(&output.stdout.into_output().to_string());
136- output. assert ( ) . failure ( ) ;
134+ let expected_stdoud_prefix = "Something went wrong when adding a new line to the time sheet: did not find job 'doesn't exist' and task 'some task one', even after creating a new line for it" ;
135+ output
136+ . assert ( )
137+ . stderr ( predicates:: str:: starts_with ( expected_stdoud_prefix) )
138+ . failure ( ) ;
137139}
0 commit comments