use pmat::prompts::DefectAwarePromptGenerator;
#[test]
#[ignore = "Requires external OIP test baseline file"]
fn test_integration_with_real_oip_summary() {
let oip_summary_path = "/tmp/oip-test-baseline.yaml";
assert!(
std::path::Path::new(oip_summary_path).exists(),
"Test baseline not found. Run: cp ../organizational-intelligence-plugin/test-baseline.yaml /tmp/oip-test-baseline.yaml"
);
let generator = DefectAwarePromptGenerator::from_file(oip_summary_path)
.expect("Failed to load OIP summary");
assert_eq!(generator.metadata.repositories_analyzed, 25);
assert_eq!(generator.metadata.commits_analyzed, 2500);
assert!(!generator.defect_patterns.is_empty());
assert_eq!(generator.defect_patterns.len(), 2);
let prompt = generator.generate_prompt(
"Write a configuration parser for YAML files",
"Building a new config system for a microservices architecture",
);
assert!(prompt.contains("Write a configuration parser for YAML files"));
assert!(prompt.contains("25 repositories"));
assert!(prompt.contains("2500 commits"));
assert!(prompt.contains("ConfigurationErrors"));
assert!(prompt.contains("IntegrationFailures"));
assert!(prompt.contains("Minimum TDG Score: 85"));
assert!(prompt.contains("Test Coverage: 85%"));
assert!(prompt.contains("pmat analyze tdg --threshold 85"));
let prevention = generator
.generate_prevention_prompt("ConfigurationErrors")
.expect("Should generate prevention prompt");
assert!(prevention.contains("Preventing ConfigurationErrors"));
assert!(prevention.contains("25 occurrences"));
assert!(prevention.contains("TDG 45.2"));
println!("\n========== GENERATED PROMPT ==========\n");
println!("{}", prompt);
println!("\n========== PREVENTION PROMPT ==========\n");
println!("{}", prevention);
}
#[test]
fn test_prompt_quality_meets_requirements() {
let oip_summary_path = "/tmp/oip-test-baseline.yaml";
if !std::path::Path::new(oip_summary_path).exists() {
println!("Skipping test - OIP summary not available");
return;
}
let generator = DefectAwarePromptGenerator::from_file(oip_summary_path).unwrap();
let prompt = generator.generate_prompt(
"Implement HTTP client with retry logic",
"Adding resilient API communication",
);
assert!(prompt.len() > 100, "Prompt should be substantial");
assert!(
prompt.contains("Quality Requirements"),
"Must include quality section"
);
assert!(
prompt.contains("Quality Gates"),
"Must include quality gates"
);
assert!(
prompt.contains("Defect Patterns"),
"Must include defect patterns"
);
assert!(prompt.contains("ConfigurationErrors")); assert!(prompt.contains("IntegrationFailures")); }