Deux tests sur ConversationId — le lien entre deux tours n'était couvert par rien

Le repli Guid.NewGuid() s'appliquait à chaque appel puisque aucun client n'envoyait
le champ : chaque question formait sa propre conversation en base, y compris deux
questions d'affilée dans le même chat. Les clients l'envoient depuis aujourd'hui,
ces tests fixent les deux branches.

dotnet test : 201 passés, 14 sautés, 0 échec.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Thomas Fransolet 2026-08-13 13:39:32 +02:00
parent 118813af58
commit cfbaefb7f9

View File

@ -140,6 +140,42 @@ namespace ManagerService.Tests.Controllers
Assert.Equal(42, db.Instances.First().AiTokensThisMonth); Assert.Equal(42, db.Instances.First().AiTokensThisMonth);
} }
/// <summary>
/// Deux tours d'une même conversation partagent leur ConversationId — c'est le seul
/// lien entre eux côté serveur, l'historique étant reconstruit par le client.
/// ⚠️ Aucun client ne l'envoyait jusqu'au 2026-08-13 : le repli `Guid.NewGuid()`
/// s'appliquait à chaque appel, donc chaque question formait sa propre conversation.
/// </summary>
[Fact]
public async Task Chat_SameConversationId_LinksBothTurns()
{
using var db = DbContextFactory.Create();
SeedAssistantInstance(db);
var controller = BuildController(db);
var first = MakeRequest("i1");
first.ConversationId = "conv-1";
var second = MakeRequest("i1");
second.ConversationId = "conv-1";
await controller.Chat(first);
await controller.Chat(second);
Assert.Equal(2, db.VisitorQuestions.Count());
Assert.All(db.VisitorQuestions, q => Assert.Equal("conv-1", q.ConversationId));
}
[Fact]
public async Task Chat_NoConversationId_FallsBackToAGeneratedOne()
{
using var db = DbContextFactory.Create();
SeedAssistantInstance(db);
await BuildController(db).Chat(MakeRequest("i1"));
Assert.False(string.IsNullOrWhiteSpace(db.VisitorQuestions.First().ConversationId));
}
private static void SeedAssistantInstance(MyInfoMateDbContext db) private static void SeedAssistantInstance(MyInfoMateDbContext db)
{ {
db.Instances.Add(new Instance db.Instances.Add(new Instance