@@ -32,3 +32,58 @@ fn main() {
3232 }
3333}
3434
35+ #[ cfg( test) ]
36+ mod tests {
37+ use super :: * ;
38+ use std:: net:: TcpListener ;
39+
40+ struct MockEnvVars {
41+ pub databse_url : String ,
42+ pub server_adress_and_port : String ,
43+ }
44+
45+ fn mock_get_environment_variables ( ) -> MockEnvVars {
46+ MockEnvVars {
47+ databse_url : "postgres://localhost/test" . to_string ( ) ,
48+ server_adress_and_port : "127.0.0.1:8080" . to_string ( ) ,
49+ }
50+ }
51+
52+ fn mock_create_database_client ( _url : String ) -> Result < ( ) , & ' static str > {
53+ Ok ( ( ) )
54+ }
55+
56+ fn mock_set_init_database_table ( _client : Result < ( ) , & ' static str > ) -> Result < ( ) , & ' static str > {
57+ Ok ( ( ) )
58+ }
59+
60+ #[ test]
61+ fn test_server_initialization_success ( ) {
62+ let env = mock_get_environment_variables ( ) ;
63+ let client = mock_create_database_client ( env. databse_url . clone ( ) ) ;
64+ let db_init_result = mock_set_init_database_table ( client) ;
65+
66+ assert ! ( db_init_result. is_ok( ) ) ;
67+ }
68+
69+ #[ test]
70+ fn test_server_initialization_failure ( ) {
71+
72+ fn failing_create_database_client ( _url : String ) -> Result < ( ) , & ' static str > {
73+ Err ( "connection failed" )
74+ }
75+
76+ let env = mock_get_environment_variables ( ) ;
77+ let client = failing_create_database_client ( env. databse_url . clone ( ) ) ;
78+
79+ let db_init_result = mock_set_init_database_table ( client) ;
80+ assert ! ( db_init_result. is_err( ) ) ;
81+ }
82+
83+ #[ test]
84+ fn test_listener_binding ( ) {
85+ let env = mock_get_environment_variables ( ) ;
86+ let listener = TcpListener :: bind ( env. server_adress_and_port . clone ( ) ) ;
87+ assert ! ( listener. is_ok( ) , "Listener should bind to address" ) ;
88+ }
89+ }
0 commit comments