add 400+ unit tests for domain and application layers
Some checks failed
CI / Check / Test (push) Has been cancelled

Extract ReviewLogger trait to decouple import/integrations
from diary::log_review (cross-module coupling smell).

Add in-memory fakes for all repository ports, enabling
isolated testing of every use case module without a database.

Coverage: domain+application 22% → 80%, 427 tests.
This commit is contained in:
2026-06-09 02:07:26 +02:00
parent 30a6200b5b
commit d867a14b28
122 changed files with 7033 additions and 151 deletions

View File

@@ -7,3 +7,7 @@ use domain::{
pub async fn execute(ctx: &AppContext, id: PersonId) -> Result<Option<Person>, DomainError> {
ctx.repos.person_query.get_by_id(&id).await
}
#[cfg(test)]
#[path = "tests/get.rs"]
mod tests;

View File

@@ -7,3 +7,7 @@ use domain::{
pub async fn execute(ctx: &AppContext, id: PersonId) -> Result<PersonCredits, DomainError> {
ctx.repos.person_query.get_credits(&id).await
}
#[cfg(test)]
#[path = "tests/get_credits.rs"]
mod tests;

View File

@@ -0,0 +1,16 @@
use domain::models::PersonId;
use uuid::Uuid;
use crate::person::get;
use crate::test_helpers::TestContextBuilder;
#[tokio::test]
async fn returns_none_for_unknown_person() {
let ctx = TestContextBuilder::new().build();
let result = get::execute(&ctx, PersonId::from_uuid(Uuid::new_v4()))
.await
.unwrap();
assert!(result.is_none());
}

View File

@@ -0,0 +1,17 @@
use domain::models::PersonId;
use uuid::Uuid;
use crate::person::get_credits;
use crate::test_helpers::TestContextBuilder;
#[tokio::test]
async fn returns_empty_credits() {
let ctx = TestContextBuilder::new().build();
let result = get_credits::execute(&ctx, PersonId::from_uuid(Uuid::new_v4()))
.await
.unwrap();
assert!(result.cast.is_empty());
assert!(result.crew.is_empty());
}