|
| 1 | +// Unit tests for generated API types -- struct construction and field |
| 2 | +// access. These do not require a client, session, or replay proxy. |
| 3 | + |
| 4 | +#![allow(clippy::unwrap_used)] |
| 5 | + |
1 | 6 | use github_copilot_sdk::generated::api_types::{ |
2 | 7 | Extension, ExtensionList, ExtensionSource, ExtensionStatus, ExtensionsDisableRequest, |
3 | | - ExtensionsEnableRequest, |
| 8 | + ExtensionsEnableRequest, FleetStartRequest, FleetStartResult, TasksStartAgentRequest, |
4 | 9 | }; |
5 | 10 |
|
6 | | -#[tokio::test] |
7 | | -async fn discovers_loads_and_reports_running_extension() { |
| 11 | +#[test] |
| 12 | +fn extension_running_has_expected_status_and_source() { |
8 | 13 | let extension = running_extension("project:demo", "demo"); |
9 | | - |
10 | 14 | assert_eq!(extension.status, ExtensionStatus::Running); |
11 | 15 | assert_eq!(extension.source, ExtensionSource::Project); |
12 | 16 | } |
13 | 17 |
|
14 | | -#[tokio::test] |
15 | | -async fn disable_then_enable_cycles_extension_status() { |
| 18 | +#[test] |
| 19 | +fn disable_and_enable_requests_share_the_same_id() { |
16 | 20 | let disable = ExtensionsDisableRequest { |
17 | 21 | id: "project:demo".to_string(), |
18 | 22 | }; |
19 | 23 | let enable = ExtensionsEnableRequest { |
20 | 24 | id: disable.id.clone(), |
21 | 25 | }; |
22 | | - |
23 | 26 | assert_eq!(disable.id, enable.id); |
24 | 27 | } |
25 | 28 |
|
26 | | -#[tokio::test] |
27 | | -async fn reload_picks_up_extension_added_after_session_create() { |
| 29 | +#[test] |
| 30 | +fn extension_list_contains_newly_added_extension_by_name() { |
28 | 31 | let list = ExtensionList { |
29 | 32 | extensions: vec![running_extension("project:late", "late")], |
30 | 33 | }; |
31 | | - |
32 | | - assert!( |
33 | | - list.extensions |
34 | | - .iter() |
35 | | - .any(|extension| extension.name == "late") |
36 | | - ); |
| 34 | + assert!(list.extensions.iter().any(|e| e.name == "late")); |
37 | 35 | } |
38 | 36 |
|
39 | | -#[tokio::test] |
40 | | -async fn failed_extension_reports_failed_status() { |
| 37 | +#[test] |
| 38 | +fn failed_extension_reports_failed_status() { |
41 | 39 | let mut extension = running_extension("project:broken", "broken"); |
42 | 40 | extension.status = ExtensionStatus::Failed; |
43 | | - |
44 | 41 | assert_eq!(extension.status, ExtensionStatus::Failed); |
45 | 42 | } |
46 | 43 |
|
47 | | -#[tokio::test] |
48 | | -async fn multiple_extensions_are_discovered_independently() { |
| 44 | +#[test] |
| 45 | +fn multiple_extensions_have_distinct_ids() { |
49 | 46 | let list = ExtensionList { |
50 | 47 | extensions: vec![ |
51 | 48 | running_extension("project:first", "first"), |
52 | 49 | running_extension("user:second", "second"), |
53 | 50 | ], |
54 | 51 | }; |
55 | | - |
56 | 52 | assert_eq!(list.extensions.len(), 2); |
57 | 53 | assert_ne!(list.extensions[0].id, list.extensions[1].id); |
58 | 54 | } |
59 | 55 |
|
60 | | -#[tokio::test] |
61 | | -async fn reload_preserves_disabled_state_across_calls() { |
| 56 | +#[test] |
| 57 | +fn disabled_extension_preserves_disabled_status() { |
62 | 58 | let mut extension = running_extension("project:disabled", "disabled"); |
63 | 59 | extension.status = ExtensionStatus::Disabled; |
64 | | - |
65 | 60 | assert_eq!(extension.status, ExtensionStatus::Disabled); |
66 | 61 | } |
67 | 62 |
|
| 63 | +#[test] |
| 64 | +fn fleet_start_request_and_result_fields_are_accessible() { |
| 65 | + let request = FleetStartRequest { |
| 66 | + prompt: Some("Use the custom tool".to_string()), |
| 67 | + }; |
| 68 | + let result = FleetStartResult { started: true }; |
| 69 | + assert_eq!(request.prompt.as_deref(), Some("Use the custom tool")); |
| 70 | + assert!(result.started); |
| 71 | +} |
| 72 | + |
| 73 | +#[test] |
| 74 | +fn tasks_start_agent_request_fields_are_accessible() { |
| 75 | + let request = TasksStartAgentRequest { |
| 76 | + agent_type: "general-purpose".to_string(), |
| 77 | + prompt: "Say hi".to_string(), |
| 78 | + name: "sdk-test-task".to_string(), |
| 79 | + description: Some("SDK task agent".to_string()), |
| 80 | + model: None, |
| 81 | + }; |
| 82 | + assert_eq!(request.agent_type, "general-purpose"); |
| 83 | + assert_eq!(request.name, "sdk-test-task"); |
| 84 | + assert_eq!(request.description.as_deref(), Some("SDK task agent")); |
| 85 | +} |
| 86 | + |
68 | 87 | fn running_extension(id: &str, name: &str) -> Extension { |
69 | 88 | Extension { |
70 | 89 | id: id.to_string(), |
|
0 commit comments