mod int_test { use native_utils::{database, model, util}; use model::{ entity::{antenna, antenna_note, note, user}, repository::Repository, schema, }; use pretty_assertions::assert_eq; use sea_orm::{ActiveModelTrait, ColumnTrait, EntityTrait, IntoActiveModel, QueryFilter}; use crate::{cleanup, prepare}; #[tokio::test] async fn can_pack() { prepare().await; let db = database::get_database().unwrap(); let alice_antenna = user::Entity::find() .filter(user::Column::Username.eq("alice")) .find_also_related(antenna::Entity) .one(db) .await .unwrap() .expect("alice not found") .1 .expect("alice's antenna not found"); let packed = alice_antenna .to_owned() .pack() .await .expect("Unable to pack"); let packed_by_id = antenna::Model::pack_by_id(alice_antenna.id.to_owned()) .await .expect("Unable to pack"); let result = schema::Antenna { id: alice_antenna.id, created_at: alice_antenna.created_at.into(), name: "Alice Antenna".to_string(), keywords: vec![ vec!["foo".to_string(), "bar".to_string()], vec!["foobar".to_string()], ] .into(), exclude_keywords: vec![ vec!["abc".to_string()], vec!["def".to_string(), "ghi".to_string()], ] .into(), src: schema::AntennaSrc::All, user_list_id: None, user_group_id: None, users: vec![].into(), instances: vec![].into(), case_sensitive: true, notify: true, with_replies: false, with_file: false, has_unread_note: false, }; assert_eq!(packed, result); assert_eq!(packed_by_id, result); cleanup().await; } #[tokio::test] async fn unread_note() { prepare().await; let db = database::get_database().unwrap(); let (alice, alice_antenna) = user::Entity::find() .filter(user::Column::Username.eq("alice")) .find_also_related(antenna::Entity) .one(db) .await .unwrap() .expect("alice not found"); let alice_antenna = alice_antenna.expect("alice's antenna not found"); let packed = alice_antenna .to_owned() .pack() .await .expect("Unable to pack"); assert_eq!(packed.has_unread_note, false); let note_model = note::Entity::find() .filter(note::Column::UserId.eq(alice.id)) .one(db) .await .unwrap() .expect("note not found"); let antenna_note = antenna_note::Model { id: util::id::create_id().unwrap(), antenna_id: alice_antenna.id.to_owned(), note_id: note_model.id.to_owned(), read: false, }; antenna_note .into_active_model() .reset_all() .insert(db) .await .unwrap(); let packed = alice_antenna .to_owned() .pack() .await .expect("Unable to pack"); assert_eq!(packed.has_unread_note, true); cleanup().await; } }