[go: nahoru, domu]

blob: d1ad079cc93b7924e975012dc4e5b3c8c0ec9d68 [file] [log] [blame]
// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/ash/printing/print_management/print_job_info_mojom_conversions.h"
#include <memory>
#include "base/strings/utf_string_conversions.h"
#include "base/time/time.h"
#include "chrome/browser/ash/printing/cups_print_job.h"
#include "chrome/browser/ash/printing/history/print_job_info.pb.h"
#include "chrome/browser/chromeos/printing/printer_error_codes.h"
#include "chrome/browser/printing/print_job.h"
#include "chromeos/components/print_management/mojom/printing_manager.mojom.h"
#include "chromeos/printing/printer_configuration.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace ash {
namespace {
namespace proto = printing::proto;
namespace mojom = ::chromeos::printing::printing_manager::mojom;
constexpr char kName[] = "name";
constexpr char16_t kName16[] = u"name";
constexpr char kUri[] = "ipp://192.168.1.5:631";
constexpr char kTitle[] = "title";
constexpr char16_t kTitle16[] = u"title";
constexpr char kId[] = "id";
constexpr char kPrinterId[] = "printerId";
constexpr int64_t kJobCreationTime = 0;
constexpr uint32_t kPagesNumber = 3;
constexpr uint32_t kPrintedPageNumber = 1;
proto::PrintJobInfo CreatePrintJobInfoProto() {
// Create Printer proto.
proto::Printer printer;
printer.set_id(kPrinterId);
printer.set_name(kName);
printer.set_uri(kUri);
// Create PrintJobInfo proto.
proto::PrintJobInfo print_job_info;
print_job_info.set_id(kId);
print_job_info.set_title(kTitle);
print_job_info.set_status(proto::PrintJobInfo_PrintJobStatus_PRINTED);
print_job_info.set_printer_error_code(
proto::PrintJobInfo_PrinterErrorCode_NO_ERROR);
print_job_info.set_creation_time(static_cast<int64_t>(
base::Time::UnixEpoch().InMillisecondsFSinceUnixEpoch()));
print_job_info.set_number_of_pages(kPagesNumber);
*print_job_info.mutable_printer() = printer;
return print_job_info;
}
std::unique_ptr<CupsPrintJob> CreateCupsPrintJob() {
chromeos::Printer printer;
printer.set_display_name(kName);
printer.SetUri(kUri);
printer.set_id(kPrinterId);
auto cups_print_job = std::make_unique<CupsPrintJob>(
printer, /*job_id=*/0, kTitle, kPagesNumber,
::printing::PrintJob::Source::kPrintPreview, kId, proto::PrintSettings());
cups_print_job->set_printed_page_number(kPrintedPageNumber);
cups_print_job->set_state(CupsPrintJob::State::STATE_STARTED);
return cups_print_job;
}
} // namespace
TEST(PrintJobInfoMojomConversionsTest, PrintJobProtoToMojom) {
mojom::PrintJobInfoPtr print_job_mojo =
printing::print_management::PrintJobProtoToMojom(
CreatePrintJobInfoProto());
EXPECT_EQ(kId, print_job_mojo->id);
EXPECT_EQ(kTitle16, print_job_mojo->title);
EXPECT_EQ(base::Time::FromMillisecondsSinceUnixEpoch(kJobCreationTime),
print_job_mojo->creation_time);
EXPECT_EQ(kPrinterId, print_job_mojo->printer_id);
EXPECT_EQ(kName16, print_job_mojo->printer_name);
EXPECT_EQ(kUri, print_job_mojo->printer_uri.spec());
EXPECT_EQ(kPagesNumber, print_job_mojo->number_of_pages);
EXPECT_EQ(mojom::PrintJobCompletionStatus::kPrinted,
print_job_mojo->completed_info->completion_status);
EXPECT_EQ(mojom::PrinterErrorCode::kNoError,
print_job_mojo->printer_error_code);
}
TEST(PrintJobInfoMojomConversionsTest, CupsPrintJobToMojom) {
auto cups_print_job = CreateCupsPrintJob();
mojom::PrintJobInfoPtr print_job_mojo =
printing::print_management::CupsPrintJobToMojom(*cups_print_job);
EXPECT_EQ(cups_print_job->GetUniqueId(), print_job_mojo->id);
EXPECT_EQ(kTitle16, print_job_mojo->title);
EXPECT_EQ(cups_print_job->creation_time(), print_job_mojo->creation_time);
EXPECT_EQ(kPrinterId, print_job_mojo->printer_id);
EXPECT_EQ(kName16, print_job_mojo->printer_name);
EXPECT_EQ(kUri, print_job_mojo->printer_uri.spec());
EXPECT_EQ(kPagesNumber, print_job_mojo->number_of_pages);
EXPECT_EQ(kPrintedPageNumber,
print_job_mojo->active_print_job_info->printed_pages);
EXPECT_EQ(mojom::ActivePrintJobState::kStarted,
print_job_mojo->active_print_job_info->active_state);
EXPECT_EQ(mojom::PrinterErrorCode::kNoError,
print_job_mojo->printer_error_code);
}
} // namespace ash