Commit cc2fbf55 authored by Jiaquan He's avatar Jiaquan He Committed by Commit Bot

Add tests for ArcPlayStoreAppSearchProvider.

Bug=736552

Change-Id: I6a9da9ce619f302824ef63c447ebce6738de6cf0
Reviewed-on: https://chromium-review.googlesource.com/576291
Commit-Queue: Jiaquan He <hejq@google.com>
Reviewed-by: default avatarLuis Hector Chavez <lhchavez@chromium.org>
Reviewed-by: default avatarYury Khmel <khmel@chromium.org>
Cr-Commit-Position: refs/heads/master@{#489211}
parent 0463c3dc
...@@ -23,8 +23,7 @@ class ArcPlayStoreSearchProvider : public SearchProvider { ...@@ -23,8 +23,7 @@ class ArcPlayStoreSearchProvider : public SearchProvider {
AppListControllerDelegate* list_controller); AppListControllerDelegate* list_controller);
~ArcPlayStoreSearchProvider() override; ~ArcPlayStoreSearchProvider() override;
protected: // SearchProvider:
// app_list::SearchProvider overrides:
void Start(bool is_voice_query, const base::string16& query) override; void Start(bool is_voice_query, const base::string16& query) override;
void Stop() override; void Stop() override;
......
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/ui/app_list/search/arc/arc_playstore_search_provider.h"
#include <memory>
#include <string>
#include <utility>
#include "base/macros.h"
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/ui/app_list/app_list_test_util.h"
#include "chrome/browser/ui/app_list/arc/arc_app_test.h"
#include "chrome/browser/ui/app_list/test/test_app_list_controller_delegate.h"
#include "chrome/test/base/testing_profile.h"
#include "ui/app_list/search_result.h"
namespace app_list {
class ArcPlayStoreSearchProviderTest : public AppListTestBase {
public:
ArcPlayStoreSearchProviderTest() = default;
~ArcPlayStoreSearchProviderTest() override = default;
// AppListTestBase:
void SetUp() override {
AppListTestBase::SetUp();
arc_test_.SetUp(profile());
controller_ = base::MakeUnique<test::TestAppListControllerDelegate>();
}
void TearDown() override {
controller_.reset();
arc_test_.TearDown();
AppListTestBase::TearDown();
}
protected:
std::unique_ptr<ArcPlayStoreSearchProvider> CreateSearch(int max_results) {
return base::MakeUnique<ArcPlayStoreSearchProvider>(
max_results, profile_.get(), controller_.get());
}
private:
std::unique_ptr<test::TestAppListControllerDelegate> controller_;
ArcAppTest arc_test_;
DISALLOW_COPY_AND_ASSIGN(ArcPlayStoreSearchProviderTest);
};
TEST_F(ArcPlayStoreSearchProviderTest, Basic) {
constexpr size_t kMaxResults = 6;
constexpr char kQuery[] = "Play App";
std::unique_ptr<ArcPlayStoreSearchProvider> provider =
CreateSearch(kMaxResults);
EXPECT_TRUE(provider->results().empty());
// Check that the result size of a query doesn't exceed the |kMaxResults|.
provider->Start(false, base::UTF8ToUTF16(kQuery));
const app_list::SearchProvider::Results& results = provider->results();
ASSERT_GT(results.size(), 0u);
ASSERT_GE(kMaxResults, results.size());
// Check that information is correctly set in each result.
for (size_t i = 0; i < results.size(); ++i) {
SCOPED_TRACE(base::StringPrintf("Testing result %zu", i));
EXPECT_EQ(base::UTF16ToUTF8(results[i]->title()),
base::StringPrintf("%s %zu", kQuery, i));
EXPECT_EQ(results[i]->display_type(), SearchResult::DISPLAY_TILE);
EXPECT_EQ(base::UTF16ToUTF8(results[i]->formatted_price()),
base::StringPrintf("$%zu.22", i));
EXPECT_EQ(results[i]->rating(), i);
const bool is_instant_app = i % 2 == 0;
EXPECT_EQ(results[i]->result_type(),
is_instant_app ? SearchResult::RESULT_INSTANT_APP
: SearchResult::RESULT_PLAYSTORE_APP);
}
}
} // namespace app_list
...@@ -4979,6 +4979,7 @@ test("unit_tests") { ...@@ -4979,6 +4979,7 @@ test("unit_tests") {
"../browser/ui/app_list/profile_loader_unittest.cc", "../browser/ui/app_list/profile_loader_unittest.cc",
"../browser/ui/app_list/search/answer_card/answer_card_result_unittest.cc", "../browser/ui/app_list/search/answer_card/answer_card_result_unittest.cc",
"../browser/ui/app_list/search/app_search_provider_unittest.cc", "../browser/ui/app_list/search/app_search_provider_unittest.cc",
"../browser/ui/app_list/search/arc/arc_playstore_search_provider_unittest.cc",
"../browser/ui/app_list/search/history_unittest.cc", "../browser/ui/app_list/search/history_unittest.cc",
"../browser/ui/app_list/search/launcher_search/launcher_search_icon_image_loader_unittest.cc", "../browser/ui/app_list/search/launcher_search/launcher_search_icon_image_loader_unittest.cc",
"../browser/ui/app_list/search/omnibox_result_unittest.cc", "../browser/ui/app_list/search/omnibox_result_unittest.cc",
......
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#include "base/memory/ptr_util.h" #include "base/memory/ptr_util.h"
#include "base/path_service.h" #include "base/path_service.h"
#include "base/run_loop.h" #include "base/run_loop.h"
#include "base/strings/stringprintf.h"
namespace mojo { namespace mojo {
...@@ -277,7 +278,27 @@ void FakeAppInstance::GetRecentAndSuggestedAppsFromPlayStore( ...@@ -277,7 +278,27 @@ void FakeAppInstance::GetRecentAndSuggestedAppsFromPlayStore(
const std::string& query, const std::string& query,
int32_t max_results, int32_t max_results,
const GetRecentAndSuggestedAppsFromPlayStoreCallback& callback) { const GetRecentAndSuggestedAppsFromPlayStoreCallback& callback) {
callback.Run(std::vector<arc::mojom::AppDiscoveryResultPtr>()); // Fake Play Store app info
std::vector<arc::mojom::AppDiscoveryResultPtr> fake_apps;
for (int i = 0; i < max_results; ++i) {
// Fake icon data
std::string png_data_as_string;
GetFakeIcon(mojom::ScaleFactor::SCALE_FACTOR_100P, &png_data_as_string);
std::vector<uint8_t> fake_icon_png_data(png_data_as_string.begin(),
png_data_as_string.end());
fake_apps.push_back(mojom::AppDiscoveryResult::New(
base::StringPrintf("LauncherIntentUri %d", i), // launch_intent_uri
base::StringPrintf("InstallIntentUri %d", i), // install_intent_uri
base::StringPrintf("%s %d", query.c_str(), i), // label
i % 2 == 0, // is_instant_app
i % 4 == 0, // is_recent
base::StringPrintf("Publisher %d", i), // publisher_name
base::StringPrintf("$%d.22", i), // formatted_price
i, // review_score
fake_icon_png_data)); // icon_png_data
}
callback.Run(std::move(fake_apps));
} }
void FakeAppInstance::StartPaiFlow() { void FakeAppInstance::StartPaiFlow() {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment