releases/tests/Paca.Tests/Mobile/MobileShareTextExtractorGateTests.cs

44 lines
1.5 KiB
C#

using System;
using Paca.Mobile.Core;
using Xunit;
namespace Paca.Tests.Mobile;
public class MobileShareTextExtractorGateTests
{
[Fact]
public void Gate253_MobileShareTextExtractor_ExtractsCleanUrl_FromMessyShareText()
{
var shared = "Watch \"Awesome Video\" on YouTube: https://youtu.be/dQw4w9WgXcQ?si=abcdef12345";
var extracted = MobileShareTextExtractor.ExtractMediaUrl(shared);
Assert.Equal("https://youtu.be/dQw4w9WgXcQ", extracted);
}
[Fact]
public void Gate254_MobileShareTextExtractor_HandlesMultipleUrls_PicksFirstValidMediaUrl()
{
var shared = "Read info at https://google.com and watch https://tiktok.com/@user/video/9876543210";
var extracted = MobileShareTextExtractor.ExtractMediaUrl(shared);
Assert.Equal("https://tiktok.com/@user/video/9876543210", extracted);
}
[Fact]
public void Gate255_MobileShareTextExtractor_ReturnsNull_WhenNoValidUrlPresent()
{
var shared = "Just plain message from a friend without any hyperlink";
var extracted = MobileShareTextExtractor.ExtractMediaUrl(shared);
Assert.Null(extracted);
}
[Fact]
public void Gate256_MobileShareTextExtractor_StripsTrackingQueryParameters_PreservesVideoId()
{
var url = "https://www.youtube.com/watch?v=dQw4w9WgXcQ&utm_source=twitter&si=123&fbclid=xyz";
var extracted = MobileShareTextExtractor.ExtractMediaUrl(url);
Assert.Equal("https://www.youtube.com/watch?v=dQw4w9WgXcQ", extracted);
}
}