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:
parent
118813af58
commit
cfbaefb7f9
@ -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
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user