Skip to content

Commit 29b1dc5

Browse files
authored
Handle NoFill errors in TestRewardedAdLoad tests. (#1197)
* Handle NoFill errors in TestRewardedAdLoad tests. * Format code.
1 parent 957340c commit 29b1dc5

File tree

1 file changed

+49
-26
lines changed

1 file changed

+49
-26
lines changed

gma/integration_test/src/integration_test.cc

Lines changed: 49 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -833,9 +833,6 @@ TEST_F(FirebaseGmaTest, TestRewardedAdLoad) {
833833
SKIP_TEST_ON_DESKTOP;
834834
SKIP_TEST_ON_SIMULATOR;
835835

836-
// TODO(@drsanta): remove when GMA whitelists CI devices.
837-
TEST_REQUIRES_USER_INTERACTION_ON_IOS;
838-
839836
firebase::gma::RewardedAd* rewarded = new firebase::gma::RewardedAd();
840837

841838
WaitForCompletion(rewarded->Initialize(app_framework::GetWindowContext()),
@@ -845,16 +842,30 @@ TEST_F(FirebaseGmaTest, TestRewardedAdLoad) {
845842
firebase::Future<firebase::gma::AdResult> load_ad_future =
846843
rewarded->LoadAd(kRewardedAdUnit, GetAdRequest());
847844

848-
WaitForCompletion(load_ad_future, "LoadAd");
849-
const firebase::gma::AdResult* result_ptr = load_ad_future.result();
850-
ASSERT_NE(result_ptr, nullptr);
851-
EXPECT_TRUE(result_ptr->is_successful());
852-
EXPECT_FALSE(result_ptr->response_info().adapter_responses().empty());
853-
EXPECT_FALSE(
854-
result_ptr->response_info().mediation_adapter_class_name().empty());
855-
EXPECT_FALSE(result_ptr->response_info().response_id().empty());
856-
EXPECT_FALSE(result_ptr->response_info().ToString().empty());
857-
845+
// This test behaves differently if it's running in UI mode
846+
// (manually on a device) or in non-UI mode (via automated tests).
847+
if (ShouldRunUITests()) {
848+
// Run in manual mode: fail if any error occurs.
849+
WaitForCompletion(load_ad_future, "LoadAd");
850+
} else {
851+
// Run in automated test mode: don't fail if NoFill occurred.
852+
WaitForCompletionAnyResult(load_ad_future,
853+
"LoadAd (ignoring NoFill error)");
854+
EXPECT_TRUE(load_ad_future.error() == firebase::gma::kAdErrorCodeNone ||
855+
load_ad_future.error() == firebase::gma::kAdErrorCodeNoFill);
856+
}
857+
if (load_ad_future.error() == firebase::gma::kAdErrorCodeNone) {
858+
// In UI mode, or in non-UI mode if a NoFill error didn't occur, check that
859+
// the ad loaded correctly.
860+
const firebase::gma::AdResult* result_ptr = load_ad_future.result();
861+
ASSERT_NE(result_ptr, nullptr);
862+
EXPECT_TRUE(result_ptr->is_successful());
863+
EXPECT_FALSE(result_ptr->response_info().adapter_responses().empty());
864+
EXPECT_FALSE(
865+
result_ptr->response_info().mediation_adapter_class_name().empty());
866+
EXPECT_FALSE(result_ptr->response_info().response_id().empty());
867+
EXPECT_FALSE(result_ptr->response_info().ToString().empty());
868+
}
858869
load_ad_future.Release();
859870
delete rewarded;
860871
}
@@ -1795,9 +1806,6 @@ TEST_F(FirebaseGmaTest, TestRewardedAdLoadEmptyRequest) {
17951806
SKIP_TEST_ON_DESKTOP;
17961807
SKIP_TEST_ON_SIMULATOR;
17971808

1798-
// TODO(@drsanta): remove when GMA whitelists CI devices.
1799-
TEST_REQUIRES_USER_INTERACTION_ON_IOS;
1800-
18011809
// Note: while showing an ad requires user interaction in another test,
18021810
// this test is mean as a baseline loadAd functionality test.
18031811
firebase::gma::RewardedAd* rewarded = new firebase::gma::RewardedAd();
@@ -1810,16 +1818,31 @@ TEST_F(FirebaseGmaTest, TestRewardedAdLoadEmptyRequest) {
18101818
firebase::Future<firebase::gma::AdResult> load_ad_future =
18111819
rewarded->LoadAd(kRewardedAdUnit, request);
18121820

1813-
WaitForCompletion(load_ad_future, "LoadAd");
1814-
const firebase::gma::AdResult* result_ptr = load_ad_future.result();
1815-
ASSERT_NE(result_ptr, nullptr);
1816-
EXPECT_TRUE(result_ptr->is_successful());
1817-
EXPECT_FALSE(result_ptr->response_info().adapter_responses().empty());
1818-
EXPECT_FALSE(
1819-
result_ptr->response_info().mediation_adapter_class_name().empty());
1820-
EXPECT_FALSE(result_ptr->response_info().response_id().empty());
1821-
EXPECT_FALSE(result_ptr->response_info().ToString().empty());
1822-
1821+
// This test behaves differently if it's running in UI mode
1822+
// (manually on a device) or in non-UI mode (via automated tests).
1823+
if (ShouldRunUITests()) {
1824+
// Run in manual mode: fail if any error occurs.
1825+
WaitForCompletion(load_ad_future, "LoadAd");
1826+
} else {
1827+
// Run in automated test mode: don't fail if NoFill occurred.
1828+
WaitForCompletionAnyResult(load_ad_future,
1829+
"LoadAd (ignoring NoFill error)");
1830+
EXPECT_TRUE(load_ad_future.error() == firebase::gma::kAdErrorCodeNone ||
1831+
load_ad_future.error() == firebase::gma::kAdErrorCodeNoFill);
1832+
}
1833+
if (load_ad_future.error() == firebase::gma::kAdErrorCodeNone) {
1834+
// In UI mode, or in non-UI mode if a NoFill error didn't occur, check that
1835+
// the ad loaded correctly.
1836+
const firebase::gma::AdResult* result_ptr = load_ad_future.result();
1837+
ASSERT_NE(result_ptr, nullptr);
1838+
EXPECT_TRUE(result_ptr->is_successful());
1839+
EXPECT_FALSE(result_ptr->response_info().adapter_responses().empty());
1840+
EXPECT_FALSE(
1841+
result_ptr->response_info().mediation_adapter_class_name().empty());
1842+
EXPECT_FALSE(result_ptr->response_info().response_id().empty());
1843+
EXPECT_FALSE(result_ptr->response_info().ToString().empty());
1844+
}
1845+
load_ad_future.Release();
18231846
delete rewarded;
18241847
}
18251848

0 commit comments

Comments
 (0)