Ajoute ISBN, tris et nouveautés d'auteur

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
LIMONIER Mathieu
2026-08-20 13:49:08 +02:00
co-authored by Copilot
parent 359f4f59c6
commit 6b8f08ef26
10 changed files with 441 additions and 13 deletions
@@ -150,6 +150,57 @@ public class BnfBibliographieParserTests
}
}
[Fact]
public void Conserve_aussi_la_date_de_la_derniere_edition()
{
var resultat = BnfBibliographieParser.Parser(Fixture.Lire(Werber), "Bernard Werber");
var oeuvre = ServiceBibliographie.Regrouper(resultat)
.First(o => o.NombreEditions > 1
&& o.AnneeDerniereEdition is not null
&& o.Annee is not null);
var cle = MaBibli.Shared.Textes.CleOeuvre.Cle(oeuvre.Titre);
var maximum = resultat.Notices
.Where(n => n.CleTitre == cle)
.Select(n => ServiceBibliographie.AnneeTriable(n.Annee))
.Where(a => a is not null)
.Max();
Assert.Equal(maximum, oeuvre.AnneeDerniereEdition);
Assert.True(oeuvre.AnneeDerniereEdition >= ServiceBibliographie.AnneeTriable(oeuvre.Annee));
}
[Fact]
public void Les_nouveautes_comparent_la_derniere_edition_et_non_le_representant()
{
var anciennes = new OeuvreBibliographie
{
Titre = "Ancienne œuvre",
Annee = "1980",
AnneeDerniereEdition = 2024,
};
var recente = new OeuvreBibliographie
{
Titre = "Nouvelle œuvre",
Annee = "2023",
AnneeDerniereEdition = 2023,
};
var resultat = ServiceBibliographie.FiltrerNouveautes([anciennes, recente], 2023);
Assert.Single(resultat);
Assert.Equal("Ancienne œuvre", resultat[0].Titre);
}
[Theory]
[InlineData(0, 1)]
[InlineData(203, 3)]
[InlineData(1000, 10)]
[InlineData(2692, 10)]
public void La_recherche_de_nouveautes_est_bornee_a_dix_pages(
int annonces, int pages) =>
Assert.Equal(pages, BnfClient.NombrePagesNouveautes(annonces));
[Fact]
public void Une_reponse_vide_ne_fait_pas_echouer_la_lecture()
{