feat: add integration tests and runnable examples
Add 91 integration tests (all #[ignore]) mirroring the JavaScript SDK's integration test suite. Tests cover all endpoints: ping, apps, fields, records, files, lists, and reports with success, auth, access, and not-found scenarios. Add 7 runnable examples (cargo run --example <name>) for quick manual smoke testing against a real Onspring instance. Both use env vars (API_BASE_URL, SANDBOX_API_KEY, TEST_*) matching the JavaScript SDK setup. Also rename crate to onspring-api-sdk-rust with [lib] name = "onspring" so imports remain `use onspring::*`.
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
use onspring::{OnspringClient, PagingRequest};
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() -> onspring::Result<()> {
|
||||
let base_url = std::env::var("API_BASE_URL").expect("API_BASE_URL is required");
|
||||
let api_key = std::env::var("SANDBOX_API_KEY").expect("SANDBOX_API_KEY is required");
|
||||
|
||||
let client = OnspringClient::builder(&api_key)
|
||||
.base_url(&base_url)
|
||||
.build();
|
||||
|
||||
// List apps with paging
|
||||
let paging = PagingRequest {
|
||||
page_number: 1,
|
||||
page_size: 10,
|
||||
};
|
||||
let response = client.list_apps(Some(paging)).await?;
|
||||
println!("Total apps: {:?}", response.total_records);
|
||||
|
||||
if let Some(items) = &response.items {
|
||||
for app in items {
|
||||
println!(
|
||||
" App: {} (id: {})",
|
||||
app.name.as_deref().unwrap_or("N/A"),
|
||||
app.id
|
||||
);
|
||||
}
|
||||
|
||||
// Get a single app by ID
|
||||
if let Some(first) = items.first() {
|
||||
let app = client.get_app(first.id).await?;
|
||||
println!(
|
||||
"\nFetched app: {} (id: {})",
|
||||
app.name.as_deref().unwrap_or("N/A"),
|
||||
app.id
|
||||
);
|
||||
}
|
||||
|
||||
// Batch get apps
|
||||
let ids: Vec<i32> = items.iter().take(3).map(|a| a.id).collect();
|
||||
if !ids.is_empty() {
|
||||
let batch = client.batch_get_apps(&ids).await?;
|
||||
println!(
|
||||
"\nBatch fetched {} apps",
|
||||
batch.items.map(|i| i.len()).unwrap_or(0)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
Reference in New Issue
Block a user