Skip to content

Commit

Permalink
Merge pull request #6 from artemijan/fb-tests
Browse files Browse the repository at this point in the history
Fb tests
  • Loading branch information
artemijan authored Feb 21, 2025
2 parents c0946a9 + aff6cdd commit 6f1b752
Show file tree
Hide file tree
Showing 5 changed files with 72 additions and 1 deletion.
7 changes: 7 additions & 0 deletions entities/src/entities/character.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
//! `SeaORM` Entity, @generated by sea-orm-codegen 1.1.3
use sea_orm::entity::prelude::*;
use std::fmt::{Display, Formatter};

#[derive(Clone, Debug, PartialEq, Default, DeriveEntityModel)]
#[sea_orm(table_name = "character")]
Expand Down Expand Up @@ -71,6 +72,12 @@ pub struct Model {
pub pc_cafe_points: i32,
}

impl Display for Model {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
write!(f, "Char {} ( Level {})", self.name, self.level)
}
}

#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
pub enum Relation {
#[sea_orm(has_many = "super::item::Entity")]
Expand Down
10 changes: 10 additions & 0 deletions entities/src/entities/user.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
//! `SeaORM` Entity, @generated by sea-orm-codegen 1.1.3
use sea_orm::entity::prelude::*;
use std::fmt::{Display, Formatter};

#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq, Default)]
#[sea_orm(table_name = "user")]
Expand All @@ -13,6 +14,15 @@ pub struct Model {
pub password: String,
pub ban_duration: Option<i64>,
}
impl Display for Model {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
write!(
f,
"User {} (Access level {})",
self.username, self.access_level
)
}
}

#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
pub enum Relation {
Expand Down
11 changes: 11 additions & 0 deletions game/src/data/char_template.rs
Original file line number Diff line number Diff line change
Expand Up @@ -291,3 +291,14 @@ pub struct Point {
pub y: i32,
pub z: i32,
}
#[cfg(test)]
mod test {
use l2_core::config::traits::ConfigDirLoader;
use crate::data::char_template::ClassTemplates;

#[test]
fn test(){
let temps = ClassTemplates::load();
assert_eq!(9, temps.get_available_templates_for_registration().len());
}
}
1 change: 1 addition & 0 deletions game/src/packets/from_client/char_restore.rs
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ mod tests {
ch.set_account_chars(vec![]);
let res = pack.handle(&mut ch).await;
assert!(res.is_err());
client.shutdown().await.unwrap();
}
#[tokio::test]
#[timeout(3000)]
Expand Down
44 changes: 43 additions & 1 deletion game/src/packets/from_client/logout.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,50 @@ impl HandleablePacket for Logout {
async fn handle(&self, handler: &mut Self::HandlerType) -> anyhow::Result<()> {
//todo handle proper logout mechanism: olympiad,
// in battle state, on RB and so on, offline trade, etc...
info!("Player logged out: {:?}", handler.try_get_user()?);

// evaluate user before using macro
let user = handler.try_get_user()?;
// there is a bug when ? doesn't propagate error inside macro
info!("Player logged out: {user:}");
handler.get_shutdown_listener().notify_one();
Ok(())
}
}
#[cfg(test)]
mod tests {
use super::*;
use crate::controller::Controller;
use entities::test_factories::factories::user_factory;
use l2_core::config::gs::GSServer;
use l2_core::traits::handlers::PacketHandler;
use l2_core::traits::ServerConfig;
use std::net::Ipv4Addr;
use std::sync::Arc;
use test_utils::utils::get_test_db;
use tokio::io::{split, AsyncWriteExt};

#[tokio::test]
async fn test() {
let pool = get_test_db().await;
let packet = Logout {};
let (mut client, server) = tokio::io::duplex(1024);
let (r, w) = split(server);
let cfg = Arc::new(GSServer::from_string(include_str!(
"../../../../test_data/game.yaml"
)));
let controller = Arc::new(Controller::new(cfg));
controller.add_online_account(String::from("test"));
let user = user_factory(&pool, |mut u| {
u.username = String::from("test");
u
})
.await;
let mut ch = ClientHandler::new(r, w, Ipv4Addr::LOCALHOST, pool.clone(), controller);
let res = packet.handle(&mut ch).await;
assert!(res.is_err());
ch.set_user(user);
let res = packet.handle(&mut ch).await;
assert!(res.is_ok());
client.shutdown().await.unwrap();
}
}

0 comments on commit 6f1b752

Please sign in to comment.