< Summary

Information
Class: Chronicis.Api.Services.ExternalLinks.MagicItemCategoryStrategy
Assembly: Chronicis.Api
File(s): /home/runner/work/chronicis/chronicis/src/Chronicis.Api/Services/ExternalLinks/MagicItemCategoryStrategy.cs
Line coverage
100%
Covered lines: 29
Uncovered lines: 0
Coverable lines: 29
Total lines: 55
Line coverage: 100%
Branch coverage
100%
Covered branches: 12
Total branches: 12
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%
get_WebCategory()100%11100%
BuildMarkdown(...)100%88100%
BuildSubtitle(...)100%44100%

File(s)

/home/runner/work/chronicis/chronicis/src/Chronicis.Api/Services/ExternalLinks/MagicItemCategoryStrategy.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 MagicItemCategoryStrategy : Open5eCategoryStrategyBase
 8{
 89    public override string CategoryKey => "magicitems";
 210    public override string Endpoint => "items";
 511    public override string DisplayName => "Magic Item";
 212    public override string? Icon => "💎";
 213    public override string WebCategory => "magic-items";
 14
 15    public override string BuildMarkdown(JsonElement root, string title)
 16    {
 417        var sb = new StringBuilder();
 418        sb.AppendLine($"# {title}");
 419        sb.AppendLine();
 20
 421        var type = GetString(root, "type");
 422        var rarity = GetString(root, "rarity");
 423        var attunement = GetString(root, "requires_attunement");
 24
 425        var subtitle = string.Join(", ", new[] { type, rarity }.Where(s => !string.IsNullOrEmpty(s)));
 426        if (!string.IsNullOrEmpty(attunement) && !string.Equals(attunement, "false", StringComparison.OrdinalIgnoreCase)
 127            subtitle += $" ({attunement})";
 28
 429        if (!string.IsNullOrEmpty(subtitle))
 30        {
 331            sb.AppendLine($"*{subtitle}*");
 332            sb.AppendLine();
 33        }
 34
 435        var desc = GetString(root, "desc");
 436        if (!string.IsNullOrEmpty(desc))
 437            sb.AppendLine(desc);
 38
 439        return sb.ToString().Trim();
 40    }
 41
 42    public override string BuildSubtitle(JsonElement item)
 43    {
 244        var parts = new List<string> { DisplayName };
 45
 246        var rarity = GetString(item, "rarity");
 247        var itemType = GetString(item, "type");
 248        if (!string.IsNullOrEmpty(rarity))
 149            parts.Add(rarity);
 250        if (!string.IsNullOrEmpty(itemType))
 151            parts.Add(itemType);
 52
 253        return string.Join(" • ", parts);
 54    }
 55}