using ClawdDotNet.Core.Tasks;
using Shouldly;

namespace ClawdDotNet.Core.Tests.Tasks;

/// <summary>
/// Der Assignee bestimmt, wie eine fällige Aufgabe zu einem Lauf wird (T7). Die Deutung
/// muss eindeutig sein — davon hängt ab, ob ein Agent frisch oder mit Kontext läuft.
/// </summary>
public sealed class TaskAssigneeTests
{
    [Theory]
    [InlineData("@human", TaskAssigneeKind.Human)]
    [InlineData("@new", TaskAssigneeKind.New)]
    [InlineData("@new:crawler", TaskAssigneeKind.New)]
    [InlineData("@crawler", TaskAssigneeKind.Agent)]
    public void Die_Art_wird_richtig_erkannt(string assignee, TaskAssigneeKind expected)
        => TaskAssignee.KindOf(assignee).ShouldBe(expected);

    [Theory]
    [InlineData("@crawler", "crawler")]
    [InlineData("@new:crawler", "crawler")]
    [InlineData("@new", "")]     // frischer Lauf ohne benannten Agenten
    [InlineData("@human", "")]
    public void Die_Agent_Id_wird_richtig_herausgezogen(string assignee, string expected)
        => TaskAssignee.AgentId(assignee).ShouldBe(expected);
}
