diff --git a/src/cmd/taxon.rs b/src/cmd/taxon.rs index c857e63..f047eb9 100644 --- a/src/cmd/taxon.rs +++ b/src/cmd/taxon.rs @@ -39,7 +39,7 @@ pub struct TaxonSearchResult { matches: Vec, } -#[derive(Debug, Clone, Deserialize, Serialize)] +#[derive(Debug, Clone, Deserialize, Serialize, PartialEq)] #[serde(transparent)] pub struct TaxonGenomes { data: Vec, @@ -411,4 +411,35 @@ mod tests { assert!(file_contents.contains("g__Aminobacter")); std::fs::remove_file("test_search.json").unwrap(); } + + #[test] + fn test_get_genomes_with_output() -> Result<()> { + let args = TaxonArgs { + name: vec!["g__Escherichia".to_string()], + raw: true, + output: Some("output.json".to_string()), + partial: false, + search: false, + search_all: false, + genomes: true, + reps_only: false, + }; + + let actual_output = args.get_output().unwrap(); + + get_taxon_genomes(args)?; + + let expected_output = fs::read_to_string("output.json")?; + let expected_taxon_data: TaxonGenomes = serde_json::from_str(&expected_output)?; + + let actual_output = fs::read_to_string(actual_output)?; + let actual_taxon_data: TaxonGenomes = serde_json::from_str(&actual_output)?; + + assert_eq!(expected_taxon_data, actual_taxon_data); + + // Clean up the output file + fs::remove_file("output.json")?; + + Ok(()) + } }