#![allow(clippy::unwrap_used)]
#![allow(clippy::expect_used)]
use weedforge::{FileId, WeedClient};
#[test]
fn test_file_id_parse() {
let fid = FileId::parse("3,0000016300007037");
assert!(fid.is_ok());
let fid = fid.unwrap();
assert_eq!(fid.volume_id(), 3);
}
#[test]
fn test_file_id_roundtrip() {
let original = FileId::new(42, 0x1234, 0xABCD_EF00);
let rendered = original.render();
let parsed = FileId::parse(&rendered);
assert!(parsed.is_ok());
assert_eq!(parsed.unwrap(), original);
}
#[test]
fn test_client_builder_no_urls() {
let result = WeedClient::builder().build();
assert!(result.is_err());
}
#[test]
fn test_client_builder_with_url() {
let result = WeedClient::builder()
.master_url("http://localhost:9333")
.build();
assert!(result.is_ok());
}
#[tokio::test]
#[ignore = "Requires running SeaweedFS instance"]
async fn test_write_read_delete() {
let master_url =
std::env::var("SEAWEEDFS_MASTER").unwrap_or_else(|_| "http://localhost:9333".to_string());
let client = WeedClient::builder()
.master_url(&master_url)
.build()
.expect("Failed to create client");
let data = b"Hello, SeaweedFS!".to_vec();
let file_id = client
.write(data.clone(), Some("test.txt"))
.await
.expect("Failed to write");
println!("Uploaded file: {file_id}");
let downloaded = client.read(&file_id).await.expect("Failed to read");
assert_eq!(downloaded, data);
let url = client
.public_url(&file_id)
.await
.expect("Failed to get URL");
println!("Public URL: {url}");
client.delete(&file_id).await.expect("Failed to delete");
}