5
5
6
6
#include " bat/ads/internal/ad_serving/new_tab_page_ads/new_tab_page_ad_serving.h"
7
7
8
+ #include < algorithm>
9
+
8
10
#include " bat/ads/internal/ad_events/ad_event_unittest_util.h"
9
11
#include " bat/ads/internal/ad_serving/ad_serving_features.h"
10
12
#include " bat/ads/internal/ad_serving/ad_targeting/geographic/subdivision/subdivision_targeting.h"
@@ -123,7 +125,7 @@ TEST_F(BatAdsNewTabPageAdServingTest, ServeAd) {
123
125
}
124
126
125
127
TEST_F (BatAdsNewTabPageAdServingTest,
126
- DoNotServeAdIfExceededPerDayCapFromCatalog ) {
128
+ ServeAdIfNotExceededPerDayExclusionRuleFrequencyCap ) {
127
129
// Arrange
128
130
new_tab_page_ads::frequency_capping::ForcePermissionRules ();
129
131
@@ -132,9 +134,47 @@ TEST_F(BatAdsNewTabPageAdServingTest,
132
134
creative_ads.push_back (creative_ad);
133
135
Save (creative_ads);
134
136
137
+ const int allowed_ad_count_per_day =
138
+ std::min (creative_ad.per_day , creative_ad.daily_cap );
139
+
135
140
AdEventInfo ad_event = BuildAdEvent (creative_ad, AdType::kNewTabPageAd ,
136
141
ConfirmationType::kServed , Now ());
137
- for (int i = 0 ; i < creative_ad.per_day ; ++i) {
142
+ for (int i = 0 ; i < allowed_ad_count_per_day - 1 ; ++i) {
143
+ FireAdEvent (ad_event);
144
+ }
145
+
146
+ AdvanceClock (base::Hours (1 ));
147
+
148
+ // Act
149
+ ad_serving_->MaybeServeAd (
150
+ [&creative_ad](const bool success, const NewTabPageAdInfo& ad) {
151
+ ASSERT_TRUE (success);
152
+
153
+ NewTabPageAdInfo expected_ad = BuildNewTabPageAd (creative_ad);
154
+ expected_ad.uuid = ad.uuid ;
155
+
156
+ EXPECT_EQ (expected_ad, ad);
157
+ });
158
+
159
+ // Assert
160
+ }
161
+
162
+ TEST_F (BatAdsNewTabPageAdServingTest,
163
+ DoNotServeAdIfExceededPerDayExclusionRuleFrequencyCap) {
164
+ // Arrange
165
+ new_tab_page_ads::frequency_capping::ForcePermissionRules ();
166
+
167
+ CreativeNewTabPageAdList creative_ads;
168
+ CreativeNewTabPageAdInfo creative_ad = BuildCreativeNewTabPageAd ();
169
+ creative_ads.push_back (creative_ad);
170
+ Save (creative_ads);
171
+
172
+ const int allowed_ad_count_per_day =
173
+ std::min (creative_ad.per_day , creative_ad.daily_cap );
174
+
175
+ AdEventInfo ad_event = BuildAdEvent (creative_ad, AdType::kNewTabPageAd ,
176
+ ConfirmationType::kServed , Now ());
177
+ for (int i = 0 ; i < allowed_ad_count_per_day; ++i) {
138
178
FireAdEvent (ad_event);
139
179
}
140
180
@@ -162,7 +202,8 @@ TEST_F(BatAdsNewTabPageAdServingTest,
162
202
// Assert
163
203
}
164
204
165
- TEST_F (BatAdsNewTabPageAdServingTest, ServeAdIfNotExceededAdsPerHourCap) {
205
+ TEST_F (BatAdsNewTabPageAdServingTest,
206
+ ServeAdIfNotExceededAdsPerHourPermissionRuleFrequencyCap) {
166
207
// Arrange
167
208
new_tab_page_ads::frequency_capping::ForcePermissionRules ();
168
209
@@ -195,7 +236,8 @@ TEST_F(BatAdsNewTabPageAdServingTest, ServeAdIfNotExceededAdsPerHourCap) {
195
236
// Assert
196
237
}
197
238
198
- TEST_F (BatAdsNewTabPageAdServingTest, DoNotServeAdIfExceededAdsPerHourCap) {
239
+ TEST_F (BatAdsNewTabPageAdServingTest,
240
+ DoNotServeAdIfExceededAdsPerHourPermissionRuleFrequencyCap) {
199
241
// Arrange
200
242
new_tab_page_ads::frequency_capping::ForcePermissionRules ();
201
243
@@ -222,7 +264,8 @@ TEST_F(BatAdsNewTabPageAdServingTest, DoNotServeAdIfExceededAdsPerHourCap) {
222
264
// Assert
223
265
}
224
266
225
- TEST_F (BatAdsNewTabPageAdServingTest, ServeAdIfNotExceededAdsPerDayCap) {
267
+ TEST_F (BatAdsNewTabPageAdServingTest,
268
+ ServeAdIfNotExceededAdsPerDayPermissionRuleFrequencyCap) {
226
269
// Arrange
227
270
new_tab_page_ads::frequency_capping::ForcePermissionRules ();
228
271
@@ -257,7 +300,8 @@ TEST_F(BatAdsNewTabPageAdServingTest, ServeAdIfNotExceededAdsPerDayCap) {
257
300
// Assert
258
301
}
259
302
260
- TEST_F (BatAdsNewTabPageAdServingTest, DoNotServeAdIfExceededAdsPerDayCap) {
303
+ TEST_F (BatAdsNewTabPageAdServingTest,
304
+ DoNotServeAdIfExceededAdsPerDayPermissionRuleFrequencyCap) {
261
305
// Arrange
262
306
new_tab_page_ads::frequency_capping::ForcePermissionRules ();
263
307
0 commit comments