use lmrc_docker::{DockerClient, DockerError, Result};
#[tokio::test]
async fn test_client_creation() -> Result<()> {
let client = DockerClient::new()?;
assert!(client.inner().version().await.is_ok());
Ok(())
}
#[tokio::test]
async fn test_ping() -> Result<()> {
let client = DockerClient::new()?;
client.ping().await?;
Ok(())
}
#[tokio::test]
async fn test_container_builder() -> Result<()> {
let client = DockerClient::new()?;
let _builder = client
.containers()
.create("alpine:latest")
.name("test-container")
.env("TEST", "value")
.port(8080, 80, "tcp");
Ok(())
}
#[tokio::test]
async fn test_image_builder() -> Result<()> {
let client = DockerClient::new()?;
let _builder = client
.images()
.build("test:latest")
.dockerfile("Dockerfile")
.build_arg("VERSION", "1.0.0")
.label("test", "value");
Ok(())
}
#[test]
fn test_error_conversions() {
let err: DockerError = "test error".into();
assert_eq!(err.to_string(), "test error");
let err: DockerError = String::from("another error").into();
assert_eq!(err.to_string(), "another error");
}
#[test]
fn test_error_types() {
let err = DockerError::ContainerNotFound("test-id".to_string());
assert!(err.to_string().contains("Container not found"));
let err = DockerError::ImageNotFound("test:latest".to_string());
assert!(err.to_string().contains("Image not found"));
let err = DockerError::BuildFailed("syntax error".to_string());
assert!(err.to_string().contains("Docker build failed"));
}
#[test]
fn test_result_type() {
fn returns_ok() -> Result<String> {
Ok("success".to_string())
}
fn returns_err() -> Result<String> {
Err(DockerError::Other("failure".to_string()))
}
assert!(returns_ok().is_ok());
assert!(returns_err().is_err());
}