Show folder names immediately and refresh stale index sizes without walking the whole drive.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
85
tests/Explorer.Application.Tests/FolderStatusTextTests.cs
Normal file
85
tests/Explorer.Application.Tests/FolderStatusTextTests.cs
Normal file
@@ -0,0 +1,85 @@
|
||||
using Explorer.Application;
|
||||
using Explorer.Domain;
|
||||
|
||||
namespace Explorer.Application.Tests;
|
||||
|
||||
public class FolderStatusTextTests
|
||||
{
|
||||
[Fact]
|
||||
public void Empty_folder_is_zero_items()
|
||||
{
|
||||
Assert.Equal("0 items", FolderStatusText.Format([], []));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Folder_totals_use_known_sizes()
|
||||
{
|
||||
var items = new[]
|
||||
{
|
||||
File("a.txt", 100),
|
||||
File("b.txt", 924),
|
||||
Folder("pics", size: 0, SizeKnowledge.Unknown)
|
||||
};
|
||||
|
||||
Assert.Equal("3 items · 1 KB", FolderStatusText.Format(items, []));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Selection_replaces_folder_totals()
|
||||
{
|
||||
var items = new[] { File("a.txt", 100), File("b.txt", 200), File("c.txt", 300) };
|
||||
|
||||
Assert.Equal("1 item selected · 200 B", FolderStatusText.Format(items, [items[1]]));
|
||||
Assert.Equal("2 items selected · 300 B", FolderStatusText.Format(items, [items[0], items[1]]));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Unknown_folder_sizes_are_omitted()
|
||||
{
|
||||
var folders = new[]
|
||||
{
|
||||
Folder("a", 0, SizeKnowledge.Unknown),
|
||||
Folder("b", 0, SizeKnowledge.Unknown)
|
||||
};
|
||||
|
||||
Assert.Equal("2 items", FolderStatusText.Format(folders, []));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Indexed_folder_sizes_are_included()
|
||||
{
|
||||
var items = new[]
|
||||
{
|
||||
Folder("docs", 2_048, SizeKnowledge.Calculated),
|
||||
File("readme.txt", 1_024)
|
||||
};
|
||||
|
||||
Assert.Equal("2 items · 3 KB", FolderStatusText.Format(items, []));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Zero_byte_file_selection_still_shows_size()
|
||||
{
|
||||
var file = File("empty.dat", 0);
|
||||
Assert.Equal("1 item selected · 0 B", FolderStatusText.Format([file], [file]));
|
||||
}
|
||||
|
||||
private static FileSystemItem File(string name, long size)
|
||||
=> new()
|
||||
{
|
||||
FullPath = @"C:\" + name,
|
||||
Name = name,
|
||||
SizeBytes = size,
|
||||
SizeKnowledge = SizeKnowledge.Calculated
|
||||
};
|
||||
|
||||
private static FileSystemItem Folder(string name, long size, SizeKnowledge knowledge)
|
||||
=> new()
|
||||
{
|
||||
FullPath = @"C:\" + name,
|
||||
Name = name,
|
||||
IsDirectory = true,
|
||||
SizeBytes = size,
|
||||
SizeKnowledge = knowledge
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user