app: add sidecar sync commands (export, detect, import, resolve, full export/import)
This commit is contained in:
35
crates/application/tests/processing/commands/start_job.rs
Normal file
35
crates/application/tests/processing/commands/start_job.rs
Normal file
@@ -0,0 +1,35 @@
|
||||
use std::sync::Arc;
|
||||
use application::testing::InMemoryJobRepository;
|
||||
use application::processing::{StartJobCommand, StartJobHandler};
|
||||
use domain::entities::{Job, JobStatus, JobType};
|
||||
use domain::errors::DomainError;
|
||||
use domain::ports::JobRepository;
|
||||
use domain::value_objects::StructuredData;
|
||||
|
||||
#[tokio::test]
|
||||
async fn starts_queued_job() {
|
||||
let job_repo = Arc::new(InMemoryJobRepository::new());
|
||||
let job = Job::new(JobType::ExtractMetadata, 5, StructuredData::new());
|
||||
let job_id = job.job_id;
|
||||
job_repo.save(&job).await.unwrap();
|
||||
|
||||
let handler = StartJobHandler::new(job_repo.clone());
|
||||
let result = handler.execute(StartJobCommand { job_id }).await.unwrap();
|
||||
|
||||
assert_eq!(result.status, JobStatus::Processing);
|
||||
assert!(result.started_at.is_some());
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn rejects_non_queued_job() {
|
||||
let job_repo = Arc::new(InMemoryJobRepository::new());
|
||||
let mut job = Job::new(JobType::ExtractMetadata, 5, StructuredData::new());
|
||||
job.start().unwrap(); // now Processing
|
||||
let job_id = job.job_id;
|
||||
job_repo.save(&job).await.unwrap();
|
||||
|
||||
let handler = StartJobHandler::new(job_repo.clone());
|
||||
let result = handler.execute(StartJobCommand { job_id }).await;
|
||||
|
||||
assert!(matches!(result, Err(DomainError::Conflict(_))));
|
||||
}
|
||||
Reference in New Issue
Block a user