test(data): Migration des Legacy-AppData-Verzeichnisses abdecken

Paths.MigrateLegacyAppDataRoot war ungetestet: Verschieben von ~/.todo-app
nach ~/.claudeDo, Pfad-Rewrite in den Config-Dateien und der No-Op-Fall.
This commit is contained in:
mika kuns
2026-08-27 16:43:22 +02:00
parent 84219a9f88
commit 1a24152261
@@ -0,0 +1,48 @@
using ClaudeDo.Data;
namespace ClaudeDo.Data.Tests;
public class LegacyAppDataRootMigrationTests : IDisposable
{
private readonly string _home = Path.Combine(Path.GetTempPath(), $"claudedo_home_{Guid.NewGuid():N}");
public void Dispose()
{
try { Directory.Delete(_home, true); } catch { /* best effort */ }
}
[Fact]
public void MovesLegacyRootAndRewritesConfigPaths()
{
var legacy = Path.Combine(_home, ".todo-app");
Directory.CreateDirectory(Path.Combine(legacy, "logs"));
File.WriteAllText(Path.Combine(legacy, "todo.db"), "db");
File.WriteAllText(Path.Combine(legacy, "worker.config.json"),
"""{"db_path":"~/.todo-app/todo.db","log_root":"~/.todo-app/logs"}""");
Paths.MigrateLegacyAppDataRoot(_home);
var root = Path.Combine(_home, ".claudeDo");
Assert.False(Directory.Exists(legacy));
Assert.Equal("db", File.ReadAllText(Path.Combine(root, "todo.db")));
Assert.True(Directory.Exists(Path.Combine(root, "logs")));
Assert.Equal(
"""{"db_path":"~/.claudeDo/todo.db","log_root":"~/.claudeDo/logs"}""",
File.ReadAllText(Path.Combine(root, "worker.config.json")));
}
[Fact]
public void LeavesLegacyRootAloneOnceTargetExists()
{
var legacy = Path.Combine(_home, ".todo-app");
var root = Path.Combine(_home, ".claudeDo");
Directory.CreateDirectory(legacy);
Directory.CreateDirectory(root);
File.WriteAllText(Path.Combine(root, "todo.db"), "new");
Paths.MigrateLegacyAppDataRoot(_home);
Assert.True(Directory.Exists(legacy));
Assert.Equal("new", File.ReadAllText(Path.Combine(root, "todo.db")));
}
}