using System; using Paca.Core.Social; using Xunit; namespace Paca.Tests.Core; /// /// 제품 내 확산(공유) 루프 게이트: 다운로드 완료 화면에서 결과물을 공유하면 /// UTM 이 붙은 랜딩 URL 이 함께 퍼져 유입 루프가 닫히는지 검증한다. /// public class ShareLoopGateTests { [Fact] public void Gate219_ShareCardBuilder_BuildsUtmTaggedLandingUrlAndShareText() { var url = ShareCardBuilder.BuildShareUrl("share_card"); Assert.Contains("https://paca.chanpaca.net/", url); Assert.Contains("utm_source=paca_app", url); Assert.Contains("utm_medium=share_card", url); var text = ShareCardBuilder.BuildShareText("Big Buck Bunny.mp4"); Assert.Contains("Big Buck Bunny.mp4", text); Assert.Contains(ShareCardBuilder.BuildShareUrl(), text); Assert.Contains("미디어 브라우저", text); } [Fact] public void Gate219_ShareCardBuilder_HandlesEmptyTitleAndBuildsQrTitle() { var text = ShareCardBuilder.BuildShareText(" "); Assert.Contains("https://paca.chanpaca.net/", text); Assert.DoesNotContain("''", text); var qrTitle = ShareCardBuilder.BuildQrTitle(""); Assert.Contains("Paca", qrTitle); var qrTitle2 = ShareCardBuilder.BuildQrTitle("clip.mp4"); Assert.Contains("clip.mp4", qrTitle2); } [Fact] public void Gate219_DownloadShelf_DeclaresShareButtonWiredToShareCardBuilder() { var xaml = SourceTree.MainWindowXaml; Assert.Contains("DownloadShelfShareBtn", xaml); Assert.Contains("Click=\"DownloadShelfShareBtn_Click\"", xaml); Assert.Contains("AutomationProperties.Name=\"다운로드 결과 공유\"", xaml); var cs = SourceTree.MainWindowCs; Assert.Contains("DownloadShelfShareBtn_Click", cs); Assert.Contains("ShareCardBuilder", cs); } }