// file: crates/knowledge-git-api/unit_tests/lib.rs // version: 2 #[derive(Debug, Eq, PartialEq)] struct FakeGitError; struct FakeGitRepository; impl crate::GitRepository for FakeGitRepository { type Error = FakeGitError; fn refresh(&mut self, _source_id: &knowledge_domain_lib::SourceId) -> Result<(), Self::Error> { return Ok(()); } fn resolve_revision(&self, source_id: &knowledge_domain_lib::SourceId, reference: &crate::GitReference) -> Result { return Ok(crate::GitRevision::new(&format!("{}:{}", source_id.as_str(), reference.as_str()))); } fn prepare_snapshot(&self, _source_id: &knowledge_domain_lib::SourceId, revision: &crate::GitRevision) -> Result { return Ok(crate::GitSnapshot::new(revision.clone(), std::path::PathBuf::from("/controlled/snapshot"))); } } #[test] fn generic_repository_contract_does_not_require_a_forge() { let source_result = knowledge_domain_lib::SourceId::new("local-pgr"); assert!(source_result.is_ok()); let source_id = match source_result { Ok(value) => value, Err(_) => return, }; let reference = crate::GitReference::new("refs/heads/master"); let mut repository = FakeGitRepository; assert!(crate::GitRepository::refresh(&mut repository, &source_id).is_ok()); let revision_result = crate::GitRepository::resolve_revision(&repository, &source_id, &reference); assert_eq!(revision_result, Ok(crate::GitRevision::new("local-pgr:refs/heads/master"))); let revision = match revision_result { Ok(value) => value, Err(_) => return, }; let snapshot_result = crate::GitRepository::prepare_snapshot(&repository, &source_id, &revision); assert_eq!( snapshot_result, Ok(crate::GitSnapshot::new(revision, std::path::PathBuf::from("/controlled/snapshot"))) ); return; }