blob: 5d5d0ea615d9f04626182a584539076d98ea4195 [file] [log] [blame]
// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_WEB_APPLICATIONS_TEST_COMMAND_METRICS_TEST_HELPER_H_
#define CHROME_BROWSER_WEB_APPLICATIONS_TEST_COMMAND_METRICS_TEST_HELPER_H_
#include <string>
#include <vector>
#include "base/strings/strcat.h"
#include "base/test/metrics/histogram_tester.h"
#include "chrome/browser/web_applications/commands/command_metrics.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace web_app::test {
// Returns all combinations of "ResultCode" install command metrics histograms
// recorded by RecordInstallMetrics.
std::vector<std::string> GetInstallCommandResultHistogramNames(
std::string_view command_str,
std::string_view app_type);
// Returns all combinations of "Surface" install command metrics histograms
// recorded by RecordInstallMetrics.
std::vector<std::string> GetInstallCommandSourceHistogramNames(
std::string_view command_str,
std::string_view app_type);
// Shortcut matcher to check a list of histograms with the same matcher. Usage:
// EXPECT_THAT(histogram_tester,
// test::ForAllGetAllSamples(
// test::GetInstallCommandResultHistogramNames(
// ".FetchManifestAndInstalll", app_type_str),
// base::BucketsAre(base::Bucket(
// webapps::InstallResultCode::kSuccessNewInstall, 1))));
MATCHER_P2(ForAllGetAllSamples,
histogram_list,
matcher,
base::StrCat({"All buckets from each specified histograms ",
testing::DescribeMatcher<std::vector<base::Bucket>>(
matcher,
negation)})) {
bool success = true;
for (const auto& histogram : histogram_list) {
auto result = arg.GetAllSamples(histogram);
bool pass = testing::ExplainMatchResult(
matcher, arg.GetAllSamples(histogram), result_listener);
if (!pass) {
*result_listener << " for " << histogram << "\n";
}
success = success && pass;
}
return success;
}
} // namespace web_app::test
#endif // CHROME_BROWSER_WEB_APPLICATIONS_TEST_COMMAND_METRICS_TEST_HELPER_H_