< Summary

Information
Class: Chronicis.Api.Services.ExternalLinks.ArmorCategoryStrategy
Assembly: Chronicis.Api
File(s): /home/runner/work/chronicis/chronicis/src/Chronicis.Api/Services/ExternalLinks/ArmorCategoryStrategy.cs
Line coverage
100%
Covered lines: 32
Uncovered lines: 0
Coverable lines: 32
Total lines: 55
Line coverage: 100%
Branch coverage
100%
Covered branches: 20
Total branches: 20
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
get_CategoryKey()100%11100%
get_Endpoint()100%11100%
get_DisplayName()100%11100%
get_Icon()100%11100%
BuildMarkdown(...)100%1616100%
BuildSubtitle(...)100%44100%

File(s)

/home/runner/work/chronicis/chronicis/src/Chronicis.Api/Services/ExternalLinks/ArmorCategoryStrategy.cs

#LineLine coverage
 1using System.Text;
 2using System.Text.Json;
 3using static Chronicis.Api.Services.ExternalLinks.Open5eJsonHelpers;
 4
 5namespace Chronicis.Api.Services.ExternalLinks;
 6
 7public sealed class ArmorCategoryStrategy : Open5eCategoryStrategyBase
 8{
 109    public override string CategoryKey => "armor";
 210    public override string Endpoint => "armor";
 611    public override string DisplayName => "Armor";
 212    public override string? Icon => "🛡️";
 13
 14    public override string BuildMarkdown(JsonElement root, string title)
 15    {
 616        var sb = new StringBuilder();
 617        sb.AppendLine($"# {title}");
 618        sb.AppendLine();
 19
 620        var category = GetString(root, "category");
 621        if (!string.IsNullOrEmpty(category))
 22        {
 223            sb.AppendLine($"*{category}*");
 224            sb.AppendLine();
 25        }
 26
 627        var ac = GetString(root, "base_ac") ?? GetString(root, "ac_string");
 628        var cost = GetString(root, "cost");
 629        var weight = GetString(root, "weight");
 630        var strength = GetString(root, "strength_requirement");
 631        var stealth = GetString(root, "stealth_disadvantage");
 32
 633        if (!string.IsNullOrEmpty(ac))
 434            sb.AppendLine($"**Armor Class:** {ac}");
 635        if (!string.IsNullOrEmpty(cost))
 136            sb.AppendLine($"**Cost:** {cost}");
 637        if (!string.IsNullOrEmpty(weight))
 138            sb.AppendLine($"**Weight:** {weight}");
 639        if (!string.IsNullOrEmpty(strength))
 140            sb.AppendLine($"**Strength Required:** {strength}");
 641        if (stealth == "true" || stealth == "True")
 242            sb.AppendLine("**Stealth:** Disadvantage");
 43
 644        return sb.ToString().Trim();
 45    }
 46
 47    public override string BuildSubtitle(JsonElement item)
 48    {
 349        var parts = new List<string> { DisplayName };
 350        var categoryRange = GetString(item, "category_range") ?? GetString(item, "category");
 351        if (!string.IsNullOrEmpty(categoryRange))
 252            parts.Add(categoryRange);
 353        return string.Join(" • ", parts);
 54    }
 55}