Files

49 lines
1.8 KiB
C#

namespace Tests.Pages.BuildCalculator;
public class ArmyComponent
{
private readonly Website _website;
public ArmyComponent(Website website) => _website = website;
public ILocator ArmyView => _website.Locator(".armyView");
public ILocator DisplayValue(string label) =>
_website.Locator(".displayContainer").Filter(new() { HasText = label }).Locator(".displayContent");
public ILocator ArmyCards => ArmyView.Locator(".armyCard");
public async Task<string> GetArmyCompletedAtAsync() =>
(await DisplayValue("Army Completed At").TextContentAsync())?.Trim() ?? "";
public async Task<string> GetArmyAttackingAtAsync() =>
(await DisplayValue("Army Attacking At").TextContentAsync())?.Trim() ?? "";
public async Task<IReadOnlyList<string>> GetArmyUnitNamesAsync()
{
var cards = await ArmyCards.AllAsync();
var names = new List<string>();
foreach (var card in cards)
{
var text = (await card.InnerTextAsync()).Trim();
var match = System.Text.RegularExpressions.Regex.Match(text, @"\d+x\s*(.+)");
names.Add(match.Success ? match.Groups[1].Value.Trim() : text);
}
return names;
}
public async Task<IReadOnlyList<(string Name, int Count)>> GetArmyUnitCountsAsync()
{
var cards = await ArmyCards.AllAsync();
var counts = new List<(string, int)>();
foreach (var card in cards)
{
var countEl = card.Locator(".armyCount");
var nameEl = card.Locator("div").Last;
var count = (await countEl.TextContentAsync())?.Replace("x", "").Trim() ?? "0";
var name = (await nameEl.TextContentAsync())?.Trim() ?? "";
counts.Add((name, int.Parse(count)));
}
return counts;
}
}