feat(ads/seo/release): v1.2.0 with live Google Ads, isolated ad profile, ads.txt, and SEO/AEO/GEO optimization

This commit is contained in:
Yun Chan 2026-09-14 00:39:44 +09:00
parent a88aafa1e5
commit 0e568f1f0a
975 changed files with 130593 additions and 16783 deletions

View file

@ -0,0 +1,66 @@
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);
}
}