storkit: merge 444_refactor_extract_shared_test_helpers_test_ctx_write_story_file_make_api

This commit is contained in:
dave
2026-03-28 19:47:59 +00:00
parent d216f3c267
commit ddc4a57cd2
27 changed files with 188 additions and 187 deletions
+25 -24
View File
@@ -138,18 +138,19 @@ impl IoApi {
}
}
#[cfg(test)]
impl From<std::sync::Arc<AppContext>> for IoApi {
fn from(ctx: std::sync::Arc<AppContext>) -> Self {
Self { ctx }
}
}
#[cfg(test)]
mod tests {
use super::*;
use crate::http::context::AppContext;
use crate::http::test_helpers::make_api;
use tempfile::TempDir;
fn make_api(dir: &TempDir) -> IoApi {
IoApi {
ctx: Arc::new(AppContext::new_test(dir.path().to_path_buf())),
}
}
// --- list_directory_absolute ---
#[tokio::test]
@@ -158,7 +159,7 @@ mod tests {
std::fs::create_dir(dir.path().join("subdir")).unwrap();
std::fs::write(dir.path().join("file.txt"), "content").unwrap();
let api = make_api(&dir);
let api = make_api::<IoApi>(&dir);
let payload = Json(FilePathPayload {
path: dir.path().to_string_lossy().to_string(),
});
@@ -176,7 +177,7 @@ mod tests {
let empty = dir.path().join("empty");
std::fs::create_dir(&empty).unwrap();
let api = make_api(&dir);
let api = make_api::<IoApi>(&dir);
let payload = Json(FilePathPayload {
path: empty.to_string_lossy().to_string(),
});
@@ -187,7 +188,7 @@ mod tests {
#[tokio::test]
async fn list_directory_absolute_errors_on_nonexistent_path() {
let dir = TempDir::new().unwrap();
let api = make_api(&dir);
let api = make_api::<IoApi>(&dir);
let payload = Json(FilePathPayload {
path: dir.path().join("nonexistent").to_string_lossy().to_string(),
});
@@ -201,7 +202,7 @@ mod tests {
let file = dir.path().join("not_a_dir.txt");
std::fs::write(&file, "content").unwrap();
let api = make_api(&dir);
let api = make_api::<IoApi>(&dir);
let payload = Json(FilePathPayload {
path: file.to_string_lossy().to_string(),
});
@@ -216,7 +217,7 @@ mod tests {
let dir = TempDir::new().unwrap();
let new_dir = dir.path().join("new_dir");
let api = make_api(&dir);
let api = make_api::<IoApi>(&dir);
let payload = Json(CreateDirectoryPayload {
path: new_dir.to_string_lossy().to_string(),
});
@@ -231,7 +232,7 @@ mod tests {
let existing = dir.path().join("existing");
std::fs::create_dir(&existing).unwrap();
let api = make_api(&dir);
let api = make_api::<IoApi>(&dir);
let payload = Json(CreateDirectoryPayload {
path: existing.to_string_lossy().to_string(),
});
@@ -244,7 +245,7 @@ mod tests {
let dir = TempDir::new().unwrap();
let nested = dir.path().join("a").join("b").join("c");
let api = make_api(&dir);
let api = make_api::<IoApi>(&dir);
let payload = Json(CreateDirectoryPayload {
path: nested.to_string_lossy().to_string(),
});
@@ -258,7 +259,7 @@ mod tests {
#[tokio::test]
async fn get_home_directory_returns_a_path() {
let dir = TempDir::new().unwrap();
let api = make_api(&dir);
let api = make_api::<IoApi>(&dir);
let result = api.get_home_directory().await.unwrap();
let home = &result.0;
assert!(!home.is_empty());
@@ -272,7 +273,7 @@ mod tests {
let dir = TempDir::new().unwrap();
std::fs::write(dir.path().join("hello.txt"), "hello world").unwrap();
let api = make_api(&dir);
let api = make_api::<IoApi>(&dir);
let payload = Json(FilePathPayload {
path: "hello.txt".to_string(),
});
@@ -283,7 +284,7 @@ mod tests {
#[tokio::test]
async fn read_file_errors_on_missing_file() {
let dir = TempDir::new().unwrap();
let api = make_api(&dir);
let api = make_api::<IoApi>(&dir);
let payload = Json(FilePathPayload {
path: "nonexistent.txt".to_string(),
});
@@ -296,7 +297,7 @@ mod tests {
#[tokio::test]
async fn write_file_creates_file() {
let dir = TempDir::new().unwrap();
let api = make_api(&dir);
let api = make_api::<IoApi>(&dir);
let payload = Json(WriteFilePayload {
path: "output.txt".to_string(),
content: "written content".to_string(),
@@ -312,7 +313,7 @@ mod tests {
#[tokio::test]
async fn write_file_creates_parent_dirs() {
let dir = TempDir::new().unwrap();
let api = make_api(&dir);
let api = make_api::<IoApi>(&dir);
let payload = Json(WriteFilePayload {
path: "sub/dir/file.txt".to_string(),
content: "nested".to_string(),
@@ -334,7 +335,7 @@ mod tests {
std::fs::write(dir.path().join("src/main.rs"), "fn main() {}").unwrap();
std::fs::write(dir.path().join("README.md"), "# readme").unwrap();
let api = make_api(&dir);
let api = make_api::<IoApi>(&dir);
let result = api.list_project_files().await.unwrap();
let files = &result.0;
@@ -348,7 +349,7 @@ mod tests {
std::fs::create_dir(dir.path().join("subdir")).unwrap();
std::fs::write(dir.path().join("file.txt"), "").unwrap();
let api = make_api(&dir);
let api = make_api::<IoApi>(&dir);
let result = api.list_project_files().await.unwrap();
let files = &result.0;
@@ -363,7 +364,7 @@ mod tests {
std::fs::write(dir.path().join("z_last.txt"), "").unwrap();
std::fs::write(dir.path().join("a_first.txt"), "").unwrap();
let api = make_api(&dir);
let api = make_api::<IoApi>(&dir);
let result = api.list_project_files().await.unwrap();
let files = &result.0;
@@ -380,7 +381,7 @@ mod tests {
std::fs::create_dir(dir.path().join("adir")).unwrap();
std::fs::write(dir.path().join("bfile.txt"), "").unwrap();
let api = make_api(&dir);
let api = make_api::<IoApi>(&dir);
let payload = Json(FilePathPayload {
path: ".".to_string(),
});
@@ -394,7 +395,7 @@ mod tests {
#[tokio::test]
async fn list_directory_errors_on_nonexistent() {
let dir = TempDir::new().unwrap();
let api = make_api(&dir);
let api = make_api::<IoApi>(&dir);
let payload = Json(FilePathPayload {
path: "nonexistent_dir".to_string(),
});