| 861 | |
| 862 | #[tokio::test] |
| 863 | async fn test_task_builder_validation_errors() { |
| 864 | let ctx = AppContext::builder().build(); |
| 865 | let non_git_dir = ctx.tsk_env().data_dir().to_path_buf(); |
| 866 | |
| 867 | // Test missing repository root |
| 868 | let result = TaskBuilder::new() |
| 869 | .name("test".to_string()) |
| 870 | .build(&ctx) |
| 871 | .await; |
| 872 | assert!(result.is_err()); |
| 873 | assert!(result.unwrap_err().to_string().contains("Repository root")); |
| 874 | |
| 875 | // Test missing task name |
| 876 | let result = TaskBuilder::new() |
| 877 | .repo_root(non_git_dir.clone()) |
| 878 | .build(&ctx) |
| 879 | .await; |
| 880 | assert!(result.is_err()); |
| 881 | assert!(result.unwrap_err().to_string().contains("Task name")); |
| 882 | |
| 883 | // Test missing prompt for generic task |
| 884 | let result = TaskBuilder::new() |
| 885 | .repo_root(non_git_dir) |
| 886 | .name("test".to_string()) |
| 887 | .build(&ctx) |
| 888 | .await; |
| 889 | assert!(result.is_err()); |
| 890 | assert!( |
| 891 | result |
| 892 | .unwrap_err() |
| 893 | .to_string() |
| 894 | .contains("Either prompt or prompt file") |
| 895 | ); |
| 896 | } |
| 897 | |
| 898 | #[tokio::test] |
| 899 | async fn test_task_builder_with_prompt_file() { |