Paths.MigrateLegacyAppDataRoot war ungetestet: Verschieben von ~/.todo-app nach ~/.claudeDo, Pfad-Rewrite in den Config-Dateien und der No-Op-Fall.
49 lines
1.7 KiB
C#
49 lines
1.7 KiB
C#
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")));
|
|
}
|
|
}
|