fix(tests): add some derive to pass test

Added PartialEq, Eq, PartialOrd and Ord derive to pass test broken in 4a9f8ec2e8 commit.
This commit is contained in:
MedzikUser 2022-09-18 15:25:42 +02:00
parent 4a9f8ec2e8
commit f440f30ea8
No known key found for this signature in database
GPG Key ID: A5FAC1E185C112DB
3 changed files with 31 additions and 18 deletions

View File

@ -11,5 +11,5 @@
   
<a href="https://homedisk-doc.vercel.app"><img src="https://img.shields.io/badge/docs.rs-66c2a5?style=flat-square&labelColor=555555&logo=docs.rs"></a> <a href="https://homedisk-doc.vercel.app"><img src="https://img.shields.io/badge/docs.rs-66c2a5?style=flat-square&labelColor=555555&logo=docs.rs"></a>
&nbsp; &nbsp;
<a href="https://documenter.getpostman.com/view/23280189/VVk9dwRk"><img src="https://img.shields.io/badge/API_Docs-66c2a5?style=flat-square&labelColor=555555&logo=postman"></a> <a href="https://documenter.getpostman.com/view/23280189/VVk9dwRk"><img src="https://img.shields.io/badge/API_Docs-887BB0?style=flat-square&labelColor=555555&logo=postman"></a>
</p> </p>

View File

@ -1,19 +1,19 @@
use thiserror::Error; use thiserror::Error;
#[derive(Debug, Error)] #[derive(Debug, Error, PartialEq, Eq, PartialOrd, Ord)]
pub enum Error { pub enum Error {
#[error("User not found")] #[error("User not found")]
UserNotFound, UserNotFound,
#[error("Failed to open database: {0}")] #[error("Failed to open database: {0}")]
OpenDatabase(sqlx::Error), OpenDatabase(String),
#[error("Failed to open connection with database: {0}")] #[error("Failed to open connection with database: {0}")]
ConnectDatabase(sqlx::Error), ConnectDatabase(String),
#[error("Failed to get row: {0}")] #[error("Failed to get row: {0}")]
GetRow(sqlx::Error), GetRow(String),
#[error("Failed to create all required tables: {0}")] #[error("Failed to create all required tables: {0}")]
CreateTables(sqlx::Error), CreateTables(String),
#[error("Failed to execute the query: {0}")] #[error("Failed to execute the query: {0}")]
Execute(sqlx::Error), Execute(String),
} }
pub type Result<T> = std::result::Result<T, Error>; pub type Result<T> = std::result::Result<T, Error>;

View File

@ -25,7 +25,8 @@ impl Database {
debug!("Opening SQLite database: {}", path); debug!("Opening SQLite database: {}", path);
// sqlite connection options // sqlite connection options
let mut options = SqliteConnectOptions::from_str(path).map_err(Error::OpenDatabase)?; let mut options =
SqliteConnectOptions::from_str(path).map_err(|e| Error::OpenDatabase(e.to_string()))?;
// set log level to Debug // set log level to Debug
options.log_statements(LevelFilter::Debug); options.log_statements(LevelFilter::Debug);
@ -33,7 +34,7 @@ impl Database {
// create a database pool // create a database pool
let pool = SqlitePool::connect_with(options) let pool = SqlitePool::connect_with(options)
.await .await
.map_err(Error::ConnectDatabase)?; .map_err(|e| Error::ConnectDatabase(e.to_string()))?;
info!("Connected to database!"); info!("Connected to database!");
@ -45,7 +46,7 @@ impl Database {
self.pool self.pool
.execute(include_str!("../../tables.sql")) .execute(include_str!("../../tables.sql"))
.await .await
.map_err(Error::CreateTables) .map_err(|e| Error::CreateTables(e.to_string()))
} }
/// Create new user in the database. /// Create new user in the database.
@ -58,7 +59,10 @@ impl Database {
.bind(&user.username) .bind(&user.username)
.bind(&user.password); .bind(&user.password);
self.pool.execute(query).await.map_err(Error::Execute) self.pool
.execute(query)
.await
.map_err(|e| Error::Execute(e.to_string()))
} }
/// Search for a user. /// Search for a user.
@ -77,7 +81,7 @@ impl Database {
let row = stream let row = stream
.try_next() .try_next()
.await .await
.map_err(Error::Execute)? .map_err(|e| Error::Execute(e.to_string()))?
.ok_or(Error::UserNotFound)?; .ok_or(Error::UserNotFound)?;
Self::find(row) Self::find(row)
@ -97,7 +101,7 @@ impl Database {
let row = stream let row = stream
.try_next() .try_next()
.await .await
.map_err(Error::Execute)? .map_err(|e| Error::Execute(e.to_string()))?
.ok_or(Error::UserNotFound)?; .ok_or(Error::UserNotFound)?;
Self::find(row) Self::find(row)
@ -105,11 +109,17 @@ impl Database {
fn find(row: SqliteRow) -> Result<User> { fn find(row: SqliteRow) -> Result<User> {
// get `id` row // get `id` row
let id = row.try_get("id").map_err(Error::GetRow)?; let id = row
.try_get("id")
.map_err(|e| Error::GetRow(e.to_string()))?;
// get `username` row // get `username` row
let username = row.try_get("username").map_err(Error::GetRow)?; let username = row
.try_get("username")
.map_err(|e| Error::GetRow(e.to_string()))?;
// get `password` row // get `password` row
let password = row.try_get("password").map_err(Error::GetRow)?; let password = row
.try_get("password")
.map_err(|e| Error::GetRow(e.to_string()))?;
Ok(User { Ok(User {
id, id,
@ -154,7 +164,10 @@ mod tests {
async fn test_find_user() { async fn test_find_user() {
let db = new_user().await; let db = new_user().await;
let user = db.find_user(&User::new(USERNAME, PASSWORD, false)).await.unwrap(); let user = db
.find_user(&User::new(USERNAME, PASSWORD, false))
.await
.unwrap();
assert_eq!(user.username, USERNAME) assert_eq!(user.username, USERNAME)
} }
@ -168,6 +181,6 @@ mod tests {
.await .await
.unwrap_err(); .unwrap_err();
assert_eq!(err.to_string(), "user not found") assert_eq!(err, Error::UserNotFound)
} }
} }