fix: Update string formatting in hackathon service and repository tests for consistency
This commit is contained in:
@@ -200,7 +200,7 @@ impl Default for HackathonParticipantSchema {
|
||||
fn default() -> Self {
|
||||
HackathonParticipantSchema {
|
||||
id: make_thing(
|
||||
&"app_hackathon_participants".to_string(),
|
||||
"app_hackathon_participants",
|
||||
&surrealdb::Uuid::new_v4().to_string(),
|
||||
),
|
||||
hackathon_id: Thing::from(("app_hackathons".to_string(), surrealdb::sql::Id::rand())),
|
||||
|
||||
@@ -101,7 +101,7 @@ mod tests {
|
||||
let hackathon_id = created.id.id.to_raw();
|
||||
|
||||
// Send get request
|
||||
let response = app.service.get(&format!("/api/v1/hackathons/{}", hackathon_id))
|
||||
let response = app.service.get(format!("/api/v1/hackathons/{}", hackathon_id))
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
@@ -163,7 +163,7 @@ mod tests {
|
||||
};
|
||||
|
||||
// Send update request
|
||||
let response = app.service.put(&format!("/api/v1/hackathons/{}", hackathon_id))
|
||||
let response = app.service.put(format!("/api/v1/hackathons/{}", hackathon_id))
|
||||
.header("Authorization", format!("Bearer {}", crate::get_test_token(&user.id.id.to_raw()).await))
|
||||
.json(&update_payload)
|
||||
.await
|
||||
@@ -212,7 +212,7 @@ mod tests {
|
||||
let hackathon_id = create_result.id.id.to_raw();
|
||||
|
||||
// Send delete request
|
||||
let response = app.service.delete(&format!("/api/v1/hackathons/{}", hackathon_id))
|
||||
let response = app.service.delete(format!("/api/v1/hackathons/{}", hackathon_id))
|
||||
.header("Authorization", format!("Bearer {}", crate::get_test_token(&user.id.id.to_raw()).await))
|
||||
.await
|
||||
.unwrap();
|
||||
@@ -223,7 +223,7 @@ mod tests {
|
||||
assert_eq!(body["message"], "Success delete hackathon");
|
||||
|
||||
// Verify hackathon is deleted
|
||||
let get_response = app.service.get(&format!("/api/v1/hackathons/{}", hackathon_id))
|
||||
let get_response = app.service.get(format!("/api/v1/hackathons/{}", hackathon_id))
|
||||
.await
|
||||
.unwrap();
|
||||
assert_eq!(get_response.status(), StatusCode::NOT_FOUND);
|
||||
@@ -283,7 +283,7 @@ mod tests {
|
||||
};
|
||||
|
||||
// Send submission request (use team path; for single-user tests we pass participant id as team_id)
|
||||
let response = app.service.post(&format!("/api/v1/hackathons/{}/teams/{}/submissions", hackathon_id, participant.id.id.to_raw()))
|
||||
let response = app.service.post(format!("/api/v1/hackathons/{}/teams/{}/submissions", hackathon_id, participant.id.id.to_raw()))
|
||||
.header("Authorization", format!("Bearer {}", crate::get_test_token(&participant.id.id.to_raw()).await))
|
||||
.json(&submission_dto)
|
||||
.await
|
||||
@@ -387,7 +387,7 @@ mod tests {
|
||||
};
|
||||
|
||||
// Send team submission request (use teams path)
|
||||
let response = app.service.post(&format!("/api/v1/hackathons/{}/teams/{}/submissions", hackathon_id, team_id))
|
||||
let response = app.service.post(format!("/api/v1/hackathons/{}/teams/{}/submissions", hackathon_id, team_id))
|
||||
.header("Authorization", format!("Bearer {}", crate::get_test_token(&member1.id.id.to_raw()).await))
|
||||
.json(&team_submission_dto)
|
||||
.await
|
||||
@@ -471,7 +471,7 @@ mod tests {
|
||||
];
|
||||
|
||||
for submission_dto in submission_dtos.iter() {
|
||||
let response = app.service.post(&format!("/api/v1/hackathons/{}/teams/{}/submissions", hackathon_id, participant.id.id.to_raw()))
|
||||
let response = app.service.post(format!("/api/v1/hackathons/{}/teams/{}/submissions", hackathon_id, participant.id.id.to_raw()))
|
||||
.header("Authorization", format!("Bearer {}", crate::get_test_token(&participant.id.id.to_raw()).await))
|
||||
.json(submission_dto)
|
||||
.await
|
||||
@@ -480,7 +480,7 @@ mod tests {
|
||||
}
|
||||
|
||||
// Get hackathon submissions
|
||||
let response = app.service.get(&format!("/api/v1/hackathons/{}/submissions", hackathon_id))
|
||||
let response = app.service.get(format!("/api/v1/hackathons/{}/submissions", hackathon_id))
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
@@ -581,7 +581,7 @@ mod tests {
|
||||
];
|
||||
|
||||
for (i, create_req) in submission_requests.iter().enumerate() {
|
||||
let response = app.service.post(&format!("/api/v1/hackathons/{}/teams/{}/submissions", hackathon_ids[i], participant.id.id.to_raw()))
|
||||
let response = app.service.post(format!("/api/v1/hackathons/{}/teams/{}/submissions", hackathon_ids[i], participant.id.id.to_raw()))
|
||||
.header("Authorization", format!("Bearer {}", crate::get_test_token(&participant.id.id.to_raw()).await))
|
||||
.json(create_req)
|
||||
.await
|
||||
@@ -590,7 +590,7 @@ mod tests {
|
||||
}
|
||||
|
||||
// Get user's hackathon submissions
|
||||
let response = app.service.get(&format!("/api/v1/users/{}/hackathon-submissions", participant.id.id.to_raw()))
|
||||
let response = app.service.get(format!("/api/v1/users/{}/hackathon-submissions", participant.id.id.to_raw()))
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
@@ -694,8 +694,7 @@ mod tests {
|
||||
let body = crate::get_response_body(response).await;
|
||||
assert_eq!(body["data"].as_array().unwrap().len(), 1);
|
||||
assert_eq!(body["data"][0]["name"], "Rust Backend Hackathon Controller");
|
||||
assert_eq!(body["data"][0]["description"].as_str().unwrap().contains("Rust"), true);
|
||||
assert!(body["data"][0]["description"].as_str().unwrap().contains("Rust"));
|
||||
assert!(body["data"][0]["description"].as_str().unwrap().contains("Rust"));
|
||||
|
||||
// Clean up - in a real test you would store and delete all created hackathons
|
||||
let _ = users_repo.query_delete_user(user.id.id.to_raw()).await;
|
||||
@@ -751,7 +750,7 @@ mod tests {
|
||||
technologies: vec![],
|
||||
};
|
||||
|
||||
let submit_response = app.service.post(&format!("/api/v1/hackathons/{}/teams/{}/submissions", hackathon_id, participant.id.id.to_raw()))
|
||||
let submit_response = app.service.post(format!("/api/v1/hackathons/{}/teams/{}/submissions", hackathon_id, participant.id.id.to_raw()))
|
||||
.header("Authorization", format!("Bearer {}", crate::get_test_token(&participant.id.id.to_raw()).await))
|
||||
.json(&submission_dto)
|
||||
.await
|
||||
@@ -769,7 +768,7 @@ mod tests {
|
||||
"feedback": "Great project!"
|
||||
});
|
||||
|
||||
let response = app.service.patch(&format!("/api/v1/hackathons/submissions/{}/status", submission_id))
|
||||
let response = app.service.patch(format!("/api/v1/hackathons/submissions/{}/status", submission_id))
|
||||
.header("Authorization", format!("Bearer {}", crate::get_test_token(&organizer.id.id.to_raw()).await))
|
||||
.json(&update_status)
|
||||
.await
|
||||
@@ -788,7 +787,7 @@ mod tests {
|
||||
"feedback": "Does not meet criteria"
|
||||
});
|
||||
|
||||
let response2 = app.service.patch(&format!("/api/v1/hackathons/submissions/{}/status", submission_id))
|
||||
let response2 = app.service.patch(format!("/api/v1/hackathons/submissions/{}/status", submission_id))
|
||||
.header("Authorization", format!("Bearer {}", crate::get_test_token(&organizer.id.id.to_raw()).await))
|
||||
.json(&update_status2)
|
||||
.await
|
||||
|
||||
@@ -62,7 +62,7 @@ mod tests {
|
||||
assert_eq!(retrieved_hackathon.registration_deadline, hackathon_request.registration_deadline);
|
||||
assert_eq!(retrieved_hackathon.theme, hackathon_request.theme);
|
||||
assert_eq!(retrieved_hackathon.rules, hackathon_request.rules);
|
||||
assert_eq!(retrieved_hackathon.is_deleted, false);
|
||||
assert!(!retrieved_hackathon.is_deleted);
|
||||
|
||||
// Clean up
|
||||
let _ = repo.delete_hackathon(created.id.id.to_raw()).await;
|
||||
@@ -206,12 +206,12 @@ mod tests {
|
||||
let retrieved_submission = repo.get_hackathon_submission_by_id(submission.id.id.to_raw()).await.expect("Failed to get submission by ID");
|
||||
|
||||
assert_eq!(retrieved_submission.hackathon_id.id.to_raw(), created.id.id.to_raw());
|
||||
assert_eq!(retrieved_submission.team_id.id.to_raw(), team_schema.id.id.to_raw());
|
||||
assert_eq!(retrieved_submission.project_name, "My Rust Project");
|
||||
assert_eq!(retrieved_submission.description, "A cool Rust project for the hackathon");
|
||||
assert_eq!(retrieved_submission.team_id.as_ref().unwrap().id.to_raw(), team_schema.id.id.to_raw());
|
||||
assert_eq!(retrieved_submission.project_name, Some("My Rust Project".to_string()));
|
||||
assert_eq!(retrieved_submission.description, Some("A cool Rust project for the hackathon".to_string()));
|
||||
assert_eq!(retrieved_submission.repository_url, Some("https://github.com/user/my-rust-project".to_string()));
|
||||
assert_eq!(retrieved_submission.demo_url, Some("https://my-rust-project.com".to_string()));
|
||||
assert_eq!(retrieved_submission.submission_status, HackathonSubmissionStatus::Draft);
|
||||
assert_eq!(retrieved_submission.submission_status, Some(HackathonSubmissionStatus::Draft));
|
||||
|
||||
// Clean up
|
||||
let _ = repo.delete_hackathon(created.id.id.to_raw()).await;
|
||||
@@ -314,12 +314,14 @@ mod tests {
|
||||
assert!(result.is_ok(), "Failed to get team submission by ID");
|
||||
let retrieved_submission = result.unwrap();
|
||||
|
||||
assert_eq!(retrieved_submission.project_name, create_submission.project_name);
|
||||
assert_eq!(retrieved_submission.description, create_submission.description);
|
||||
assert_eq!(retrieved_submission.project_name, Some(create_submission.project_name.clone()));
|
||||
// second comparison should clone to avoid moved value
|
||||
assert_eq!(retrieved_submission.project_name, Some(create_submission.project_name.clone()));
|
||||
assert_eq!(retrieved_submission.description, Some(create_submission.description.clone()));
|
||||
assert_eq!(retrieved_submission.repository_url, create_submission.repository_url);
|
||||
assert_eq!(retrieved_submission.demo_url, create_submission.demo_url);
|
||||
assert_eq!(retrieved_submission.slides_url, create_submission.slides_url);
|
||||
assert_eq!(retrieved_submission.submission_status, HackathonSubmissionStatus::Draft);
|
||||
assert_eq!(retrieved_submission.submission_status, Some(HackathonSubmissionStatus::Draft));
|
||||
|
||||
// Clean up
|
||||
let _ = repo.delete_hackathon(hackathon_schema.id.id.to_raw()).await;
|
||||
@@ -404,10 +406,10 @@ mod tests {
|
||||
let submissions = submissions_result.unwrap().data;
|
||||
|
||||
assert_eq!(submissions.len(), 2, "Should have 2 submissions");
|
||||
assert_eq!(submissions[0].project_name, "Project 1");
|
||||
assert_eq!(submissions[1].project_name, "Project 2");
|
||||
assert_eq!(submissions[0].submission_status, HackathonSubmissionStatus::Draft);
|
||||
assert_eq!(submissions[1].submission_status, HackathonSubmissionStatus::Draft);
|
||||
assert_eq!(submissions[0].project_name, Some("Project 1".to_string()));
|
||||
assert_eq!(submissions[1].project_name, Some("Project 2".to_string()));
|
||||
assert_eq!(submissions[0].submission_status, Some(HackathonSubmissionStatus::Draft));
|
||||
assert_eq!(submissions[1].submission_status, Some(HackathonSubmissionStatus::Draft));
|
||||
|
||||
// Clean up
|
||||
let _ = repo.delete_hackathon(hackathon_schema.id.id.to_raw()).await;
|
||||
@@ -510,10 +512,10 @@ mod tests {
|
||||
let submissions_list = submissions_result.unwrap().data;
|
||||
|
||||
assert_eq!(submissions_list.len(), 2, "Should have 2 submissions");
|
||||
assert_eq!(submissions_list[0].project_name, "Project for Hackathon 1");
|
||||
assert_eq!(submissions_list[1].project_name, "Project for Hackathon 2");
|
||||
assert_eq!(submissions_list[0].submission_status, SubmissionStatus::Draft);
|
||||
assert_eq!(submissions_list[1].submission_status, SubmissionStatus::Draft);
|
||||
assert_eq!(submissions_list[0].project_name, Some("Project for Hackathon 1".to_string()));
|
||||
assert_eq!(submissions_list[1].project_name, Some("Project for Hackathon 2".to_string()));
|
||||
assert_eq!(submissions_list[0].submission_status, Some(SubmissionStatus::Draft));
|
||||
assert_eq!(submissions_list[1].submission_status, Some(SubmissionStatus::Draft));
|
||||
|
||||
// Clean up
|
||||
for hackathon_id in hackathon_ids {
|
||||
@@ -661,7 +663,7 @@ mod tests {
|
||||
// Submit the submission (mark as Submitted) using repository API and verify
|
||||
let _submitted_schema = repo.submit_hackathon_submission(submission_id.clone()).await.expect("Failed to submit hackathon submission");
|
||||
let updated_submission = repo.get_hackathon_submission_by_id(submission_id.clone()).await.expect("Failed to get updated submission");
|
||||
assert_eq!(updated_submission.submission_status, HackathonSubmissionStatus::Submitted);
|
||||
assert_eq!(updated_submission.submission_status, Some(HackathonSubmissionStatus::Submitted));
|
||||
assert!(updated_submission.updated_at > updated_submission.created_at);
|
||||
|
||||
// Clean up
|
||||
|
||||
@@ -206,10 +206,10 @@ mod tests {
|
||||
assert!(result.is_ok(), "Failed to get submission by ID via service");
|
||||
let retrieved_submission = result.unwrap().data;
|
||||
|
||||
assert_eq!(retrieved_submission.hackathon_id, hackathon_id);
|
||||
assert_eq!(retrieved_submission.project_name, submission_create_dto.project_name);
|
||||
assert_eq!(retrieved_submission.description, submission_create_dto.description);
|
||||
assert_eq!(retrieved_submission.submission_status, SubmissionStatus::Draft);
|
||||
assert_eq!(retrieved_submission.hackathon_id, hackathon_id);
|
||||
assert_eq!(retrieved_submission.project_name, submission_create_dto.project_name);
|
||||
assert_eq!(retrieved_submission.description, submission_create_dto.description);
|
||||
assert_eq!(retrieved_submission.submission_status, SubmissionStatus::Draft);
|
||||
|
||||
// Clean up
|
||||
let _ = repo.delete_hackathon(hackathon_id).await;
|
||||
@@ -313,11 +313,11 @@ mod tests {
|
||||
assert!(result.is_ok(), "Failed to get team submission by ID via service");
|
||||
let retrieved_submission = result.unwrap().data;
|
||||
|
||||
assert_eq!(retrieved_submission.hackathon_id, hackathon_id);
|
||||
assert_eq!(retrieved_submission.team_id, team_id);
|
||||
assert_eq!(retrieved_submission.project_name, team_submission_create.project_name);
|
||||
assert_eq!(retrieved_submission.description, team_submission_create.description);
|
||||
assert_eq!(retrieved_submission.submission_status, SubmissionStatus::Draft);
|
||||
assert_eq!(retrieved_submission.hackathon_id, hackathon_id);
|
||||
assert_eq!(retrieved_submission.team_id, team_id);
|
||||
assert_eq!(retrieved_submission.project_name, team_submission_create.project_name);
|
||||
assert_eq!(retrieved_submission.description, team_submission_create.description);
|
||||
assert_eq!(retrieved_submission.submission_status, SubmissionStatus::Draft);
|
||||
|
||||
// Clean up
|
||||
let _ = hackathon_repo.delete_hackathon(hackathon_id).await;
|
||||
@@ -403,10 +403,11 @@ mod tests {
|
||||
let submissions = submissions_result.unwrap().data;
|
||||
|
||||
assert_eq!(submissions.len(), 2, "Should have 2 submissions via service");
|
||||
assert_eq!(submissions[0].project_name, "Project 1 Service");
|
||||
assert_eq!(submissions[1].project_name, "Project 2 Service");
|
||||
assert_eq!(submissions[0].submission_status, SubmissionStatus::Draft);
|
||||
assert_eq!(submissions[1].submission_status, SubmissionStatus::Draft);
|
||||
// service returns DTOs with concrete fields; compare their values directly
|
||||
assert_eq!(submissions[0].project_name, "Project 1 Service");
|
||||
assert_eq!(submissions[1].project_name, "Project 2 Service");
|
||||
assert_eq!(submissions[0].submission_status, SubmissionStatus::Draft);
|
||||
assert_eq!(submissions[1].submission_status, SubmissionStatus::Draft);
|
||||
|
||||
// Clean up
|
||||
let _ = repo.delete_hackathon(hackathon_id).await;
|
||||
@@ -418,7 +419,7 @@ mod tests {
|
||||
async fn test_service_get_user_hackathon_submissions() {
|
||||
let app_state = crate::get_app_state().await;
|
||||
let users_repo = UsersRepository::new(&app_state);
|
||||
let repo = HackathonRepository::new(&app_state);
|
||||
let repo = HackathonRepository::new(&app_state);
|
||||
let _service = HackathonService;
|
||||
|
||||
// Create test users
|
||||
@@ -510,11 +511,12 @@ mod tests {
|
||||
submissions.extend(res.data);
|
||||
}
|
||||
|
||||
assert_eq!(submissions.len(), 2, "Should have 2 submissions via service");
|
||||
assert_eq!(submissions[0].project_name, "Project for Hackathon 1 Service");
|
||||
assert_eq!(submissions[1].project_name, "Project for Hackathon 2 Service");
|
||||
assert_eq!(submissions[0].submission_status, SubmissionStatus::Draft);
|
||||
assert_eq!(submissions[1].submission_status, SubmissionStatus::Draft);
|
||||
assert_eq!(submissions.len(), 2, "Should have 2 submissions via service");
|
||||
// these are repository-level schemas; fields are Option<T>
|
||||
assert_eq!(submissions[0].project_name, Some("Project for Hackathon 1 Service".to_string()));
|
||||
assert_eq!(submissions[1].project_name, Some("Project for Hackathon 2 Service".to_string()));
|
||||
assert_eq!(submissions[0].submission_status, Some(SubmissionStatus::Draft));
|
||||
assert_eq!(submissions[1].submission_status, Some(SubmissionStatus::Draft));
|
||||
|
||||
// Clean up
|
||||
for hackathon_id in hackathon_ids {
|
||||
@@ -528,7 +530,7 @@ mod tests {
|
||||
async fn test_service_search_hackathons() {
|
||||
let app_state = crate::get_app_state().await;
|
||||
let users_repo = UsersRepository::new(&app_state);
|
||||
let repo = HackathonRepository::new(&app_state);
|
||||
let _repo = HackathonRepository::new(&app_state);
|
||||
let _service = HackathonService;
|
||||
|
||||
// Create test organizer
|
||||
@@ -604,7 +606,7 @@ mod tests {
|
||||
async fn test_service_update_submission_status() {
|
||||
let app_state = crate::get_app_state().await;
|
||||
let users_repo = UsersRepository::new(&app_state);
|
||||
let repo = HackathonRepository::new(&app_state);
|
||||
let repo = HackathonRepository::new(&app_state);
|
||||
// Use static service methods via trait
|
||||
|
||||
// Create test users
|
||||
@@ -675,7 +677,7 @@ mod tests {
|
||||
assert!(matches!(updated_submission.submission_status, SubmissionStatus::Draft | SubmissionStatus::Submitted));
|
||||
|
||||
// Clean up
|
||||
let _ = repo.delete_hackathon(hackathon_id).await;
|
||||
let _ = repo.delete_hackathon(hackathon_id).await;
|
||||
let _ = users_repo.query_delete_user(organizer.id.id.to_raw()).await;
|
||||
let _ = users_repo.query_delete_user(participant.id.id.to_raw()).await;
|
||||
}
|
||||
@@ -684,7 +686,7 @@ mod tests {
|
||||
async fn test_service_delete_hackathon() {
|
||||
let app_state = crate::get_app_state().await;
|
||||
let users_repo = UsersRepository::new(&app_state);
|
||||
let repo = HackathonRepository::new(&app_state);
|
||||
let _repo = HackathonRepository::new(&app_state);
|
||||
// Use static service methods via trait
|
||||
|
||||
// Create test organizer
|
||||
|
||||
Reference in New Issue
Block a user