mod common;
use serde_json::json;
#[tokio::test(flavor = "multi_thread")]
async fn list_tasks() {
let client = require_client!();
let page = client
.tasks()
.list(Default::default())
.await
.expect("listing tasks should succeed");
assert!(page.total >= 0);
}
fn task_definition(name: &str) -> serde_json::Value {
json!({
"actId": "apify/hello-world",
"name": name,
"options": { "memoryMbytes": 256 },
"input": { "message": "hi" }
})
}
#[tokio::test(flavor = "multi_thread")]
async fn get_task() {
let client = require_client!();
let name = common::unique_name("task-get");
let task = client
.tasks()
.create(&task_definition(&name))
.await
.expect("create task");
let cleanup_client = client.clone();
let id = task.id.clone();
let _guard = common::Cleanup::new(move || async move {
let _ = cleanup_client.task(&id).delete().await;
});
let fetched = client
.task(&task.id)
.get()
.await
.expect("get task by id")
.expect("task should exist");
assert_eq!(fetched.id, task.id);
}
#[tokio::test(flavor = "multi_thread")]
async fn task_crud_flow() {
let client = require_client!();
let name = common::unique_name("task");
let task = client
.tasks()
.create(&task_definition(&name))
.await
.expect("create task");
assert_eq!(task.name.as_deref(), Some(name.as_str()));
let cleanup_client = client.clone();
let cleanup_id = task.id.clone();
let _guard = common::Cleanup::new(move || async move {
let _ = cleanup_client.task(&cleanup_id).delete().await;
});
let task_client = client.task(&task.id);
assert!(task_client.get().await.expect("get task").is_some());
let new_input = json!({ "message": "updated" });
task_client
.update_input(&new_input)
.await
.expect("update input");
let input = task_client.get_input().await.expect("get input");
assert!(input.is_some());
let renamed = common::unique_name("task-renamed");
let updated = task_client
.update(&json!({ "name": renamed }))
.await
.expect("update task");
assert_eq!(updated.name.as_deref(), Some(renamed.as_str()));
let runs = task_client
.runs()
.list(Default::default(), Default::default())
.await
.expect("list task runs");
assert!(runs.total >= 0);
task_client.delete().await.expect("delete task");
assert!(task_client.get().await.expect("get after delete").is_none());
}