diff --git a/src/application/mappers/create_medication_mapper.rs b/src/application/mappers/create_medication_mapper.rs index cff17d0..bc78fcb 100644 --- a/src/application/mappers/create_medication_mapper.rs +++ b/src/application/mappers/create_medication_mapper.rs @@ -117,4 +117,3 @@ mod tests { assert_eq!(med.dose_frequency(), &DoseFrequency::OnceDaily); } } - diff --git a/src/application/mappers/medication_try_from.rs b/src/application/mappers/medication_try_from.rs index 6bd75a6..76c93e0 100644 --- a/src/application/mappers/medication_try_from.rs +++ b/src/application/mappers/medication_try_from.rs @@ -68,7 +68,9 @@ mod tests { assert!(matches!( result, - Err(ApplicationError::Domain(crate::domain::errors::DomainError::EmptyMedicationName)) + Err(ApplicationError::Domain( + crate::domain::errors::DomainError::EmptyMedicationName + )) )); } @@ -78,7 +80,9 @@ mod tests { assert!(matches!( result, - Err(ApplicationError::Domain(crate::domain::errors::DomainError::InvalidDosage)) + Err(ApplicationError::Domain( + crate::domain::errors::DomainError::InvalidDosage + )) )); } @@ -127,7 +131,9 @@ mod tests { assert!(matches!( result, - Err(ApplicationError::Domain(crate::domain::errors::DomainError::EmptyMedicationName)) + Err(ApplicationError::Domain( + crate::domain::errors::DomainError::EmptyMedicationName + )) )); } @@ -139,7 +145,9 @@ mod tests { assert!(matches!( result, - Err(ApplicationError::Domain(crate::domain::errors::DomainError::InvalidDosage)) + Err(ApplicationError::Domain( + crate::domain::errors::DomainError::InvalidDosage + )) )); } diff --git a/src/application/mappers/update_medication_mapper.rs b/src/application/mappers/update_medication_mapper.rs index 1c7b3d6..3dced9a 100644 --- a/src/application/mappers/update_medication_mapper.rs +++ b/src/application/mappers/update_medication_mapper.rs @@ -91,8 +91,13 @@ mod tests { #[test] fn map_with_invalid_time_returns_domain_error() { let mapper = UpdateMedicationMapper; - let request = - UpdateMedicationRequest::new(Uuid::nil().to_string(), "Aspirin", 500, vec![(25, 0)], "OnceDaily"); + let request = UpdateMedicationRequest::new( + Uuid::nil().to_string(), + "Aspirin", + 500, + vec![(25, 0)], + "OnceDaily", + ); let result = mapper.map((request, make_id())); @@ -109,4 +114,3 @@ mod tests { assert_eq!(med.dose_frequency(), &DoseFrequency::OnceDaily); } } - diff --git a/src/application/services/create_medication_service.rs b/src/application/services/create_medication_service.rs index e4d9fe9..94c126d 100644 --- a/src/application/services/create_medication_service.rs +++ b/src/application/services/create_medication_service.rs @@ -1,5 +1,5 @@ -use std::sync::Arc; use std::convert::TryFrom; +use std::sync::Arc; use crate::application::dtos::requests::CreateMedicationRequest; use crate::application::dtos::responses::CreateMedicationResponse; @@ -99,4 +99,3 @@ mod tests { assert!(matches!(result, Err(ApplicationError::Storage(_)))); } } - diff --git a/src/application/services/delete_medication_service.rs b/src/application/services/delete_medication_service.rs index 9b76551..9b590cf 100644 --- a/src/application/services/delete_medication_service.rs +++ b/src/application/services/delete_medication_service.rs @@ -44,7 +44,9 @@ mod tests { fn execute_with_invalid_uuid_returns_invalid_input() { let repo = std::sync::Arc::new(FakeMedicationRepository::new()); let service = make_service(repo); - let req = DeleteMedicationRequest { id: "not-a-uuid".into() }; + let req = DeleteMedicationRequest { + id: "not-a-uuid".into(), + }; let res = service.execute(req); assert!(matches!(res, Err(ApplicationError::InvalidInput(_)))); diff --git a/src/application/services/get_medication_service.rs b/src/application/services/get_medication_service.rs index cbd15c6..c61d514 100644 --- a/src/application/services/get_medication_service.rs +++ b/src/application/services/get_medication_service.rs @@ -50,7 +50,10 @@ mod tests { use super::*; use crate::application::ports::fakes::FakeMedicationRepository; use crate::domain::entities::medication::Medication; - use crate::domain::value_objects::{medication_id::MedicationId, medication_name::MedicationName, dosage::Dosage, scheduled_time::ScheduledTime, medication_frequency::DoseFrequency}; + use crate::domain::value_objects::{ + dosage::Dosage, medication_frequency::DoseFrequency, medication_id::MedicationId, + medication_name::MedicationName, scheduled_time::ScheduledTime, + }; fn make_service(repo: std::sync::Arc) -> GetMedicationService { GetMedicationService::new(repo) @@ -60,7 +63,9 @@ mod tests { fn execute_when_not_found_returns_not_found_error() { let repo = std::sync::Arc::new(FakeMedicationRepository::new()); let service = make_service(repo); - let req = super::GetMedicationRequest { id: uuid::Uuid::now_v7().to_string() }; + let req = super::GetMedicationRequest { + id: uuid::Uuid::now_v7().to_string(), + }; let res = service.execute(req); assert!(matches!(res, Err(ApplicationError::NotFound(_)))); @@ -72,12 +77,14 @@ mod tests { MedicationId::generate(), MedicationName::new("Test").unwrap(), Dosage::new(123).unwrap(), - vec![ScheduledTime::new(8,0).unwrap()], + vec![ScheduledTime::new(8, 0).unwrap()], DoseFrequency::OnceDaily, ); let repo = std::sync::Arc::new(FakeMedicationRepository::with(vec![med.clone()])); let service = make_service(repo); - let req = super::GetMedicationRequest { id: med.id().to_string() }; + let req = super::GetMedicationRequest { + id: med.id().to_string(), + }; let res = service.execute(req).unwrap(); assert_eq!(res.medication.id, med.id().to_string()); diff --git a/src/application/services/list_dose_records_service.rs b/src/application/services/list_dose_records_service.rs index db93660..e18a0c3 100644 --- a/src/application/services/list_dose_records_service.rs +++ b/src/application/services/list_dose_records_service.rs @@ -66,7 +66,9 @@ mod tests { fn execute_with_invalid_medication_id_returns_invalid_input() { let repo = std::sync::Arc::new(FakeDoseRecordRepository::new()); let service = make_service(repo); - let req = super::ListDoseRecordsRequest { medication_id: "not-a-uuid".into() }; + let req = super::ListDoseRecordsRequest { + medication_id: "not-a-uuid".into(), + }; let res = service.execute(req); assert!(matches!(res, Err(ApplicationError::InvalidInput(_)))); @@ -75,10 +77,12 @@ mod tests { #[test] fn execute_with_records_returns_dtos() { let med_id = MedicationId::generate(); - let record = DoseRecord::new(med_id.clone(), make_datetime(8,0)); + let record = DoseRecord::new(med_id.clone(), make_datetime(8, 0)); let repo = std::sync::Arc::new(FakeDoseRecordRepository::with(record.clone())); let service = make_service(repo); - let req = super::ListDoseRecordsRequest { medication_id: med_id.to_string() }; + let req = super::ListDoseRecordsRequest { + medication_id: med_id.to_string(), + }; let res = service.execute(req).unwrap(); assert_eq!(res.records.len(), 1); diff --git a/src/application/services/mark_dose_taken_service.rs b/src/application/services/mark_dose_taken_service.rs index 0d2e642..29a226b 100644 --- a/src/application/services/mark_dose_taken_service.rs +++ b/src/application/services/mark_dose_taken_service.rs @@ -96,7 +96,10 @@ mod tests { let med_repo = std::sync::Arc::new(FakeMedicationRepository::new()); let service = make_service(repo, med_repo); - let req = MarkDoseTakenRequest { record_id: "not-a-uuid".into(), taken_at: make_datetime(8,0) }; + let req = MarkDoseTakenRequest { + record_id: "not-a-uuid".into(), + taken_at: make_datetime(8, 0), + }; let res = service.execute(req); assert!(matches!(res, Err(ApplicationError::InvalidInput(_)))); } @@ -104,12 +107,18 @@ mod tests { #[test] fn execute_when_record_exists_marks_and_saves() { let med_id = crate::domain::value_objects::medication_id::MedicationId::generate(); - let record = crate::domain::entities::dose_record::DoseRecord::new(med_id.clone(), make_datetime(8,0)); + let record = crate::domain::entities::dose_record::DoseRecord::new( + med_id.clone(), + make_datetime(8, 0), + ); let repo = std::sync::Arc::new(FakeDoseRecordRepository::with(record.clone())); let med_repo = std::sync::Arc::new(FakeMedicationRepository::new()); let service = make_service(repo.clone(), med_repo); - let req = MarkDoseTakenRequest { record_id: record.id().to_string(), taken_at: make_datetime(8,5) }; + let req = MarkDoseTakenRequest { + record_id: record.id().to_string(), + taken_at: make_datetime(8, 5), + }; let res = service.execute(req).unwrap(); assert_eq!(res.record_id, record.id().to_string()); assert_eq!(repo.saved_count(), 1); @@ -129,7 +138,10 @@ mod tests { let med_repo = std::sync::Arc::new(FakeMedicationRepository::with(vec![med])); let service = make_service(repo.clone(), med_repo); - let req = MarkDoseTakenRequest { record_id: med_id.to_string(), taken_at: make_datetime(9,0) }; + let req = MarkDoseTakenRequest { + record_id: med_id.to_string(), + taken_at: make_datetime(9, 0), + }; let res = service.execute(req).unwrap(); assert!(!res.record_id.is_empty()); assert_eq!(repo.saved_count(), 1); @@ -141,7 +153,10 @@ mod tests { let med_repo = std::sync::Arc::new(FakeMedicationRepository::new()); let service = make_service(repo, med_repo); - let req = MarkDoseTakenRequest { record_id: uuid::Uuid::now_v7().to_string(), taken_at: make_datetime(9,0) }; + let req = MarkDoseTakenRequest { + record_id: uuid::Uuid::now_v7().to_string(), + taken_at: make_datetime(9, 0), + }; let res = service.execute(req); assert!(matches!(res, Err(ApplicationError::NotFound(_)))); } diff --git a/src/application/services/schedule_dose_service.rs b/src/application/services/schedule_dose_service.rs index 7c11759..c07dfc8 100644 --- a/src/application/services/schedule_dose_service.rs +++ b/src/application/services/schedule_dose_service.rs @@ -99,9 +99,14 @@ impl ScheduleDosePort for ScheduleDoseService { #[cfg(test)] mod tests { use super::*; - use crate::application::ports::fakes::{FakeClock, FakeDoseRecordRepository, FakeMedicationRepository, FakeNotificationPort}; + use crate::application::ports::fakes::{ + FakeClock, FakeDoseRecordRepository, FakeMedicationRepository, FakeNotificationPort, + }; use crate::domain::entities::medication::Medication; - use crate::domain::value_objects::{medication_id::MedicationId, medication_name::MedicationName, dosage::Dosage, scheduled_time::ScheduledTime, medication_frequency::DoseFrequency}; + use crate::domain::value_objects::{ + dosage::Dosage, medication_frequency::DoseFrequency, medication_id::MedicationId, + medication_name::MedicationName, scheduled_time::ScheduledTime, + }; fn make_service( med_repo: std::sync::Arc, @@ -118,15 +123,20 @@ mod tests { MedicationId::generate(), MedicationName::new("Test").unwrap(), Dosage::new(100).unwrap(), - vec![ScheduledTime::new(8,0).unwrap()], + vec![ScheduledTime::new(8, 0).unwrap()], DoseFrequency::OnceDaily, ); let med_repo = std::sync::Arc::new(FakeMedicationRepository::with(vec![med.clone()])); let dose_repo = std::sync::Arc::new(FakeDoseRecordRepository::new()); let notification = std::sync::Arc::new(FakeNotificationPort::new()); - let clock = std::sync::Arc::new(FakeClock::at(8,0)); + let clock = std::sync::Arc::new(FakeClock::at(8, 0)); - let service = make_service(med_repo.clone(), dose_repo.clone(), notification.clone(), clock.clone()); + let service = make_service( + med_repo.clone(), + dose_repo.clone(), + notification.clone(), + clock.clone(), + ); let created = service.execute().unwrap(); assert_eq!(created.len(), 1); assert_eq!(notification.call_count(), 1); @@ -139,13 +149,13 @@ mod tests { MedicationId::generate(), MedicationName::new("Test").unwrap(), Dosage::new(100).unwrap(), - vec![ScheduledTime::new(9,0).unwrap()], + vec![ScheduledTime::new(9, 0).unwrap()], DoseFrequency::OnceDaily, ); let med_repo = std::sync::Arc::new(FakeMedicationRepository::with(vec![med])); let dose_repo = std::sync::Arc::new(FakeDoseRecordRepository::new()); let notification = std::sync::Arc::new(FakeNotificationPort::new()); - let clock = std::sync::Arc::new(FakeClock::at(8,0)); + let clock = std::sync::Arc::new(FakeClock::at(8, 0)); let service = make_service(med_repo, dose_repo, notification, clock); let created = service.execute().unwrap(); diff --git a/src/application/services/settings_service.rs b/src/application/services/settings_service.rs index ff01c31..e3c1308 100644 --- a/src/application/services/settings_service.rs +++ b/src/application/services/settings_service.rs @@ -48,12 +48,17 @@ mod tests { } } - impl crate::application::ports::outbound::settings_repository_port::SettingsRepositoryPort for InMemorySettingsRepo { + impl crate::application::ports::outbound::settings_repository_port::SettingsRepositoryPort + for InMemorySettingsRepo + { fn load(&self) -> Result { Ok(self.value.lock().unwrap().clone()) } - fn save(&self, settings: &serde_json::Value) -> Result<(), crate::application::errors::StorageError> { + fn save( + &self, + settings: &serde_json::Value, + ) -> Result<(), crate::application::errors::StorageError> { *self.value.lock().unwrap() = settings.clone(); Ok(()) } @@ -65,9 +70,11 @@ mod tests { #[test] fn execute_get_returns_saved_settings() { - let repo = std::sync::Arc::new(InMemorySettingsRepo::new(json!({"k": "v"}))); + let repo = std::sync::Arc::new(InMemorySettingsRepo::new(json!({"k": "v"}))); let service = make_service(repo); - let req = SettingsRequest { op: SettingsOperation::Get }; + let req = SettingsRequest { + op: SettingsOperation::Get, + }; let res = service.execute(req).unwrap(); assert_eq!(res.settings, json!({"k":"v"})); @@ -75,10 +82,14 @@ mod tests { #[test] fn execute_update_saves_and_returns_settings() { - let repo = std::sync::Arc::new(InMemorySettingsRepo::new(json!({}))); + let repo = std::sync::Arc::new(InMemorySettingsRepo::new(json!({}))); let service = make_service(repo.clone()); let new_settings = json!({"a":1}); - let req = SettingsRequest { op: SettingsOperation::Update { settings: new_settings.clone() } }; + let req = SettingsRequest { + op: SettingsOperation::Update { + settings: new_settings.clone(), + }, + }; let res = service.execute(req).unwrap(); assert_eq!(res.settings, new_settings); diff --git a/src/application/services/update_medication_service.rs b/src/application/services/update_medication_service.rs index df49859..0676fde 100644 --- a/src/application/services/update_medication_service.rs +++ b/src/application/services/update_medication_service.rs @@ -81,7 +81,8 @@ mod tests { fn execute_with_invalid_uuid_returns_invalid_input_error() { let repo = Arc::new(FakeMedicationRepository::new()); let service = make_service(repo); - let request = UpdateMedicationRequest::new("not-a-uuid", "Ibuprofen", 200, vec![(8, 0)], "OnceDaily"); + let request = + UpdateMedicationRequest::new("not-a-uuid", "Ibuprofen", 200, vec![(8, 0)], "OnceDaily"); let result = service.execute(request); @@ -103,7 +104,8 @@ mod tests { fn execute_with_zero_dosage_returns_domain_error() { let repo = Arc::new(FakeMedicationRepository::new()); let service = make_service(repo); - let request = UpdateMedicationRequest::new(valid_id(), "Ibuprofen", 0, vec![(8, 0)], "OnceDaily"); + let request = + UpdateMedicationRequest::new(valid_id(), "Ibuprofen", 0, vec![(8, 0)], "OnceDaily"); let result = service.execute(request); @@ -120,4 +122,3 @@ mod tests { assert!(matches!(result, Err(ApplicationError::Storage(_)))); } } - diff --git a/src/domain/ports/mapper.rs b/src/domain/ports/mapper.rs index 93fedc9..ee6fff9 100644 --- a/src/domain/ports/mapper.rs +++ b/src/domain/ports/mapper.rs @@ -36,4 +36,3 @@ pub trait Mapper: Send + Sync { /// before calling. fn map(&self, src: Self::Source) -> Result; } -