#![allow(clippy::unwrap_used, dead_code, missing_docs)]
use specta::{Type, Types};
use specta_swift::Swift;
#[derive(Type)]
pub enum Event {
JobStarted { job_id: String, job_type: String },
JobCompleted {
job_id: String,
result: String,
duration: u64,
},
JobCancelled,
JobFailed(String, u32),
}
#[derive(Type)]
pub enum ApiResponse {
Success { data: String, status: u16 },
Error {
message: String,
code: u32,
details: Option<String>,
},
Loading,
Redirect(String),
}
#[test]
fn test_struct_variants_generation() {
let types = Types::default()
.register::<Event>()
.register::<ApiResponse>();
let swift = Swift::default();
let result = swift.export(&types, specta_serde::Format).unwrap();
println!("Generated Swift for struct variants:");
println!("{}", result);
assert!(result.contains("enum Event"));
assert!(result.contains("case jobStarted(EventJobStartedData)"));
assert!(result.contains("case jobCompleted(EventJobCompletedData)"));
assert!(result.contains("case jobCancelled"));
assert!(result.contains("case jobFailed(String, UInt32)"));
assert!(result.contains("struct EventJobStartedData: Codable"));
assert!(result.contains("let jobId: String"));
assert!(result.contains("let jobType: String"));
assert!(result.contains("struct EventJobCompletedData: Codable"));
assert!(result.contains("let jobId: String"));
assert!(result.contains("let result: String"));
assert!(result.contains("let duration: UInt64"));
assert!(result.contains("enum ApiResponse"));
assert!(result.contains("case success(ApiResponseSuccessData)"));
assert!(result.contains("case error(ApiResponseErrorData)"));
assert!(result.contains("case loading"));
assert!(result.contains("case redirect(String)"));
assert!(result.contains("struct ApiResponseSuccessData: Codable"));
assert!(result.contains("let data: String"));
assert!(result.contains("let status: UInt16"));
assert!(result.contains("struct ApiResponseErrorData: Codable"));
assert!(result.contains("let message: String"));
assert!(result.contains("let code: UInt32"));
assert!(result.contains("let details: String?"));
}