22
33import static org .junit .jupiter .api .Assertions .assertEquals ;
44import static org .mockito .ArgumentMatchers .any ;
5+ import static org .mockito .Mockito .atMostOnce ;
56import static org .mockito .Mockito .lenient ;
67import static org .mockito .Mockito .mock ;
78import static org .mockito .Mockito .reset ;
4243 */
4344@ ExtendWith (MockitoExtension .class )
4445public class AdMobTest {
46+
4547 @ Mock
4648 Context mockedContext ;
4749
@@ -62,7 +64,6 @@ public void beforeEach() {
6264
6365 sut =
6466 new AdMob () {
65-
6667 @ Override
6768 public Context getContext () {
6869 return mockedContext ;
@@ -88,6 +89,7 @@ public void afterEach() {
8889 @ Nested
8990 @ DisplayName ("Initialize()" )
9091 class Initialize {
92+
9193 MockedStatic <MobileAds > mobileAdsMockedStatic ;
9294 JSArray testingDevices ;
9395
@@ -151,6 +153,7 @@ public void bannerExecutorInitialize() {
151153 @ Nested
152154 @ DisplayName ("Ads Creation" )
153155 class AdsCreation {
156+
154157 AdOptions adOptionsWithNpaTrue = new AdOptions .TesterAdOptionsBuilder ().setNpa (true ).build ();
155158
156159 MockedStatic <MobileAds > mobileAdsMockedStatic ;
@@ -218,6 +221,20 @@ void prepareInterstitial() {
218221 }
219222 }
220223
224+ @ Test
225+ @ DisplayName ("Interstitial does not initialize the same add two times" )
226+ void prepareInterstitialJustOneTime () {
227+ try (MockedConstruction <InterstitialAd > interstitialAdMockedConstruction = Mockito .mockConstruction (InterstitialAd .class )) {
228+ when (adOptionsFactoryMock .createInterstitialOptions (any ())).thenReturn (adOptionsWithNpaTrue );
229+
230+ sut .prepareInterstitial (pluginCallMock );
231+ sut .prepareInterstitial (pluginCallMock );
232+ sut .prepareInterstitial (pluginCallMock );
233+ sut .prepareInterstitial (pluginCallMock );
234+ verify (mockedActivity , atMostOnce ()).runOnUiThread (runnableArgumentCaptor .capture ());
235+ }
236+ }
237+
221238 @ Test
222239 @ DisplayName ("Rewarded Video Ad constructs the request using the RequestHelper" )
223240 void prepareRewardVideo () {
@@ -233,4 +250,4 @@ void prepareRewardVideo() {
233250 }
234251 }
235252 }
236- }
253+ }
0 commit comments