39 lines
1.0 KiB
C#
39 lines
1.0 KiB
C#
using ClaudeDo.Localization;
|
|
|
|
namespace ClaudeDo.Localization.Tests;
|
|
|
|
public class LocaleJsonTests
|
|
{
|
|
private const string Sample = """
|
|
{
|
|
"metadata": { "code": "en", "name": "English" },
|
|
"settings": { "save": "Save", "general": { "model": "Model" } },
|
|
"tasks": { "addPlaceholder": "Add a task" }
|
|
}
|
|
""";
|
|
|
|
[Fact]
|
|
public void Parse_reads_metadata()
|
|
{
|
|
var f = LocaleJson.Parse(Sample);
|
|
Assert.Equal("en", f.Code);
|
|
Assert.Equal("English", f.Name);
|
|
}
|
|
|
|
[Fact]
|
|
public void Parse_flattens_nested_keys_to_dot_paths()
|
|
{
|
|
var f = LocaleJson.Parse(Sample);
|
|
Assert.Equal("Save", f.Strings["settings.save"]);
|
|
Assert.Equal("Model", f.Strings["settings.general.model"]);
|
|
Assert.Equal("Add a task", f.Strings["tasks.addPlaceholder"]);
|
|
}
|
|
|
|
[Fact]
|
|
public void Parse_excludes_metadata_from_strings()
|
|
{
|
|
var f = LocaleJson.Parse(Sample);
|
|
Assert.False(f.Strings.ContainsKey("metadata.code"));
|
|
}
|
|
}
|