Show Git, Cloud, and created date in Details, and hide Free space except on drives.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
59
tests/Explorer.Application.Tests/GitListingOverlayTests.cs
Normal file
59
tests/Explorer.Application.Tests/GitListingOverlayTests.cs
Normal file
@@ -0,0 +1,59 @@
|
||||
using Explorer.Application;
|
||||
using Explorer.Domain;
|
||||
|
||||
namespace Explorer.Application.Tests;
|
||||
|
||||
public class GitListingOverlayTests
|
||||
{
|
||||
[Fact]
|
||||
public void Clean_tracked_file_is_blank()
|
||||
{
|
||||
var status = Status("1 .M N... 100644 100644 100644 a a src/App.cs");
|
||||
Assert.Equal("", GitListingOverlay.ForItem(@"C:\src\README.md", false, @"C:\src", status));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void File_shows_modified_unstaged_and_staged()
|
||||
{
|
||||
var status = Status("""
|
||||
1 .M N... 100644 100644 100644 a a src/App.cs
|
||||
1 M. N... 100644 100644 100644 b b README.md
|
||||
1 MM N... 100644 100644 100644 c c src/Both.cs
|
||||
? notes.md
|
||||
""");
|
||||
Assert.Equal("Modified", GitListingOverlay.ForItem(@"C:\src\src\App.cs", false, @"C:\src", status));
|
||||
Assert.Equal("Staged", GitListingOverlay.ForItem(@"C:\src\README.md", false, @"C:\src", status));
|
||||
Assert.Equal("Staged · Modified", GitListingOverlay.ForItem(@"C:\src\src\Both.cs", false, @"C:\src", status));
|
||||
Assert.Equal("Untracked", GitListingOverlay.ForItem(@"C:\src\notes.md", false, @"C:\src", status));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Folder_summarizes_dirty_children()
|
||||
{
|
||||
var status = Status("""
|
||||
1 .M N... 100644 100644 100644 a a src/App.cs
|
||||
? bin/out.dll
|
||||
""");
|
||||
Assert.Equal("Modified", GitListingOverlay.ForItem(@"C:\src\src", true, @"C:\src", status));
|
||||
Assert.Equal("Untracked", GitListingOverlay.ForItem(@"C:\src\bin", true, @"C:\src", status));
|
||||
Assert.Equal("", GitListingOverlay.ForItem(@"C:\src\docs", true, @"C:\src", status));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Nested_repo_uses_compact_badge()
|
||||
{
|
||||
var status = Status("1 .M N... 100644 100644 100644 a a App.cs");
|
||||
Assert.Equal("main · 1 modified", GitListingOverlay.ForNestedRepo(status));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Outside_the_repo_is_blank()
|
||||
{
|
||||
var status = Status("1 .M N... 100644 100644 100644 a a App.cs");
|
||||
Assert.Equal("", GitListingOverlay.ForItem(@"D:\other\App.cs", false, @"C:\src", status));
|
||||
}
|
||||
|
||||
private static GitStatus Status(string body)
|
||||
=> GitPorcelainParser.Parse("# branch.head main\n" + body, @"C:\src")
|
||||
?? throw new InvalidOperationException("parse");
|
||||
}
|
||||
Reference in New Issue
Block a user