Skip to content

Commit fef2acc

Browse files
authored
Implement unit tests for server functionality
Added unit tests for server initialization and listener binding.
1 parent b99f095 commit fef2acc

File tree

1 file changed

+55
-0
lines changed

1 file changed

+55
-0
lines changed

src/main.rs

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)