Files
meeting-assistant/MeetingAssistant.Tests/LaunchProfileOptionsProviderTests.cs
T
2026-05-27 12:55:17 +02:00

73 lines
3.0 KiB
C#

using MeetingAssistant.LaunchProfiles;
using Microsoft.Extensions.Configuration;
namespace MeetingAssistant.Tests;
public sealed class LaunchProfileOptionsProviderTests
{
[Fact]
public void DefaultProfileUsesRootMeetingAssistantConfiguration()
{
var provider = CreateProvider(new Dictionary<string, string?>
{
["MeetingAssistant:Hotkey:Toggle"] = "Ctrl+Alt+M",
["MeetingAssistant:Recording:TranscriptionProvider"] = "azure-speech",
["MeetingAssistant:AzureSpeech:Language"] = "de-DE"
});
var profile = provider.GetRequiredProfile(null);
Assert.Equal("default", profile.Name);
Assert.Equal("Ctrl+Alt+M", profile.Options.Hotkey.Toggle);
Assert.Equal("azure-speech", profile.Options.Recording.TranscriptionProvider);
Assert.Equal("de-DE", profile.Options.AzureSpeech.Language);
}
[Fact]
public void NamedProfileMergesOverrideOntoDefaultConfiguration()
{
var provider = CreateProvider(new Dictionary<string, string?>
{
["MeetingAssistant:Hotkey:Toggle"] = "Ctrl+Alt+M",
["MeetingAssistant:Recording:TranscriptionProvider"] = "azure-speech",
["MeetingAssistant:AzureSpeech:Region"] = "germanywestcentral",
["MeetingAssistant:AzureSpeech:Language"] = "de-DE",
["MeetingAssistant:AzureSpeech:AutoDetectLanguages:0"] = "de-DE",
["MeetingAssistant:LaunchProfiles:english:Hotkey:Toggle"] = "Ctrl+Alt+E",
["MeetingAssistant:LaunchProfiles:english:AzureSpeech:Language"] = "en-US",
["MeetingAssistant:LaunchProfiles:english:AzureSpeech:AutoDetectLanguages:0"] = "en-US"
});
var profile = provider.GetRequiredProfile("english");
Assert.Equal("english", profile.Name);
Assert.Equal("Ctrl+Alt+E", profile.Options.Hotkey.Toggle);
Assert.Equal("azure-speech", profile.Options.Recording.TranscriptionProvider);
Assert.Equal("germanywestcentral", profile.Options.AzureSpeech.Region);
Assert.Equal("en-US", profile.Options.AzureSpeech.Language);
Assert.Equal(["en-US"], profile.Options.AzureSpeech.AutoDetectLanguages);
}
[Fact]
public void DuplicateProfileHotkeysAreRejected()
{
var provider = CreateProvider(new Dictionary<string, string?>
{
["MeetingAssistant:Hotkey:Toggle"] = "Ctrl+Alt+M",
["MeetingAssistant:LaunchProfiles:english:Hotkey:Toggle"] = "Ctrl+Alt+M"
});
var exception = Assert.Throws<InvalidOperationException>(() => provider.GetHotkeys());
Assert.Contains("Ctrl+Alt+M", exception.Message, StringComparison.OrdinalIgnoreCase);
}
private static ConfigurationLaunchProfileOptionsProvider CreateProvider(
IReadOnlyDictionary<string, string?> values)
{
var configuration = new ConfigurationBuilder()
.AddInMemoryCollection(values)
.Build();
return new ConfigurationLaunchProfileOptionsProvider(configuration);
}
}