Compare commits

..

3 Commits

Author SHA1 Message Date
Akulij
f362ff1fda create db tests 2025-04-10 21:53:41 +09:00
Akulij
cc351a0a9b fix: use str instead of string in add_media method 2025-04-10 21:53:15 +09:00
Akulij
e46ba0dbbf fix: wrong fileid type
WAS: i64
SHOULD: String
2025-04-10 21:16:54 +09:00
2 changed files with 100 additions and 2 deletions

View File

@ -243,8 +243,8 @@ impl DB {
pub async fn add_media( pub async fn add_media(
&mut self, &mut self,
literal: &str, literal: &str,
mediatype: String, mediatype: &str,
fileid: i64, fileid: &str,
) -> Result<Media, Box<dyn std::error::Error>> { ) -> Result<Media, Box<dyn std::error::Error>> {
use self::schema::media::dsl::*; use self::schema::media::dsl::*;
let conn = &mut self.pool.get().await.unwrap(); let conn = &mut self.pool.get().await.unwrap();
@ -261,3 +261,6 @@ impl DB {
Ok(new_media) Ok(new_media)
} }
} }
#[cfg(test)]
mod tests;

95
src/db/tests.rs Normal file
View File

@ -0,0 +1,95 @@
use diesel::Connection;
use diesel_async::AsyncPgConnection;
use dotenvy;
use super::DB;
async fn setup_db() -> DB {
dotenvy::dotenv().unwrap();
let db_url = std::env::var("DATABASE_URL").unwrap();
let db = DB::new(db_url).await;
db
}
#[tokio::test]
async fn test_get_media() {
let mut db = setup_db().await;
let result = db.drop_media("test_get_media_literal").await;
assert!(result.is_ok());
let media_items = db.get_media("test_get_media_literal").await.unwrap();
assert_eq!(media_items.len(), 0);
let result = db
.add_media("test_get_media_literal", "photo", "file_id_1")
.await;
assert!(result.is_ok());
let media_items = db.get_media("test_get_media_literal").await.unwrap();
assert_eq!(media_items.len(), 1);
let result = db
.add_media("test_get_media_literal", "video", "file_id_2")
.await;
assert!(result.is_ok());
let media_items = db.get_media("test_get_media_literal").await.unwrap();
assert_eq!(media_items.len(), 2);
// Clean up after test
let result = db.drop_media("test_get_media_literal").await;
assert!(result.is_ok());
}
#[tokio::test]
async fn test_add_media() {
let mut db = setup_db().await;
let literal = "test_literal";
let media_type = "photo";
let file_id = "LjaldhAOh";
let result = db.drop_media(literal).await;
assert!(result.is_ok());
let result = db.add_media(literal, media_type, file_id).await;
assert!(result.is_ok());
// Verify that the media was added is correct
let media_items = db.get_media(literal).await.unwrap();
assert_eq!(media_items.len(), 1);
assert_eq!(media_items[0].token, literal);
assert_eq!(media_items[0].media_type, media_type);
assert_eq!(media_items[0].file_id, file_id);
// Clean up after test
let result = db.drop_media(literal).await;
assert!(result.is_ok());
}
#[tokio::test]
async fn test_drop_media() {
let mut db = setup_db().await;
let result = db
.add_media("test_drop_media_literal", "photo", "file_id_1")
.await;
assert!(result.is_ok());
// Verify that the media was added
let media_items = db.get_media("test_drop_media_literal").await.unwrap();
assert_eq!(media_items.len(), 1);
let result = db.drop_media("test_drop_media_literal").await;
assert!(result.is_ok());
// Verify that the media has been dropped
let media_items = db.get_media("test_drop_media_literal").await.unwrap();
assert_eq!(media_items.len(), 0);
// Clean up after test
let result = db.drop_media("test_drop_media_literal").await;
assert!(result.is_ok());
}