Public Access
Implement meeting assistant v1
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
using MeetingAssistant.MeetingNotes;
|
||||
using MeetingAssistant.Summary;
|
||||
using Microsoft.Extensions.Options;
|
||||
|
||||
namespace MeetingAssistant.Tests;
|
||||
|
||||
public sealed class MeetingSummaryFailureWriterTests
|
||||
{
|
||||
[Fact]
|
||||
public async Task WriterOverwritesSummaryWithFailureDetails()
|
||||
{
|
||||
var root = Path.Combine(Path.GetTempPath(), "meeting-assistant-tests", Guid.NewGuid().ToString("N"));
|
||||
var artifacts = new MeetingSessionArtifacts(
|
||||
Path.Combine(root, "Notes", "meeting.md"),
|
||||
Path.Combine(root, "Transcripts", "transcript.md"),
|
||||
Path.Combine(root, "Assistant Context", "context.md"),
|
||||
Path.Combine(root, "Summaries", "summary.md"));
|
||||
Directory.CreateDirectory(Path.GetDirectoryName(artifacts.SummaryPath)!);
|
||||
Directory.CreateDirectory(Path.GetDirectoryName(artifacts.MeetingNotePath)!);
|
||||
await File.WriteAllTextAsync(
|
||||
artifacts.MeetingNotePath,
|
||||
"""
|
||||
---
|
||||
title: Failure Meeting
|
||||
start_time: "2026-05-20T10:00:00.0000000+02:00"
|
||||
end_time: "2026-05-20T10:30:00.0000000+02:00"
|
||||
attendees: []
|
||||
projects: []
|
||||
transcript: "[[../Transcripts/transcript|Transcript]]"
|
||||
assistant_context: "[[../Assistant Context/context|Assistant Context]]"
|
||||
summary: "[[../Summaries/summary|Summary]]"
|
||||
---
|
||||
""");
|
||||
await File.WriteAllTextAsync(artifacts.SummaryPath, "# Old Summary");
|
||||
var writer = new MeetingSummaryFailureWriter(
|
||||
Options.Create(new MeetingAssistantOptions
|
||||
{
|
||||
Api = new ApiOptions { PublicBaseUrl = "http://localhost:5090" }
|
||||
}),
|
||||
new MarkdownMeetingNoteStore(
|
||||
Options.Create(new MeetingAssistantOptions
|
||||
{
|
||||
Vault = new VaultOptions { MeetingNotesFolder = Path.GetDirectoryName(artifacts.MeetingNotePath)! }
|
||||
}),
|
||||
Microsoft.Extensions.Logging.Abstractions.NullLogger<MarkdownMeetingNoteStore>.Instance));
|
||||
|
||||
var result = await writer.WriteAsync(
|
||||
artifacts,
|
||||
new InvalidOperationException("LiteLLM Responses request failed with 500"),
|
||||
CancellationToken.None);
|
||||
|
||||
var content = await File.ReadAllTextAsync(artifacts.SummaryPath);
|
||||
Assert.False(result.Succeeded);
|
||||
Assert.Equal(artifacts.SummaryPath, result.SummaryPath);
|
||||
Assert.Contains("Summary Generation Failed", content);
|
||||
Assert.Contains("title: Failure Meeting", content);
|
||||
Assert.Contains("meeting: \"[[../Notes/meeting|Meeting Note]]\"", content);
|
||||
Assert.Contains(
|
||||
"[Retry summary generation](http://localhost:5090/meetings/summary/retry?summaryPath=summary.md)",
|
||||
content);
|
||||
Assert.Contains("LiteLLM Responses request failed with 500", content);
|
||||
Assert.Contains(artifacts.TranscriptPath, content);
|
||||
Assert.DoesNotContain("# Old Summary", content);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user