test: move application tests to tests/
test_support/test_helpers -> tests/support; watched_at unified w/ domain test_watched_at (2024-03-15). Kept inline: users::diary_filter tests (feed_sort_to_direction_all_variants, paged_user_filter_builds_correctly) - pub(super) helpers in private module. Dropped stale never-compiled users/tests/get_users.rs (old execute signature).
This commit is contained in:
108
crates/application/tests/import/apply_profile_test.rs
Normal file
108
crates/application/tests/import/apply_profile_test.rs
Normal file
@@ -0,0 +1,108 @@
|
||||
use crate::support::apply_import_profile_command;
|
||||
use std::sync::Arc;
|
||||
|
||||
use chrono::Utc;
|
||||
use domain::models::ImportProfile;
|
||||
use domain::ports::{ImportProfileRepository, ImportSessionRepository};
|
||||
use domain::testing::InMemoryStore;
|
||||
use domain::value_objects::{ImportProfileId, UserId};
|
||||
use uuid::Uuid;
|
||||
|
||||
use application::import::apply_profile;
|
||||
use application::import::deps::ApplyProfileDeps;
|
||||
|
||||
#[tokio::test]
|
||||
async fn fails_when_profile_not_found() {
|
||||
let profiles = InMemoryStore::new();
|
||||
let sessions = Arc::clone(&profiles);
|
||||
|
||||
let deps = ApplyProfileDeps {
|
||||
import_profile: Arc::clone(&profiles) as _,
|
||||
import_session: Arc::clone(&sessions) as _,
|
||||
};
|
||||
|
||||
let result = apply_profile::execute(
|
||||
&deps,
|
||||
apply_import_profile_command(Uuid::new_v4(), Uuid::new_v4(), Uuid::new_v4()),
|
||||
)
|
||||
.await;
|
||||
|
||||
assert!(result.is_err());
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn fails_when_session_not_found() {
|
||||
let profiles = InMemoryStore::new();
|
||||
let sessions = Arc::clone(&profiles);
|
||||
let user_id = Uuid::new_v4();
|
||||
|
||||
let profile = ImportProfile::new(
|
||||
ImportProfileId::generate(),
|
||||
UserId::from_uuid(user_id),
|
||||
"test".into(),
|
||||
vec![],
|
||||
Utc::now().naive_utc(),
|
||||
);
|
||||
let profile_id = profile.id.clone();
|
||||
profiles.save(&profile).await.unwrap();
|
||||
|
||||
let deps = ApplyProfileDeps {
|
||||
import_profile: Arc::clone(&profiles) as _,
|
||||
import_session: Arc::clone(&sessions) as _,
|
||||
};
|
||||
|
||||
let result = apply_profile::execute(
|
||||
&deps,
|
||||
apply_import_profile_command(user_id, Uuid::new_v4(), profile_id.value()),
|
||||
)
|
||||
.await;
|
||||
|
||||
assert!(result.is_err());
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn applies_profile_mappings_to_session() {
|
||||
let profiles = InMemoryStore::new();
|
||||
let sessions = domain::testing::InMemoryStore::new();
|
||||
let user_id = Uuid::new_v4();
|
||||
|
||||
let profile = ImportProfile::new(
|
||||
ImportProfileId::generate(),
|
||||
UserId::from_uuid(user_id),
|
||||
"letterboxd".into(),
|
||||
vec![domain::models::FieldMapping {
|
||||
source_column: "Name".into(),
|
||||
domain_field: domain::models::import::DomainField::Title,
|
||||
transform: domain::models::import::Transform::Identity,
|
||||
}],
|
||||
Utc::now().naive_utc(),
|
||||
);
|
||||
let profile_id = profile.id.clone();
|
||||
profiles.save(&profile).await.unwrap();
|
||||
|
||||
let session = domain::models::ImportSession::new(UserId::from_uuid(user_id));
|
||||
let session_id = session.id.clone();
|
||||
sessions.create(&session).await.unwrap();
|
||||
|
||||
let deps = ApplyProfileDeps {
|
||||
import_profile: Arc::clone(&profiles) as _,
|
||||
import_session: Arc::clone(&sessions) as _,
|
||||
};
|
||||
|
||||
apply_profile::execute(
|
||||
&deps,
|
||||
apply_import_profile_command(user_id, session_id.value(), profile_id.value()),
|
||||
)
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
// Verify the session got updated with field_mappings and row_results cleared
|
||||
let updated =
|
||||
ImportSessionRepository::get(&*sessions, &session_id, &UserId::from_uuid(user_id))
|
||||
.await
|
||||
.unwrap()
|
||||
.unwrap();
|
||||
assert!(updated.field_mappings.is_some());
|
||||
assert_eq!(updated.field_mappings.unwrap().len(), 1);
|
||||
assert!(updated.row_results.is_none());
|
||||
}
|
||||
Reference in New Issue
Block a user