Commit faa7a493 authored by Alan Screen's avatar Alan Screen Committed by Chromium LUCI CQ

Introduce unit tests for LocalPrinterHandlerDefault

There were no preexisting unit tests for LocalPrinterHandlerDefault,
even though some tests did exist for the ChromeOS-specific counterpart
of LocalPrinterHandlerChromeos.

Start to introduce some support for getting capabilities which will
benefit testing coverage of new paths to support printer handling
performed out of the browser process.  This is basically just a slightly
modified version of the StartGetCapability() tests which already exist
for ChromeOS.

Bug: 809738
Change-Id: Icee1fc72eddb4bd1f3721eb0e848ab14cd85f28a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2628025
Commit-Queue: Rebekah Potter <rbpotter@chromium.org>
Reviewed-by: default avatarRebekah Potter <rbpotter@chromium.org>
Reviewed-by: default avatarDaniel Hosseinian <dhoss@chromium.org>
Cr-Commit-Position: refs/heads/master@{#845727}
parent 10c9ab2b
// Copyright 2021 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/webui/print_preview/local_printer_handler_default.h"
#include <memory>
#include "base/memory/ref_counted.h"
#include "base/memory/scoped_refptr.h"
#include "base/values.h"
#include "chrome/common/printing/printer_capabilities.h"
#include "chrome/test/base/testing_profile.h"
#include "content/public/browser/web_contents.h"
#include "content/public/test/browser_task_environment.h"
#include "printing/backend/print_backend.h"
#include "printing/backend/test_print_backend.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace printing {
namespace {
void RecordGetCapability(bool& capabilities_set,
base::Value& capabilities_out,
base::Value capability) {
capabilities_out = capability.Clone();
capabilities_set = true;
}
} // namespace
class LocalPrinterHandlerDefaultTest : public testing::Test {
public:
LocalPrinterHandlerDefaultTest() = default;
LocalPrinterHandlerDefaultTest(const LocalPrinterHandlerDefaultTest&) =
delete;
LocalPrinterHandlerDefaultTest& operator=(
const LocalPrinterHandlerDefaultTest&) = delete;
~LocalPrinterHandlerDefaultTest() override = default;
TestPrintBackend* print_backend() { return test_backend_.get(); }
void SetUp() override {
TestingProfile::Builder builder;
profile_ = builder.Build();
initiator_web_contents_ = content::WebContents::Create(
content::WebContents::CreateParams(profile_.get()));
content::WebContents* initiator = initiator_web_contents_.get();
test_backend_ = base::MakeRefCounted<TestPrintBackend>();
PrintBackend::SetPrintBackendForTesting(test_backend_.get());
local_printer_handler_ =
std::make_unique<LocalPrinterHandlerDefault>(initiator);
}
protected:
content::BrowserTaskEnvironment task_environment_;
std::unique_ptr<TestingProfile> profile_;
std::unique_ptr<content::WebContents> initiator_web_contents_;
scoped_refptr<TestPrintBackend> test_backend_;
std::unique_ptr<LocalPrinterHandlerDefault> local_printer_handler_;
};
// Tests that fetching capabilities for an existing installed printer is
// successful.
TEST_F(LocalPrinterHandlerDefaultTest, StartGetCapabilityValidPrinter) {
// Add printer to `test_backend`.
const std::string kDestinationId = "printer1";
print_backend()->AddValidPrinter(
kDestinationId, std::make_unique<PrinterSemanticCapsAndDefaults>(),
std::make_unique<PrinterBasicInfo>());
bool did_fetch_caps = false;
base::Value fetched_caps;
local_printer_handler_->StartGetCapability(
kDestinationId,
base::BindOnce(&RecordGetCapability, std::ref(did_fetch_caps),
std::ref(fetched_caps)));
task_environment_.RunUntilIdle();
ASSERT_TRUE(did_fetch_caps);
ASSERT_TRUE(fetched_caps.is_dict());
EXPECT_TRUE(fetched_caps.FindKey(kSettingCapabilities));
EXPECT_TRUE(fetched_caps.FindKey(kPrinter));
}
// Tests that fetching capabilities bails early when the provided printer
// can't be found.
TEST_F(LocalPrinterHandlerDefaultTest, StartGetCapabilityInvalidPrinter) {
bool did_fetch_caps = false;
base::Value fetched_caps;
local_printer_handler_->StartGetCapability(
/*destination_id=*/"invalid printer",
base::BindOnce(&RecordGetCapability, std::ref(did_fetch_caps),
std::ref(fetched_caps)));
task_environment_.RunUntilIdle();
ASSERT_TRUE(did_fetch_caps);
EXPECT_TRUE(fetched_caps.is_none());
}
} // namespace printing
...@@ -5813,6 +5813,7 @@ test("unit_tests") { ...@@ -5813,6 +5813,7 @@ test("unit_tests") {
if (!is_chromeos_ash) { if (!is_chromeos_ash) {
sources += [ sources += [
"../browser/printing/cloud_print/cloud_print_proxy_service_unittest.cc", "../browser/printing/cloud_print/cloud_print_proxy_service_unittest.cc",
"../browser/ui/webui/print_preview/local_printer_handler_default_unittest.cc",
"../common/cloud_print/cloud_print_helpers_unittest.cc", "../common/cloud_print/cloud_print_helpers_unittest.cc",
"../common/service_process_util_unittest.cc", "../common/service_process_util_unittest.cc",
"../service/cloud_print/cloud_print_service_helpers_unittest.cc", "../service/cloud_print/cloud_print_service_helpers_unittest.cc",
......
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