feat: add gacha credits

This commit is contained in:
Maulana Sodiqin
2025-05-22 00:31:36 +07:00
parent 465cbee2c3
commit 9878279660
31 changed files with 252 additions and 127 deletions
+10 -6
View File
@@ -2,13 +2,14 @@
mod auth_repository_test {
use crate::{
AuthOtpSchema, AuthRepository, ResourceEnum, UsersRepository, UsersSchema,
create_mock_app_state, get_iso_date, make_thing,
create_mock_app_state, generate_unique_email, get_iso_date, get_role_id,
make_thing,
};
use chrono::{Duration, Utc};
use imphnen_iam::{RolesDetailQueryDto, UsersDetailQueryDto};
use imphnen_iam::{AppState, RolesDetailQueryDto, UsersDetailQueryDto};
use surrealdb::Uuid;
fn create_mock_user(email: &str) -> UsersSchema {
async fn create_mock_user(state: &AppState, email: &str) -> UsersSchema {
UsersSchema {
id: make_thing("app_users", &Uuid::new_v4().to_string()),
email: email.to_string(),
@@ -20,7 +21,7 @@ mod auth_repository_test {
is_active: true,
gender: None,
birthdate: None,
role: make_thing("roles", "user"),
role: make_thing("app_roles", &get_role_id(state).await),
created_at: get_iso_date(),
updated_at: get_iso_date(),
}
@@ -30,10 +31,13 @@ mod auth_repository_test {
async fn test_store_and_get_user() {
let app_state = create_mock_app_state().await;
let repo = AuthRepository::new(&app_state);
let user = create_mock_user("forgot@example.com");
let email = generate_unique_email("forgot");
let user = create_mock_user(&app_state, &email).await;
let user_repo = UsersRepository::new(&app_state);
let create_user = user_repo.query_create_user(user.clone()).await;
assert!(create_user.is_ok());
let user_data = user_repo
.query_user_by_email("forgot@example.com".to_string())
.query_user_by_email(email.to_string())
.await
.unwrap();
let store = repo.query_store_user(user_data.clone()).await;
+2 -27
View File
@@ -1,30 +1,5 @@
use imphnen_iam::RolesRequestCreateDto;
use surrealdb::Uuid;
use crate::{MetaRequestDto, UsersRepository};
use crate::{RolesRepository, create_mock_app_state, create_test_user};
async fn get_role_id(state: &crate::AppState) -> String {
let repo = RolesRepository::new(state);
if let Ok(existing) = repo.query_role_by_name("User".into()).await {
return existing.id;
}
let _ = repo
.query_create_role(RolesRequestCreateDto {
name: "User".into(),
permissions: vec![],
})
.await;
repo
.query_role_by_name("User".into())
.await
.expect("Role not found after creation")
.id
}
fn generate_unique_email(prefix: &str) -> String {
format!("{}_{}@example.com", prefix, Uuid::new_v4())
}
use crate::{MetaRequestDto, UsersRepository, generate_unique_email, get_role_id};
use crate::{create_mock_app_state, create_test_user};
#[tokio::test]
async fn test_create_and_get_user() {