using System.IO; using ClaudeDo.Localization; using ClaudeDo.Ui.Localization; using ClaudeDo.Ui.ViewModels.Modals; namespace ClaudeDo.Ui.Tests.ViewModels; public class DiffModalViewModelTests { public DiffModalViewModelTests() { var dir = AppContext.BaseDirectory; while (dir is not null && !Directory.Exists(Path.Combine(dir, "src", "ClaudeDo.Localization", "locales"))) dir = Path.GetDirectoryName(dir); Loc.Current = new Localizer( LocaleStore.Load(Path.Combine(dir!, "src", "ClaudeDo.Localization", "locales")), "en"); } [Fact] public async Task LoadAsync_CommitRange_NullHeadCommit_ShowsUnavailableState() { var vm = new DiffModalViewModel(null!) { WorktreePath = "/some/repo", BaseRef = "abc123", HeadCommit = null, FromCommitRange = true, }; await vm.LoadAsync(); Assert.Empty(vm.Files); Assert.NotNull(vm.StatusMessage); Assert.Contains("no longer available", vm.StatusMessage, StringComparison.OrdinalIgnoreCase); } [Fact] public async Task LoadAsync_CommitRange_NullBaseRef_ShowsUnavailableState() { var vm = new DiffModalViewModel(null!) { WorktreePath = "/some/repo", BaseRef = null, HeadCommit = "def456", FromCommitRange = true, }; await vm.LoadAsync(); Assert.Empty(vm.Files); Assert.NotNull(vm.StatusMessage); Assert.Contains("no longer available", vm.StatusMessage, StringComparison.OrdinalIgnoreCase); } }