test: cascading in-memory store

This commit is contained in:
2026-10-25 22:19:24 +01:00
parent 51d92e08a7
commit 06eec2feae
72 changed files with 2439 additions and 1627 deletions

View File

@@ -1,8 +1,7 @@
use std::sync::Arc;
use domain::testing::{
InMemoryGoalRepository, InMemorySocialRepository, InMemoryWrapUpRepository,
InMemoryWrapUpStatsQuery, NoopFederationAdminQuery,
InMemoryStore, InMemoryWrapUpRepository, InMemoryWrapUpStatsQuery, NoopFederationAdminQuery,
};
use domain::{
ports::{
@@ -17,11 +16,7 @@ use domain::{
testing::{
FakeAuthService, FakeDiaryQuery, FakeDocumentParser, FakeMetadataClient,
FakePasswordHasher, FakePersonQuery, FakePosterFetcher, FakeSearchCommand, FakeSearchPort,
FakeStatsRepository, InMemoryImportProfileRepository, InMemoryImportSessionRepository,
InMemoryMovieProfileRepository, InMemoryMovieRepository, InMemoryProfileFieldsRepo,
InMemoryRefreshSessionRepository, InMemoryReviewRepository, InMemoryUserRepository,
InMemoryUserSettingsRepository, InMemoryWatchEventRepository, InMemoryWatchlistRepository,
InMemoryWebhookTokenRepository, NoopEventPublisher, NoopObjectStorage, PanicDiaryExporter,
FakeStatsRepository, NoopEventPublisher, NoopObjectStorage, PanicDiaryExporter,
PanicPersonCommand,
},
};
@@ -89,14 +84,11 @@ impl Default for TestContextBuilder {
impl TestContextBuilder {
pub fn new() -> Self {
let movies = InMemoryMovieRepository::new();
let watch_events = InMemoryWatchEventRepository::new();
let goals = InMemoryGoalRepository::new();
let social = InMemorySocialRepository::new();
let store = InMemoryStore::new();
Self {
movie_command: Arc::clone(&movies) as _,
movie_query: movies as _,
review_repo: InMemoryReviewRepository::new(),
movie_command: Arc::clone(&store) as _,
movie_query: Arc::clone(&store) as _,
review_repo: Arc::clone(&store) as _,
diary_repo: FakeDiaryQuery::new(),
diary_exporter: Arc::new(PanicDiaryExporter),
document_parser: Arc::new(FakeDocumentParser),
@@ -107,30 +99,30 @@ impl TestContextBuilder {
event_publisher: NoopEventPublisher::new(),
auth_service: Arc::new(FakeAuthService),
password_hasher: Arc::new(FakePasswordHasher),
user_repo: InMemoryUserRepository::new(),
import_session_repo: InMemoryImportSessionRepository::new(),
import_profile_repo: InMemoryImportProfileRepository::new(),
movie_profile_repo: InMemoryMovieProfileRepository::new(),
watchlist_repo: InMemoryWatchlistRepository::new(),
watch_event_command: Arc::clone(&watch_events) as _,
watch_event_query: watch_events as _,
webhook_token_repo: InMemoryWebhookTokenRepository::new(),
profile_fields_repo: InMemoryProfileFieldsRepo::new(),
user_repo: Arc::clone(&store) as _,
import_session_repo: Arc::clone(&store) as _,
import_profile_repo: Arc::clone(&store) as _,
movie_profile_repo: Arc::clone(&store) as _,
watchlist_repo: Arc::clone(&store) as _,
watch_event_command: Arc::clone(&store) as _,
watch_event_query: Arc::clone(&store) as _,
webhook_token_repo: Arc::clone(&store) as _,
profile_fields_repo: Arc::clone(&store) as _,
person_command: Arc::new(PanicPersonCommand),
person_query: Arc::new(FakePersonQuery),
search_port: Arc::new(FakeSearchPort),
search_command: Arc::new(FakeSearchCommand),
wrapup_stats: InMemoryWrapUpStatsQuery::new(),
wrapup_repo: InMemoryWrapUpRepository::new(),
goal_command: Arc::clone(&goals) as _,
goal_query: goals as _,
user_settings_repo: InMemoryUserSettingsRepository::new(),
goal_command: Arc::clone(&store) as _,
goal_query: Arc::clone(&store) as _,
user_settings_repo: Arc::clone(&store) as _,
review_logger: Arc::new(NoopReviewLogger),
social_command: Arc::clone(&social) as _,
social_query_unified: Arc::clone(&social) as _,
block_query: Arc::clone(&social) as _,
social_command: Arc::clone(&store) as _,
social_query_unified: Arc::clone(&store) as _,
block_query: Arc::clone(&store) as _,
federation_admin: Arc::new(NoopFederationAdminQuery),
refresh_session_repo: InMemoryRefreshSessionRepository::new(),
refresh_session_repo: Arc::clone(&store) as _,
config: AppConfig {
allow_registration: true,
base_url: "http://localhost:3000".into(),