using MaBibli.Shared.Dtos;

namespace MaBibli.Tests;

public class TotauxSeriesTests
{
    [Fact]
    public void Les_totaux_sont_sommes_recursivement()
    {
        var feuilles = new[]
        {
            new SerieDto
            {
                Id = 2, Titre = "Une", SerieParenteId = 1,
                Elements = [new ElementSerieDto { Id = 20, Titre = "Possédé", LivreId = 5 }]
            },
            new SerieDto
            {
                Id = 3, Titre = "Deux", SerieParenteId = 1,
                Elements = [new ElementSerieDto { Id = 30, Titre = "Manquant" }]
            },
            new SerieDto { Id = 1, Titre = "Cycle" },
        };

        var totaux = TotauxSeries.Calculer(feuilles);

        Assert.Equal((1, 2), totaux[1]);
        Assert.Equal((1, 1), totaux[2]);
        Assert.Equal((0, 1), totaux[3]);
    }

    [Fact]
    public void Une_boucle_dans_les_donnees_ne_fait_pas_boucler_le_calcul()
    {
        var series = new[]
        {
            new SerieDto { Id = 1, Titre = "Un", SerieParenteId = 2 },
            new SerieDto
            {
                Id = 2, Titre = "Deux", SerieParenteId = 1,
                Elements = [new ElementSerieDto { Id = 20, Titre = "Tome" }]
            },
        };

        var totaux = TotauxSeries.Calculer(series);

        Assert.Equal((0, 1), totaux[1]);
        Assert.Equal((0, 1), totaux[2]);
    }
}
