using System; using Paca.App.ViewModels; using Xunit; namespace Paca.Tests.App; public class QuickCaptureHudGateTests { [Fact] public void Gate223_QuickCaptureHudViewModel_Initializes_WithDetectedUrl_AndExtractsDomain() { var url = "https://www.youtube.com/watch?v=dQw4w9WgXcQ"; var vm = new QuickCaptureHudViewModel(url); Assert.Equal(url, vm.TargetUrl); Assert.Equal("youtube.com", vm.DomainLabel); Assert.Equal("mp4", vm.SelectedFormat); Assert.True(vm.IsVisible); } [Fact] public void Gate224_QuickCaptureHudViewModel_DownloadCommand_TriggersOnDownloadRequested() { var url = "https://twitter.com/user/status/123456789"; var vm = new QuickCaptureHudViewModel(url); string? requestedUrl = null; string? requestedFormat = null; vm.DownloadRequested += (u, f) => { requestedUrl = u; requestedFormat = f; }; vm.DownloadCommand.Execute(null); Assert.Equal(url, requestedUrl); Assert.Equal("mp4", requestedFormat); Assert.False(vm.IsVisible); // Dismissed upon action } [Fact] public void Gate225_QuickCaptureHudViewModel_SendToPhoneCommand_TriggersOnSendToPhoneRequested() { var url = "https://instagram.com/reel/abcdef"; var vm = new QuickCaptureHudViewModel(url); string? sentUrl = null; vm.SendToPhoneRequested += u => sentUrl = u; vm.SendToPhoneCommand.Execute(null); Assert.Equal(url, sentUrl); Assert.False(vm.IsVisible); // Dismissed upon action } [Fact] public void Gate226_QuickCaptureHudViewModel_Dismiss_ClosesHud() { var vm = new QuickCaptureHudViewModel("https://test.com/video"); Assert.True(vm.IsVisible); vm.DismissCommand.Execute(null); Assert.False(vm.IsVisible); } }