Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright 2017 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include "components/payments/core/journey_logger.h" | |
| 6 | |
| 7 #include "base/test/histogram_tester.h" | |
| 8 #include "testing/gmock/include/gmock/gmock.h" | |
| 9 #include "testing/gtest/include/gtest/gtest.h" | |
| 10 | |
|
Mathieu
2017/04/07 18:28:01
can you do
using testing::ContainerEq;
here?
sebsg
2017/04/07 19:05:48
Done.
| |
| 11 namespace payments { | |
| 12 | |
| 13 namespace { | |
| 14 using ::testing::ContainerEq; | |
| 15 } // namespace | |
| 16 | |
| 17 // Tests the canMakePayment stats for the case where the merchant does not use | |
| 18 // it and does not show the PaymentRequest to the user. | |
| 19 TEST(JourneyLoggerTest, | |
| 20 RecordJourneyStatsHistograms_CanMakePaymentNotCalled_NoShow) { | |
| 21 base::HistogramTester histogram_tester; | |
| 22 JourneyLogger logger(false /* is_incognito */); | |
|
Mathieu
2017/04/07 18:28:01
nit: I like /*is_incognito=*/false
It makes sure
sebsg
2017/04/07 19:05:48
Done.
| |
| 23 | |
| 24 logger.RecordJourneyStatsHistograms( | |
| 25 JourneyLogger::COMPLETION_STATUS_COMPLETED); | |
| 26 | |
| 27 histogram_tester.ExpectBucketCount("PaymentRequest.CanMakePayment.Usage", | |
| 28 JourneyLogger::CAN_MAKE_PAYMENT_NOT_USED, | |
| 29 1); | |
| 30 | |
| 31 // There should be no completion stats since PR was not shown to the user | |
| 32 EXPECT_THAT( | |
| 33 histogram_tester.GetTotalCountsForPrefix( | |
| 34 "PaymentRequest.CanMakePayment.NotUsed.WithShowEffectOnCompletion"), | |
| 35 testing::ContainerEq(base::HistogramTester::CountsMap())); | |
| 36 } | |
| 37 | |
| 38 // Tests the canMakePayment stats for the case where the merchant does not use | |
| 39 // it and the transaction is aborted. | |
| 40 TEST(JourneyLoggerTest, | |
| 41 RecordJourneyStatsHistograms_CanMakePaymentNotCalled_ShowAndUserAbort) { | |
| 42 base::HistogramTester histogram_tester; | |
| 43 JourneyLogger logger(false /* is_incognito */); | |
| 44 | |
| 45 // Expect no log for CanMakePayment. | |
| 46 EXPECT_THAT( | |
| 47 histogram_tester.GetTotalCountsForPrefix("PaymentRequest.CanMakePayment"), | |
| 48 testing::ContainerEq(base::HistogramTester::CountsMap())); | |
| 49 | |
| 50 // The merchant does not query CanMakePayment, show the PaymentRequest and the | |
| 51 // user aborts it. | |
| 52 logger.SetShowCalled(); | |
| 53 logger.RecordJourneyStatsHistograms( | |
| 54 JourneyLogger::COMPLETION_STATUS_USER_ABORTED); | |
| 55 | |
| 56 histogram_tester.ExpectBucketCount("PaymentRequest.CanMakePayment.Usage", | |
| 57 JourneyLogger::CAN_MAKE_PAYMENT_NOT_USED, | |
| 58 1); | |
| 59 | |
| 60 // There should be a record for an abort when CanMakePayment is not used but | |
| 61 // the PR is shown to the user. | |
| 62 histogram_tester.ExpectBucketCount( | |
| 63 "PaymentRequest.CanMakePayment.NotUsed.WithShowEffectOnCompletion", | |
| 64 JourneyLogger::COMPLETION_STATUS_USER_ABORTED, 1); | |
| 65 } | |
| 66 | |
| 67 // Tests the canMakePayment stats for the case where the merchant does not use | |
| 68 // it and the transaction is aborted. | |
| 69 TEST(JourneyLoggerTest, | |
| 70 RecordJourneyStatsHistograms_CanMakePaymentNotCalled_ShowAndOtherAbort) { | |
| 71 base::HistogramTester histogram_tester; | |
| 72 JourneyLogger logger(false /* is_incognito */); | |
| 73 | |
| 74 // Expect no log for CanMakePayment. | |
| 75 EXPECT_THAT( | |
| 76 histogram_tester.GetTotalCountsForPrefix("PaymentRequest.CanMakePayment"), | |
| 77 testing::ContainerEq(base::HistogramTester::CountsMap())); | |
| 78 | |
| 79 // The merchant does not query CanMakePayment, show the PaymentRequest and | |
| 80 // there is an abort not initiated by the user. | |
| 81 logger.SetShowCalled(); | |
| 82 logger.RecordJourneyStatsHistograms( | |
| 83 JourneyLogger::COMPLETION_STATUS_OTHER_ABORTED); | |
| 84 | |
| 85 histogram_tester.ExpectBucketCount("PaymentRequest.CanMakePayment.Usage", | |
| 86 JourneyLogger::CAN_MAKE_PAYMENT_NOT_USED, | |
| 87 1); | |
| 88 | |
| 89 // There should be a record for an abort when CanMakePayment is not used but | |
| 90 // the PR is shown to the user. | |
| 91 histogram_tester.ExpectBucketCount( | |
| 92 "PaymentRequest.CanMakePayment.NotUsed.WithShowEffectOnCompletion", | |
| 93 JourneyLogger::COMPLETION_STATUS_OTHER_ABORTED, 1); | |
| 94 } | |
| 95 | |
| 96 // Tests the canMakePayment stats for the case where the merchant does not use | |
| 97 // it and the transaction is completed. | |
| 98 TEST(JourneyLoggerTest, | |
| 99 RecordJourneyStatsHistograms_CanMakePaymentNotCalled_ShowAndComplete) { | |
| 100 base::HistogramTester histogram_tester; | |
| 101 JourneyLogger logger(false /* is_incognito */); | |
| 102 | |
| 103 // Expect no log for CanMakePayment. | |
| 104 EXPECT_THAT( | |
| 105 histogram_tester.GetTotalCountsForPrefix("PaymentRequest.CanMakePayment"), | |
| 106 testing::ContainerEq(base::HistogramTester::CountsMap())); | |
| 107 | |
| 108 // The merchant does not query CanMakePayment, show the PaymentRequest and the | |
| 109 // user completes it. | |
| 110 logger.SetShowCalled(); | |
| 111 logger.RecordJourneyStatsHistograms( | |
| 112 JourneyLogger::COMPLETION_STATUS_COMPLETED); | |
| 113 | |
| 114 histogram_tester.ExpectBucketCount("PaymentRequest.CanMakePayment.Usage", | |
| 115 JourneyLogger::CAN_MAKE_PAYMENT_NOT_USED, | |
| 116 1); | |
| 117 | |
| 118 // There should be a record for an abort when CanMakePayment is not used but | |
| 119 // the PR is shown to the user. | |
| 120 histogram_tester.ExpectBucketCount( | |
| 121 "PaymentRequest.CanMakePayment.NotUsed.WithShowEffectOnCompletion", | |
| 122 JourneyLogger::COMPLETION_STATUS_COMPLETED, 1); | |
| 123 } | |
| 124 | |
| 125 // Tests the canMakePayment stats for the case where the merchant uses it, | |
| 126 // returns false and show is not called. | |
| 127 TEST(JourneyLoggerTest, | |
| 128 RecordJourneyStatsHistograms_CanMakePaymentCalled_FalseAndNoShow) { | |
| 129 base::HistogramTester histogram_tester; | |
| 130 JourneyLogger logger(false /* is_incognito */); | |
| 131 | |
| 132 // Expect no log for CanMakePayment. | |
| 133 EXPECT_THAT( | |
| 134 histogram_tester.GetTotalCountsForPrefix("PaymentRequest.CanMakePayment"), | |
| 135 testing::ContainerEq(base::HistogramTester::CountsMap())); | |
| 136 | |
| 137 // The user cannot make payment and the PaymentRequest is not shown. | |
| 138 logger.SetCanMakePaymentValue(false); | |
| 139 logger.RecordJourneyStatsHistograms( | |
| 140 JourneyLogger::COMPLETION_STATUS_OTHER_ABORTED); | |
| 141 | |
| 142 histogram_tester.ExpectBucketCount("PaymentRequest.CanMakePayment.Usage", | |
| 143 JourneyLogger::CAN_MAKE_PAYMENT_USED, 1); | |
| 144 | |
| 145 // The CanMakePayment effect on show should be recorded as being false and not | |
| 146 // shown. | |
| 147 histogram_tester.ExpectBucketCount( | |
| 148 "PaymentRequest.CanMakePayment.Used.EffectOnShow", | |
| 149 JourneyLogger::CMP_SHOW_COULD_NOT_MAKE_PAYMENT_AND_DID_NOT_SHOW, 1); | |
| 150 | |
| 151 // There should be no completion stats since PR was not shown to the user. | |
| 152 EXPECT_THAT( | |
| 153 histogram_tester.GetTotalCountsForPrefix( | |
| 154 "PaymentRequest.CanMakePayment.NotUsed.WithShowEffectOnCompletion"), | |
| 155 testing::ContainerEq(base::HistogramTester::CountsMap())); | |
| 156 } | |
| 157 | |
| 158 // Tests the canMakePayment stats for the case where the merchant uses it, | |
| 159 // returns true and show is not called. | |
| 160 TEST(JourneyLoggerTest, | |
| 161 RecordJourneyStatsHistograms_CanMakePaymentCalled_TrueAndNoShow) { | |
| 162 base::HistogramTester histogram_tester; | |
| 163 JourneyLogger logger(false /* is_incognito */); | |
| 164 | |
| 165 // Expect no log for CanMakePayment. | |
| 166 EXPECT_THAT( | |
| 167 histogram_tester.GetTotalCountsForPrefix("PaymentRequest.CanMakePayment"), | |
| 168 testing::ContainerEq(base::HistogramTester::CountsMap())); | |
| 169 | |
| 170 // The user cannot make payment and the PaymentRequest is not shown. | |
| 171 logger.SetCanMakePaymentValue(true); | |
| 172 logger.RecordJourneyStatsHistograms( | |
| 173 JourneyLogger::COMPLETION_STATUS_OTHER_ABORTED); | |
| 174 | |
| 175 histogram_tester.ExpectBucketCount("PaymentRequest.CanMakePayment.Usage", | |
| 176 JourneyLogger::CAN_MAKE_PAYMENT_USED, 1); | |
| 177 | |
| 178 // The CanMakePayment effect on show should be recorded as being true and not | |
| 179 // shown. | |
| 180 histogram_tester.ExpectBucketCount( | |
| 181 "PaymentRequest.CanMakePayment.Used.EffectOnShow", | |
| 182 JourneyLogger::CMP_SHOW_COULD_MAKE_PAYMENT, 1); | |
| 183 | |
| 184 // There should be no completion stats since PR was not shown to the user. | |
| 185 EXPECT_THAT( | |
| 186 histogram_tester.GetTotalCountsForPrefix( | |
| 187 "PaymentRequest.CanMakePayment.NotUsed.WithShowEffectOnCompletion"), | |
| 188 testing::ContainerEq(base::HistogramTester::CountsMap())); | |
| 189 } | |
| 190 | |
| 191 // Tests the canMakePayment stats for the case where the merchant uses it, | |
| 192 // returns false, show is called but the transaction is aborted by the user. | |
| 193 TEST(JourneyLoggerTest, | |
| 194 RecordJourneyStatsHistograms_CanMakePaymentCalled_FalseShowAndUserAbort) { | |
| 195 base::HistogramTester histogram_tester; | |
| 196 JourneyLogger logger(false /* is_incognito */); | |
| 197 | |
| 198 // Expect no log for CanMakePayment. | |
| 199 EXPECT_THAT( | |
| 200 histogram_tester.GetTotalCountsForPrefix("PaymentRequest.CanMakePayment"), | |
| 201 testing::ContainerEq(base::HistogramTester::CountsMap())); | |
| 202 | |
| 203 // The user cannot make payment and the PaymentRequest is not shown. | |
| 204 logger.SetShowCalled(); | |
| 205 logger.SetCanMakePaymentValue(false); | |
| 206 logger.RecordJourneyStatsHistograms( | |
| 207 JourneyLogger::COMPLETION_STATUS_USER_ABORTED); | |
| 208 | |
| 209 histogram_tester.ExpectBucketCount("PaymentRequest.CanMakePayment.Usage", | |
| 210 JourneyLogger::CAN_MAKE_PAYMENT_USED, 1); | |
| 211 | |
| 212 // The CanMakePayment effect on show should be recorded as being false and | |
| 213 // shown. | |
| 214 histogram_tester.ExpectBucketCount( | |
| 215 "PaymentRequest.CanMakePayment.Used.EffectOnShow", | |
| 216 JourneyLogger::CMP_SHOW_DID_SHOW, 1); | |
| 217 // There should be a record for an abort when CanMakePayment is false but the | |
| 218 // PR is shown to the user. | |
| 219 histogram_tester.ExpectBucketCount( | |
| 220 "PaymentRequest.CanMakePayment.Used.FalseWithShowEffectOnCompletion", | |
| 221 JourneyLogger::COMPLETION_STATUS_USER_ABORTED, 1); | |
| 222 } | |
| 223 | |
| 224 // Tests the canMakePayment stats for the case where the merchant uses it, | |
| 225 // returns false, show is called but the transaction is aborted. | |
| 226 TEST(JourneyLoggerTest, | |
| 227 RecordJourneyStatsHistograms_CanMakePaymentCalled_FalseShowAndOtherAbort) { | |
| 228 base::HistogramTester histogram_tester; | |
| 229 JourneyLogger logger(false /* is_incognito */); | |
| 230 | |
| 231 // Expect no log for CanMakePayment. | |
| 232 EXPECT_THAT( | |
| 233 histogram_tester.GetTotalCountsForPrefix("PaymentRequest.CanMakePayment"), | |
| 234 testing::ContainerEq(base::HistogramTester::CountsMap())); | |
| 235 | |
| 236 // The user cannot make payment and the PaymentRequest is not shown. | |
| 237 logger.SetShowCalled(); | |
| 238 logger.SetCanMakePaymentValue(false); | |
| 239 logger.RecordJourneyStatsHistograms( | |
| 240 JourneyLogger::COMPLETION_STATUS_OTHER_ABORTED); | |
| 241 | |
| 242 histogram_tester.ExpectBucketCount("PaymentRequest.CanMakePayment.Usage", | |
| 243 JourneyLogger::CAN_MAKE_PAYMENT_USED, 1); | |
| 244 | |
| 245 // The CanMakePayment effect on show should be recorded as being false and | |
| 246 // shown. | |
| 247 histogram_tester.ExpectBucketCount( | |
| 248 "PaymentRequest.CanMakePayment.Used.EffectOnShow", | |
| 249 JourneyLogger::CMP_SHOW_DID_SHOW, 1); | |
| 250 // There should be a record for an abort when CanMakePayment is false but the | |
| 251 // PR is shown to the user. | |
| 252 histogram_tester.ExpectBucketCount( | |
| 253 "PaymentRequest.CanMakePayment.Used.FalseWithShowEffectOnCompletion", | |
| 254 JourneyLogger::COMPLETION_STATUS_OTHER_ABORTED, 1); | |
| 255 } | |
| 256 | |
| 257 // Tests the canMakePayment stats for the case where the merchant uses it, | |
| 258 // returns false, show is called and the transaction is completed. | |
| 259 TEST(JourneyLoggerTest, | |
| 260 RecordJourneyStatsHistograms_CanMakePaymentCalled_FalseShowAndComplete) { | |
| 261 base::HistogramTester histogram_tester; | |
| 262 JourneyLogger logger(false /* is_incognito */); | |
| 263 | |
| 264 // Expect no log for CanMakePayment. | |
| 265 EXPECT_THAT( | |
| 266 histogram_tester.GetTotalCountsForPrefix("PaymentRequest.CanMakePayment"), | |
| 267 testing::ContainerEq(base::HistogramTester::CountsMap())); | |
| 268 | |
| 269 // The user cannot make payment and the PaymentRequest is not shown. | |
| 270 logger.SetShowCalled(); | |
| 271 logger.SetCanMakePaymentValue(false); | |
| 272 logger.RecordJourneyStatsHistograms( | |
| 273 JourneyLogger::COMPLETION_STATUS_COMPLETED); | |
| 274 | |
| 275 histogram_tester.ExpectBucketCount("PaymentRequest.CanMakePayment.Usage", | |
| 276 JourneyLogger::CAN_MAKE_PAYMENT_USED, 1); | |
| 277 | |
| 278 // The CanMakePayment effect on show should be recorded as being false and | |
| 279 // shown. | |
| 280 histogram_tester.ExpectBucketCount( | |
| 281 "PaymentRequest.CanMakePayment.Used.EffectOnShow", | |
| 282 JourneyLogger::CMP_SHOW_DID_SHOW, 1); | |
| 283 | |
| 284 // There should be a record for an completion when CanMakePayment is false but | |
| 285 // the PR is shown to the user. | |
| 286 histogram_tester.ExpectBucketCount( | |
| 287 "PaymentRequest.CanMakePayment.Used.FalseWithShowEffectOnCompletion", | |
| 288 JourneyLogger::COMPLETION_STATUS_COMPLETED, 1); | |
| 289 } | |
| 290 | |
| 291 // Tests the canMakePayment stats for the case where the merchant uses it, | |
| 292 // returns true, show is called but the transaction is aborted by the user. | |
| 293 TEST(JourneyLoggerTest, | |
| 294 RecordJourneyStatsHistograms_CanMakePaymentCalled_TrueShowAndUserAbort) { | |
| 295 base::HistogramTester histogram_tester; | |
| 296 JourneyLogger logger(false /* is_incognito */); | |
| 297 | |
| 298 // Expect no log for CanMakePayment. | |
| 299 EXPECT_THAT( | |
| 300 histogram_tester.GetTotalCountsForPrefix("PaymentRequest.CanMakePayment"), | |
| 301 testing::ContainerEq(base::HistogramTester::CountsMap())); | |
| 302 | |
| 303 // The user cannot make payment and the PaymentRequest is not shown. | |
| 304 logger.SetShowCalled(); | |
| 305 logger.SetCanMakePaymentValue(true); | |
| 306 logger.RecordJourneyStatsHistograms( | |
| 307 JourneyLogger::COMPLETION_STATUS_USER_ABORTED); | |
| 308 | |
| 309 histogram_tester.ExpectBucketCount("PaymentRequest.CanMakePayment.Usage", | |
| 310 JourneyLogger::CAN_MAKE_PAYMENT_USED, 1); | |
| 311 | |
| 312 // The CanMakePayment effect on show should be recorded as being true and not | |
| 313 // shown. | |
| 314 histogram_tester.ExpectBucketCount( | |
| 315 "PaymentRequest.CanMakePayment.Used.EffectOnShow", | |
| 316 JourneyLogger::CMP_SHOW_DID_SHOW | | |
| 317 JourneyLogger::CMP_SHOW_COULD_MAKE_PAYMENT, | |
| 318 1); | |
| 319 // There should be a record for an abort when CanMakePayment is true and the | |
| 320 // PR is shown to the user. | |
| 321 histogram_tester.ExpectBucketCount( | |
| 322 "PaymentRequest.CanMakePayment.Used.TrueWithShowEffectOnCompletion", | |
| 323 JourneyLogger::COMPLETION_STATUS_USER_ABORTED, 1); | |
| 324 } | |
| 325 | |
| 326 // Tests the canMakePayment stats for the case where the merchant uses it, | |
| 327 // returns true, show is called but the transaction is aborted. | |
| 328 TEST(JourneyLoggerTest, | |
| 329 RecordJourneyStatsHistograms_CanMakePaymentCalled_TrueShowAndOtherAbort) { | |
| 330 base::HistogramTester histogram_tester; | |
| 331 JourneyLogger logger(false /* is_incognito */); | |
| 332 | |
| 333 // Expect no log for CanMakePayment. | |
| 334 EXPECT_THAT( | |
| 335 histogram_tester.GetTotalCountsForPrefix("PaymentRequest.CanMakePayment"), | |
| 336 testing::ContainerEq(base::HistogramTester::CountsMap())); | |
| 337 | |
| 338 // The user cannot make payment and the PaymentRequest is not shown. | |
| 339 logger.SetShowCalled(); | |
| 340 logger.SetCanMakePaymentValue(true); | |
| 341 logger.RecordJourneyStatsHistograms( | |
| 342 JourneyLogger::COMPLETION_STATUS_OTHER_ABORTED); | |
| 343 | |
| 344 histogram_tester.ExpectBucketCount("PaymentRequest.CanMakePayment.Usage", | |
| 345 JourneyLogger::CAN_MAKE_PAYMENT_USED, 1); | |
| 346 | |
| 347 // The CanMakePayment effect on show should be recorded as being true and not | |
| 348 // shown. | |
| 349 histogram_tester.ExpectBucketCount( | |
| 350 "PaymentRequest.CanMakePayment.Used.EffectOnShow", | |
| 351 JourneyLogger::CMP_SHOW_DID_SHOW | | |
| 352 JourneyLogger::CMP_SHOW_COULD_MAKE_PAYMENT, | |
| 353 1); | |
| 354 // There should be a record for an abort when CanMakePayment is true and the | |
| 355 // PR is shown to the user. | |
| 356 histogram_tester.ExpectBucketCount( | |
| 357 "PaymentRequest.CanMakePayment.Used.TrueWithShowEffectOnCompletion", | |
| 358 JourneyLogger::COMPLETION_STATUS_OTHER_ABORTED, 1); | |
| 359 } | |
| 360 | |
| 361 // Tests the canMakePayment stats for the case where the merchant uses it, | |
| 362 // returns true, show is called and the transaction is completed. | |
| 363 TEST(JourneyLoggerTest, | |
| 364 RecordJourneyStatsHistograms_CanMakePaymentCalled_TrueShowAndComplete) { | |
| 365 base::HistogramTester histogram_tester; | |
| 366 JourneyLogger logger(false /* is_incognito */); | |
| 367 | |
| 368 // Expect no log for CanMakePayment. | |
| 369 EXPECT_THAT( | |
| 370 histogram_tester.GetTotalCountsForPrefix("PaymentRequest.CanMakePayment"), | |
| 371 testing::ContainerEq(base::HistogramTester::CountsMap())); | |
| 372 | |
| 373 // The user cannot make payment and the PaymentRequest is not shown. | |
| 374 logger.SetShowCalled(); | |
| 375 logger.SetCanMakePaymentValue(true); | |
| 376 logger.RecordJourneyStatsHistograms( | |
| 377 JourneyLogger::COMPLETION_STATUS_COMPLETED); | |
| 378 | |
| 379 histogram_tester.ExpectBucketCount("PaymentRequest.CanMakePayment.Usage", | |
| 380 JourneyLogger::CAN_MAKE_PAYMENT_USED, 1); | |
| 381 | |
| 382 // The CanMakePayment effect on show should be recorded as being true and not | |
| 383 // shown. | |
| 384 histogram_tester.ExpectBucketCount( | |
| 385 "PaymentRequest.CanMakePayment.Used.EffectOnShow", | |
| 386 JourneyLogger::CMP_SHOW_DID_SHOW | | |
| 387 JourneyLogger::CMP_SHOW_COULD_MAKE_PAYMENT, | |
| 388 1); | |
| 389 // There should be a record for a completion when CanMakePayment is true and | |
| 390 // the PR is shown to the user. | |
| 391 histogram_tester.ExpectBucketCount( | |
| 392 "PaymentRequest.CanMakePayment.Used.TrueWithShowEffectOnCompletion", | |
| 393 JourneyLogger::COMPLETION_STATUS_COMPLETED, 1); | |
| 394 } | |
| 395 | |
| 396 // Tests the canMakePayment metrics are not logged if the Payment Request was | |
| 397 // done in an incognito tab. | |
| 398 TEST(JourneyLoggerTest, | |
| 399 RecordJourneyStatsHistograms_CanMakePayment_IncognitoTab) { | |
| 400 base::HistogramTester histogram_tester; | |
| 401 JourneyLogger logger(true /* is_incognito */); | |
| 402 | |
| 403 // Expect no log for CanMakePayment. | |
| 404 EXPECT_THAT( | |
| 405 histogram_tester.GetTotalCountsForPrefix("PaymentRequest.CanMakePayment"), | |
| 406 testing::ContainerEq(base::HistogramTester::CountsMap())); | |
| 407 | |
| 408 // The user cannot make payment and the PaymentRequest is not shown. | |
| 409 logger.SetShowCalled(); | |
| 410 logger.SetCanMakePaymentValue(true); | |
| 411 logger.RecordJourneyStatsHistograms( | |
| 412 JourneyLogger::COMPLETION_STATUS_COMPLETED); | |
| 413 | |
| 414 // Expect no log for CanMakePayment. | |
| 415 EXPECT_THAT( | |
| 416 histogram_tester.GetTotalCountsForPrefix("PaymentRequest.CanMakePayment"), | |
| 417 testing::ContainerEq(base::HistogramTester::CountsMap())); | |
| 418 } | |
| 419 | |
| 420 // Tests that the completion status metrics based on whether the user had | |
| 421 // suggestions for all the requested sections are logged as correctly. | |
| 422 TEST(JourneyLoggerTest, | |
| 423 RecordJourneyStatsHistograms_SuggestionsForEverything_Completed) { | |
| 424 base::HistogramTester histogram_tester; | |
| 425 JourneyLogger logger(false /* is_incognito */); | |
| 426 | |
| 427 // Simulate that the user had suggestions for all the requested sections. | |
| 428 logger.SetNumberOfSuggestionsShown(JourneyLogger::SECTION_CREDIT_CARDS, 1); | |
| 429 | |
| 430 // Simulate that the user completes the checkout. | |
| 431 logger.RecordJourneyStatsHistograms( | |
| 432 JourneyLogger::COMPLETION_STATUS_COMPLETED); | |
| 433 | |
| 434 histogram_tester.ExpectBucketCount( | |
| 435 "PaymentRequest.UserHadSuggestionsForEverything.EffectOnCompletion", | |
| 436 JourneyLogger::COMPLETION_STATUS_COMPLETED, 1); | |
| 437 | |
| 438 EXPECT_THAT(histogram_tester.GetTotalCountsForPrefix( | |
| 439 "PaymentRequest.UserDidNotHaveSuggestionsForEverything." | |
| 440 "EffectOnCompletion"), | |
| 441 testing::ContainerEq(base::HistogramTester::CountsMap())); | |
| 442 } | |
| 443 | |
| 444 // Tests that the completion status metrics based on whether the user had | |
| 445 // suggestions for all the requested sections are logged as correctly. | |
| 446 TEST(JourneyLoggerTest, | |
| 447 RecordJourneyStatsHistograms_SuggestionsForEverything_UserAborted) { | |
| 448 base::HistogramTester histogram_tester; | |
| 449 JourneyLogger logger(false /* is_incognito */); | |
| 450 | |
| 451 // Simulate that the user had suggestions for all the requested sections. | |
| 452 logger.SetNumberOfSuggestionsShown(JourneyLogger::SECTION_CREDIT_CARDS, 1); | |
| 453 | |
| 454 // Simulate that the user aborts the checkout. | |
| 455 logger.RecordJourneyStatsHistograms( | |
| 456 JourneyLogger::COMPLETION_STATUS_USER_ABORTED); | |
| 457 | |
| 458 histogram_tester.ExpectBucketCount( | |
| 459 "PaymentRequest.UserHadSuggestionsForEverything.EffectOnCompletion", | |
| 460 JourneyLogger::COMPLETION_STATUS_USER_ABORTED, 1); | |
| 461 | |
| 462 EXPECT_THAT(histogram_tester.GetTotalCountsForPrefix( | |
| 463 "PaymentRequest.UserDidNotHaveSuggestionsForEverything." | |
| 464 "EffectOnCompletion"), | |
| 465 testing::ContainerEq(base::HistogramTester::CountsMap())); | |
| 466 } | |
| 467 | |
| 468 // Tests that the completion status metrics based on whether the user had | |
| 469 // suggestions for all the requested sections are logged as correctly. | |
| 470 TEST(JourneyLoggerTest, | |
| 471 RecordJourneyStatsHistograms_SuggestionsForEverything_OtherAborted) { | |
| 472 base::HistogramTester histogram_tester; | |
| 473 JourneyLogger logger(false /* is_incognito */); | |
| 474 | |
| 475 // Simulate that the user had suggestions for all the requested sections. | |
| 476 logger.SetNumberOfSuggestionsShown(JourneyLogger::SECTION_CREDIT_CARDS, 1); | |
| 477 | |
| 478 // Simulate that the checkout is aborted. | |
| 479 logger.RecordJourneyStatsHistograms( | |
| 480 JourneyLogger::COMPLETION_STATUS_OTHER_ABORTED); | |
| 481 | |
| 482 histogram_tester.ExpectBucketCount( | |
| 483 "PaymentRequest.UserHadSuggestionsForEverything.EffectOnCompletion", | |
| 484 JourneyLogger::COMPLETION_STATUS_OTHER_ABORTED, 1); | |
| 485 | |
| 486 EXPECT_THAT(histogram_tester.GetTotalCountsForPrefix( | |
| 487 "PaymentRequest.UserDidNotHaveSuggestionsForEverything." | |
| 488 "EffectOnCompletion"), | |
| 489 testing::ContainerEq(base::HistogramTester::CountsMap())); | |
| 490 } | |
| 491 | |
| 492 // Tests that the completion status metrics based on whether the user had | |
| 493 // suggestions for all the requested sections are logged as correctly, even in | |
| 494 // incognito mode. | |
| 495 TEST(JourneyLoggerTest, | |
| 496 RecordJourneyStatsHistograms_SuggestionsForEverything_Incognito) { | |
| 497 base::HistogramTester histogram_tester; | |
| 498 JourneyLogger logger(true /* is_incognito */); | |
| 499 | |
| 500 // Simulate that the user had suggestions for all the requested sections. | |
| 501 logger.SetNumberOfSuggestionsShown(JourneyLogger::SECTION_CREDIT_CARDS, 1); | |
| 502 | |
| 503 // Simulate that the user completes the checkout. | |
| 504 logger.RecordJourneyStatsHistograms( | |
| 505 JourneyLogger::COMPLETION_STATUS_COMPLETED); | |
| 506 | |
| 507 histogram_tester.ExpectBucketCount( | |
| 508 "PaymentRequest.UserHadSuggestionsForEverything.EffectOnCompletion", | |
| 509 JourneyLogger::COMPLETION_STATUS_COMPLETED, 1); | |
| 510 | |
| 511 EXPECT_THAT(histogram_tester.GetTotalCountsForPrefix( | |
| 512 "PaymentRequest.UserDidNotHaveSuggestionsForEverything." | |
| 513 "EffectOnCompletion"), | |
| 514 testing::ContainerEq(base::HistogramTester::CountsMap())); | |
| 515 } | |
| 516 | |
| 517 // Tests that the completion status metrics based on whether the user had | |
| 518 // suggestions for all the requested sections are logged as correctly. | |
| 519 TEST(JourneyLoggerTest, | |
| 520 RecordJourneyStatsHistograms_NoSuggestionsForEverything_Completed) { | |
| 521 base::HistogramTester histogram_tester; | |
| 522 JourneyLogger logger(false /* is_incognito */); | |
| 523 | |
| 524 // Simulate that the user had suggestions for all the requested sections. | |
| 525 logger.SetNumberOfSuggestionsShown(JourneyLogger::SECTION_CREDIT_CARDS, 0); | |
| 526 | |
| 527 // Simulate that the user completes the checkout. | |
| 528 logger.RecordJourneyStatsHistograms( | |
| 529 JourneyLogger::COMPLETION_STATUS_COMPLETED); | |
| 530 | |
| 531 histogram_tester.ExpectBucketCount( | |
| 532 "PaymentRequest.UserDidNotHaveSuggestionsForEverything." | |
| 533 "EffectOnCompletion", | |
| 534 JourneyLogger::COMPLETION_STATUS_COMPLETED, 1); | |
| 535 | |
| 536 EXPECT_THAT( | |
| 537 histogram_tester.GetTotalCountsForPrefix( | |
| 538 "PaymentRequest.UserHadSuggestionsForEverything.EffectOnCompletion"), | |
| 539 testing::ContainerEq(base::HistogramTester::CountsMap())); | |
| 540 } | |
| 541 | |
| 542 // Tests that the completion status metrics based on whether the user had | |
| 543 // suggestions for all the requested sections are logged as correctly. | |
| 544 TEST(JourneyLoggerTest, | |
| 545 RecordJourneyStatsHistograms_NoSuggestionsForEverything_UserAborted) { | |
| 546 base::HistogramTester histogram_tester; | |
| 547 JourneyLogger logger(false /* is_incognito */); | |
| 548 | |
| 549 // Simulate that the user had suggestions for all the requested sections. | |
| 550 logger.SetNumberOfSuggestionsShown(JourneyLogger::SECTION_CREDIT_CARDS, 0); | |
| 551 | |
| 552 // Simulate that the user aborts the checkout. | |
| 553 logger.RecordJourneyStatsHistograms( | |
| 554 JourneyLogger::COMPLETION_STATUS_USER_ABORTED); | |
| 555 | |
| 556 histogram_tester.ExpectBucketCount( | |
| 557 "PaymentRequest.UserDidNotHaveSuggestionsForEverything." | |
| 558 "EffectOnCompletion", | |
| 559 JourneyLogger::COMPLETION_STATUS_USER_ABORTED, 1); | |
| 560 | |
| 561 EXPECT_THAT(histogram_tester.GetTotalCountsForPrefix( | |
| 562 "PaymentRequest.UserHadSuggestionsForEverything." | |
| 563 "EffectOnCompletion"), | |
| 564 testing::ContainerEq(base::HistogramTester::CountsMap())); | |
| 565 } | |
| 566 | |
| 567 // Tests that the completion status metrics based on whether the user had | |
| 568 // suggestions for all the requested sections are logged as correctly. | |
| 569 TEST(JourneyLoggerTest, | |
| 570 RecordJourneyStatsHistograms_NoSuggestionsForEverything_OtherAborted) { | |
| 571 base::HistogramTester histogram_tester; | |
| 572 JourneyLogger logger(false /* is_incognito */); | |
| 573 | |
| 574 // Simulate that the user had suggestions for all the requested sections. | |
| 575 logger.SetNumberOfSuggestionsShown(JourneyLogger::SECTION_CREDIT_CARDS, 0); | |
| 576 | |
| 577 // Simulate that the user aborts the checkout. | |
| 578 logger.RecordJourneyStatsHistograms( | |
| 579 JourneyLogger::COMPLETION_STATUS_OTHER_ABORTED); | |
| 580 | |
| 581 histogram_tester.ExpectBucketCount( | |
| 582 "PaymentRequest.UserDidNotHaveSuggestionsForEverything." | |
| 583 "EffectOnCompletion", | |
| 584 JourneyLogger::COMPLETION_STATUS_OTHER_ABORTED, 1); | |
| 585 | |
| 586 EXPECT_THAT(histogram_tester.GetTotalCountsForPrefix( | |
| 587 "PaymentRequest.UserHadSuggestionsForEverything." | |
| 588 "EffectOnCompletion"), | |
| 589 testing::ContainerEq(base::HistogramTester::CountsMap())); | |
| 590 } | |
| 591 | |
| 592 // Tests that the completion status metrics based on whether the user had | |
| 593 // suggestions for all the requested sections are logged as correctly, even in | |
| 594 // incognito mode. | |
| 595 TEST(JourneyLoggerTest, | |
| 596 RecordJourneyStatsHistograms_NoSuggestionsForEverything_Incognito) { | |
| 597 base::HistogramTester histogram_tester; | |
| 598 JourneyLogger logger(true /* is_incognito */); | |
| 599 | |
| 600 // Simulate that the user had suggestions for all the requested sections. | |
| 601 logger.SetNumberOfSuggestionsShown(JourneyLogger::SECTION_CREDIT_CARDS, 0); | |
| 602 | |
| 603 // Simulate that the user aborts the checkout. | |
| 604 logger.RecordJourneyStatsHistograms( | |
| 605 JourneyLogger::COMPLETION_STATUS_USER_ABORTED); | |
| 606 | |
| 607 histogram_tester.ExpectBucketCount( | |
| 608 "PaymentRequest.UserDidNotHaveSuggestionsForEverything." | |
| 609 "EffectOnCompletion", | |
| 610 JourneyLogger::COMPLETION_STATUS_USER_ABORTED, 1); | |
| 611 | |
| 612 EXPECT_THAT(histogram_tester.GetTotalCountsForPrefix( | |
| 613 "PaymentRequest.UserHadSuggestionsForEverything." | |
| 614 "EffectOnCompletion"), | |
| 615 testing::ContainerEq(base::HistogramTester::CountsMap())); | |
| 616 } | |
| 617 | |
| 618 // Tests that the metrics are logged correctly for two simultaneous Payment | |
| 619 // Requests. | |
| 620 TEST(JourneyLoggerTest, RecordJourneyStatsHistograms_TwoPaymentRequests) { | |
| 621 base::HistogramTester histogram_tester; | |
| 622 JourneyLogger logger1(false /* is_incognito */); | |
| 623 JourneyLogger logger2(false /* is_incognito */); | |
| 624 | |
| 625 // Make the two loggers have different data. | |
| 626 logger1.SetShowCalled(); | |
| 627 logger2.SetShowCalled(); | |
| 628 | |
| 629 logger1.SetCanMakePaymentValue(true); | |
| 630 | |
| 631 logger1.SetNumberOfSuggestionsShown(JourneyLogger::SECTION_CREDIT_CARDS, 1); | |
| 632 logger2.SetNumberOfSuggestionsShown(JourneyLogger::SECTION_CREDIT_CARDS, 0); | |
| 633 | |
| 634 // Simulate that the user completes one checkout and aborts the other. | |
| 635 logger1.RecordJourneyStatsHistograms( | |
| 636 JourneyLogger::COMPLETION_STATUS_COMPLETED); | |
| 637 logger2.RecordJourneyStatsHistograms( | |
| 638 JourneyLogger::COMPLETION_STATUS_USER_ABORTED); | |
| 639 | |
| 640 // Make sure the appropriate metrics were logged for logger1. | |
| 641 histogram_tester.ExpectBucketCount( | |
| 642 "PaymentRequest.UserHadSuggestionsForEverything.EffectOnCompletion", | |
| 643 JourneyLogger::COMPLETION_STATUS_COMPLETED, 1); | |
| 644 histogram_tester.ExpectBucketCount("PaymentRequest.CanMakePayment.Usage", | |
| 645 JourneyLogger::CAN_MAKE_PAYMENT_USED, 1); | |
| 646 histogram_tester.ExpectBucketCount( | |
| 647 "PaymentRequest.CanMakePayment.Used.TrueWithShowEffectOnCompletion", | |
| 648 JourneyLogger::COMPLETION_STATUS_COMPLETED, 1); | |
| 649 | |
| 650 // Make sure the appropriate metrics were logged for logger2. | |
| 651 histogram_tester.ExpectBucketCount( | |
| 652 "PaymentRequest.UserDidNotHaveSuggestionsForEverything." | |
| 653 "EffectOnCompletion", | |
| 654 JourneyLogger::COMPLETION_STATUS_USER_ABORTED, 1); | |
| 655 histogram_tester.ExpectBucketCount("PaymentRequest.CanMakePayment.Usage", | |
| 656 JourneyLogger::CAN_MAKE_PAYMENT_NOT_USED, | |
| 657 1); | |
| 658 histogram_tester.ExpectBucketCount( | |
| 659 "PaymentRequest.CanMakePayment.NotUsed.WithShowEffectOnCompletion", | |
| 660 JourneyLogger::COMPLETION_STATUS_USER_ABORTED, 1); | |
| 661 } | |
| 662 | |
| 663 } // namespace payments | |
| OLD | NEW |