core/src/tools/handlers/agent_jobs_tests.rs
62 lines
use super::*;use pretty_assertions::assert_eq;use serde_json::json;#[test]fn parse_csv_supports_quotes_and_commas() { let input = "id,name\n1,\"alpha, beta\"\n2,gamma\n"; let (headers, rows) = parse_csv(input).expect("csv parse"); assert_eq!(headers, vec!["id".to_string(), "name".to_string()]); assert_eq!( rows, vec![ vec!["1".to_string(), "alpha, beta".to_string()], vec!["2".to_string(), "gamma".to_string()] ] );}#[test]fn csv_escape_quotes_when_needed() { assert_eq!(csv_escape("simple"), "simple"); assert_eq!(csv_escape("a,b"), "\"a,b\""); assert_eq!(csv_escape("a\"b"), "\"a\"\"b\"");}#[test]fn render_instruction_template_expands_placeholders_and_escapes_braces() { let row = json!({ "path": "src/lib.rs", "area": "test", "file path": "docs/readme.md", }); let rendered = render_instruction_template( "Review {path} in {area}. Also see {file path}. Use {{literal}}.", &row, ); assert_eq!( rendered, "Review src/lib.rs in test. Also see docs/readme.md. Use {literal}." );}#[test]fn render_instruction_template_leaves_unknown_placeholders() { let row = json!({ "path": "src/lib.rs", }); let rendered = render_instruction_template("Check {path} then {missing}", &row); assert_eq!(rendered, "Check src/lib.rs then {missing}");}#[test]fn ensure_unique_headers_rejects_duplicates() { let headers = vec!["path".to_string(), "path".to_string()]; let Err(err) = ensure_unique_headers(headers.as_slice()) else { panic!("expected duplicate header error"); }; assert_eq!( err, FunctionCallError::RespondToModel("csv header path is duplicated".to_string()) );}