< Summary

Information
Class: Chronicis.Api.Services.ExternalLinks.WeaponCategoryStrategy
Assembly: Chronicis.Api
File(s): /home/runner/work/chronicis/chronicis/src/Chronicis.Api/Services/ExternalLinks/WeaponCategoryStrategy.cs
Line coverage
100%
Covered lines: 30
Uncovered lines: 0
Coverable lines: 30
Total lines: 54
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/WeaponCategoryStrategy.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 WeaponCategoryStrategy : Open5eCategoryStrategyBase
 8{
 109    public override string CategoryKey => "weapons";
 210    public override string Endpoint => "weapons";
 611    public override string DisplayName => "Weapon";
 212    public override string? Icon => "🗡️";
 13
 14    public override string BuildMarkdown(JsonElement root, string title)
 15    {
 516        var sb = new StringBuilder();
 517        sb.AppendLine($"# {title}");
 518        sb.AppendLine();
 19
 520        var category = GetString(root, "category") ?? GetString(root, "category_range");
 521        if (!string.IsNullOrEmpty(category))
 22        {
 323            sb.AppendLine($"*{category}*");
 324            sb.AppendLine();
 25        }
 26
 527        var damage = GetString(root, "damage_dice") ?? GetString(root, "damage");
 528        var damageType = GetString(root, "damage_type");
 529        var cost = GetString(root, "cost");
 530        var weight = GetString(root, "weight");
 31
 532        if (!string.IsNullOrEmpty(damage))
 533            sb.AppendLine($"**Damage:** {damage}{(!string.IsNullOrEmpty(damageType) ? $" {damageType}" : "")}");
 534        if (!string.IsNullOrEmpty(cost))
 135            sb.AppendLine($"**Cost:** {cost}");
 536        if (!string.IsNullOrEmpty(weight))
 137            sb.AppendLine($"**Weight:** {weight}");
 38
 539        var properties = GetStringArray(root, "properties");
 540        if (properties.Count > 0)
 141            sb.AppendLine($"**Properties:** {string.Join(", ", properties)}");
 42
 543        return sb.ToString().Trim();
 44    }
 45
 46    public override string BuildSubtitle(JsonElement item)
 47    {
 348        var parts = new List<string> { DisplayName };
 349        var categoryRange = GetString(item, "category_range") ?? GetString(item, "category");
 350        if (!string.IsNullOrEmpty(categoryRange))
 251            parts.Add(categoryRange);
 352        return string.Join(" • ", parts);
 53    }
 54}