71 lines
2.6 KiB
C#
71 lines
2.6 KiB
C#
using System;
|
|
using Microsoft.Data.Sqlite;
|
|
using Xunit;
|
|
using ytLive.ViewModels;
|
|
|
|
namespace ytLive.Tests;
|
|
|
|
/// <summary>
|
|
/// The About overlay is the in-app creator hub: it opens from the real window,
|
|
/// and its licensing sub-panel surfaces the full THIRD-PARTY-NOTICES.txt
|
|
/// in-app (scrolling text, never the OS viewer / Notepad). Drives the real VM
|
|
/// through the real window — same real-App + temp-DB pattern as the round-clip
|
|
/// and source-naming tests.
|
|
/// </summary>
|
|
[Collection("RealApp")]
|
|
public sealed class AboutHubTests
|
|
{
|
|
private readonly RealAppHost _app;
|
|
|
|
public AboutHubTests(RealAppHost app)
|
|
{
|
|
_app = app;
|
|
}
|
|
|
|
[Fact]
|
|
public void About_Opens_InApp_Licensing_Loads_Shipped_Notices()
|
|
{
|
|
_app.Run(Run);
|
|
}
|
|
|
|
private void Run()
|
|
{
|
|
var tempDb = System.IO.Path.Combine(System.IO.Path.GetTempPath(), $"ytLlive-about-{Guid.NewGuid():N}.db");
|
|
MainViewModel.LayoutPathOverride = tempDb;
|
|
var window = new MainWindow();
|
|
var vm = (MainViewModel)window.DataContext;
|
|
try
|
|
{
|
|
// About hub opens (the wordmark / gear menu entry point).
|
|
vm.OpenAboutCommand.Execute(null);
|
|
Assert.True(vm.IsAboutOpen);
|
|
Assert.False(vm.IsLicensesOpen);
|
|
|
|
// The hub links resolve to real destinations (channel + mastodon +
|
|
// coffee are live; premium is the tabled billing seam).
|
|
Assert.Equal("https://youtube.com/@llamachileshop", MainViewModel.ChannelUrl);
|
|
Assert.Equal("https://mastodon.llamachile.tube/@gramps", MainViewModel.MastodonUrl);
|
|
Assert.Equal("https://buymeacoffee.com/llamachiley", MainViewModel.CoffeeUrl);
|
|
|
|
// The licensing panel loads the full shipped notices text in-app.
|
|
vm.OpenLicensesCommand.Execute(null);
|
|
Assert.True(vm.IsLicensesOpen);
|
|
Assert.False(string.IsNullOrWhiteSpace(vm.LicensesText));
|
|
Assert.Contains("Third-Party Notices", vm.LicensesText, StringComparison.OrdinalIgnoreCase);
|
|
Assert.Contains("LGPL", vm.LicensesText, StringComparison.OrdinalIgnoreCase);
|
|
|
|
// Back returns to the hub view (code-behind click handler path is
|
|
// equivalent; here we assert the VM contract the handler uses).
|
|
vm.IsLicensesOpen = false;
|
|
Assert.True(vm.IsAboutOpen);
|
|
}
|
|
finally
|
|
{
|
|
window.Close();
|
|
MainViewModel.LayoutPathOverride = null;
|
|
SqliteConnection.ClearAllPools();
|
|
try { System.IO.File.Delete(tempDb); } catch { /* best-effort cleanup */ }
|
|
}
|
|
}
|
|
}
|