diff --git a/src/apps/v1/users/users_controller_test.rs b/src/apps/v1/users/users_controller_test.rs index 9380892..df9632b 100644 --- a/src/apps/v1/users/users_controller_test.rs +++ b/src/apps/v1/users/users_controller_test.rs @@ -46,41 +46,6 @@ async fn test_create_user_should_return_201() { assert_eq!(res.status_code(), StatusCode::CREATED); } -#[tokio::test] -async fn test_delete_user_should_return_200() { - let state = create_mock_app_state().await; - let role_repo = RolesRepository::new(&state); - let role = role_repo - .query_role_by_name(RolesEnum::Student.to_string()) - .await - .unwrap(); - let role_id = role.id; - let repo = UsersRepository::new(&state); - let app = axum::Router::new() - .nest("/v1/users", users_router()) - .layer(Extension(state.clone())); - let server = TestServer::new(app).unwrap(); - let payload = UsersCreateRequestDto { - fullname: "Create Data #1".into(), - email: "test@create.com".into(), - password: "Password1!".into(), - student_type: "general".into(), - role_id, - phone_number: "081234567890".into(), - is_active: true, - referral_code: None, - referred_by: None, - }; - let create_res = server.post("/v1/users/create").json(&payload).await; - assert_eq!(create_res.status_code(), StatusCode::CREATED); - let detail_res = repo.query_user_by_email(payload.email); - let user_id = detail_res.await.unwrap().id.id.to_raw(); - let delete_res = server - .delete(&format!("/v1/users/delete/{}", user_id)) - .await; - assert_eq!(delete_res.status_code(), StatusCode::OK); -} - #[tokio::test] async fn test_get_user_detail_should_return_200() { let state = create_mock_app_state().await; @@ -113,6 +78,42 @@ async fn test_get_user_detail_should_return_200() { assert_eq!(res.status_code(), StatusCode::OK); } +#[tokio::test] +async fn test_delete_user_should_return_200() { + let state = create_mock_app_state().await; + let role_repo = RolesRepository::new(&state); + let role = role_repo + .query_role_by_name(RolesEnum::Student.to_string()) + .await + .expect("Failed to get role"); + let repo = UsersRepository::new(&state); + let app = axum::Router::new() + .nest("/v1/users", users_router()) + .layer(Extension(state.clone())); + let server = TestServer::new(app).unwrap(); + let payload = UsersCreateRequestDto { + fullname: "Test Delete Me".into(), + email: "test@delete-me.com".into(), + password: "Password1!".into(), + student_type: "general".into(), + role_id: role.id.clone(), + phone_number: "081234567890".into(), + is_active: true, + referral_code: None, + referred_by: None, + }; + let create_res = server.post("/v1/users/create").json(&payload).await; + assert_eq!(create_res.status_code(), StatusCode::CREATED); + let detail_res = repo.query_user_by_email(payload.email.clone()).await; + assert!(detail_res.is_ok(), "User not found after creation"); + let user = detail_res.unwrap(); + let user_id_for_delete = user.id.id.to_raw(); + let delete_res = server + .delete(&format!("/v1/users/delete/{}", user_id_for_delete)) + .await; + assert_eq!(delete_res.status_code(), StatusCode::OK); +} + #[tokio::test] async fn test_activate_user_should_return_200() { let state = create_mock_app_state().await;