Files
mabibli/MaBibli.Tests/ServiceBibliographieMasquageTests.cs
Mathieu LimonierandClaude Opus 5 6a6d745af4 MaBibli 1.0.0
Gestion de bibliothèque personnelle auto-hébergée : catalogue, prêts,
scan de code-barres, consultation hors-ligne.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-22 22:36:16 +02:00

47 lines
1.5 KiB
C#

using MaBibli.Api.Data;
using MaBibli.Api.Services.Catalogue;
using MaBibli.Shared.Textes;
using Microsoft.Data.Sqlite;
using Microsoft.EntityFrameworkCore;
namespace MaBibli.Tests;
public sealed class ServiceBibliographieMasquageTests : IDisposable
{
private readonly SqliteConnection _connexion = new("Data Source=:memory:");
private readonly MaBibliDbContext _db;
private readonly ServiceBibliographie _service;
public ServiceBibliographieMasquageTests()
{
_connexion.Open();
var options = new DbContextOptionsBuilder<MaBibliDbContext>()
.UseSqlite(_connexion)
.Options;
_db = new MaBibliDbContext(options);
_db.Database.EnsureCreated();
_service = new ServiceBibliographie(_db, null!, new ServiceAuteurs(_db));
}
[Fact]
public async Task Le_masquage_est_personnel_et_idempotent()
{
const int auteurId = 42;
Assert.True(await _service.MasquerAsync(auteurId, "L'Œuvre", "mathieu"));
Assert.True(await _service.MasquerAsync(auteurId, "L'oeuvre", "mathieu"));
var ligne = await _db.BibliographiesMasquees.SingleAsync();
Assert.Equal(CleOeuvre.Cle("L'Œuvre"), ligne.TitreNormalise);
Assert.False(await _service.DemasquerAsync(auteurId, "L'Œuvre", "camille"));
Assert.True(await _service.DemasquerAsync(auteurId, "L'oeuvre", "mathieu"));
Assert.Empty(await _db.BibliographiesMasquees.ToListAsync());
}
public void Dispose()
{
_db.Dispose();
_connexion.Dispose();
}
}