70 lines
2.7 KiB
C#
70 lines
2.7 KiB
C#
using System;
|
|
using System.IO;
|
|
using System.Threading.Tasks;
|
|
using Paca.Mobile.Core;
|
|
using Xunit;
|
|
|
|
namespace Paca.Tests.Mobile;
|
|
|
|
public class MobileAdMobInterstitialAndRewardedGateTests
|
|
{
|
|
private static readonly string SolutionRoot = Path.GetFullPath(Path.Combine(AppContext.BaseDirectory, "..", "..", "..", "..", ".."));
|
|
|
|
[Fact]
|
|
public async Task Gate_AdMobWaterfallController_ShowInterstitial_DelegatesToAdapter()
|
|
{
|
|
var directMgr = new MobileAdManager();
|
|
var successAdapter = new MockAdMobAdapter(shouldSucceed: true);
|
|
var controller = new AdMobWaterfallController(successAdapter, directMgr);
|
|
|
|
var result = await controller.ShowInterstitialAsync();
|
|
Assert.True(result);
|
|
|
|
var failureAdapter = new MockAdMobAdapter(shouldSucceed: false);
|
|
var failController = new AdMobWaterfallController(failureAdapter, directMgr);
|
|
var failResult = await failController.ShowInterstitialAsync();
|
|
Assert.False(failResult);
|
|
}
|
|
|
|
[Fact]
|
|
public async Task Gate_AdMobWaterfallController_ShowRewarded_DelegatesToAdapter()
|
|
{
|
|
var directMgr = new MobileAdManager();
|
|
var successAdapter = new MockAdMobAdapter(shouldSucceed: true);
|
|
var controller = new AdMobWaterfallController(successAdapter, directMgr);
|
|
|
|
var result = await controller.ShowRewardedAsync();
|
|
Assert.True(result);
|
|
|
|
var failureAdapter = new MockAdMobAdapter(shouldSucceed: false);
|
|
var failController = new AdMobWaterfallController(failureAdapter, directMgr);
|
|
var failResult = await failController.ShowRewardedAsync();
|
|
Assert.False(failResult);
|
|
}
|
|
|
|
[Fact]
|
|
public async Task Gate_AdMobRewardCoordinator_AutomaticallyGrantsBoost_OnRewardEarned()
|
|
{
|
|
var tokenManager = new RewardedBoostTokenManager();
|
|
Assert.False(tokenManager.IsBoostActive);
|
|
|
|
var mockAdapter = new MockAdMobAdapter(shouldSucceed: true);
|
|
var coordinator = new AdMobRewardCoordinator(mockAdapter, tokenManager);
|
|
|
|
var shown = await coordinator.RequestAndShowRewardAdAsync();
|
|
Assert.True(shown);
|
|
Assert.True(tokenManager.IsBoostActive);
|
|
Assert.True(tokenManager.RemainingBoostTime.TotalMinutes > 50);
|
|
}
|
|
|
|
[Fact]
|
|
public void Gate_AndroidAdMobAdapter_SourceAudit_EnsuresRealRewardEventAndInvocation()
|
|
{
|
|
var adapterPath = Path.Combine(SolutionRoot, "src", "Paca.Mobile", "Platforms", "Android", "AndroidAdMobAdapter.cs");
|
|
Assert.True(File.Exists(adapterPath), $"AndroidAdMobAdapter.cs must exist at {adapterPath}");
|
|
|
|
var code = File.ReadAllText(adapterPath);
|
|
Assert.Contains("public event Action<string, double>? OnUserEarnedReward;", code);
|
|
Assert.Contains("OnUserEarnedReward?.Invoke", code);
|
|
}
|
|
}
|