Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(78)

Side by Side Diff: chrome/browser/extensions/api/document_scan/document_scan_api_unittest.cc

Issue 286933006: Implement a JavaScript API for document scanning (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Starting over. This used to be 286933006 Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2014 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 #include "chrome/browser/extensions/api/document_scan/document_scan_api.h"
5
6 #include <string>
7 #include <vector>
8
9 #include "chrome/browser/extensions/api/document_scan/mock_document_scan_interfa ce.h"
10 #include "chrome/browser/extensions/extension_api_unittest.h"
11 #include "chrome/browser/extensions/extension_function_test_utils.h"
12 #include "testing/gtest/include/gtest/gtest.h"
13
14 using testing::_;
15
16 namespace extensions {
17
18 namespace api {
19
20 // Tests of networking_private_crypto support for Networking Private API.
21 class DocumentScanScanFunctionTest : public ExtensionApiUnittest {
22 public:
23 DocumentScanScanFunctionTest()
24 : function_(new DocumentScanScanFunction()),
25 document_scan_interface_(new MockDocumentScanInterface()) {}
26 virtual ~DocumentScanScanFunctionTest() {}
27
28 void SetUp() {
29 ExtensionApiUnittest::SetUp();
30 // Passes ownership.
31 function_->document_scan_interface_.reset(document_scan_interface_);
32 }
33
34 protected:
35 std::string RunFunctionAndReturnError(const std::string& args) {
36 function_->set_extension(extension());
37 std::string error =
38 extension_function_test_utils::RunFunctionAndReturnError(
39 function_, args, browser(),
40 extension_function_test_utils::NONE);
41 return error;
42 }
43
44 DocumentScanScanFunction* function_;
45 MockDocumentScanInterface* document_scan_interface_; // Owned by function_.
46 };
47
48 ACTION_P2(InvokeListScannersCallback, scanner_list, error) {
49 ::std::tr1::get<0>(args).Run(scanner_list, error);
50 }
51
52 ACTION_P3(InvokeScanCallback, data, mime_type, error) {
53 ::std::tr1::get<3>(args).Run(data, mime_type, error);
54 }
55
56 TEST_F(DocumentScanScanFunctionTest, GestureRequired) {
57 EXPECT_EQ("User gesture required to perform scan",
58 RunFunctionAndReturnError("[{}]"));
59 }
60
61 TEST_F(DocumentScanScanFunctionTest, NoScanners) {
62 function_->set_user_gesture(true);
63 EXPECT_CALL(*document_scan_interface_, ListScanners(_))
64 .WillOnce(InvokeListScannersCallback(
65 std::vector<DocumentScanInterface::ScannerDescription>(),
66 ""));
67 EXPECT_EQ("Scanner not available",
68 RunFunctionAndReturnError("[{}]"));
69 }
70
71 TEST_F(DocumentScanScanFunctionTest, NoMatchingScanners) {
72 function_->set_user_gesture(true);
73 std::vector<DocumentScanInterface::ScannerDescription> scanner_list;
74 DocumentScanInterface::ScannerDescription scanner;
75 scanner.image_mime_type = "img/fresco";
76 scanner_list.push_back(scanner);
77 EXPECT_CALL(*document_scan_interface_, ListScanners(_))
78 .WillOnce(InvokeListScannersCallback(scanner_list, ""));
79 EXPECT_EQ(
80 "Scanner not available",
81 RunFunctionAndReturnError("[{\"mimeTypes\": [\"img/silverpoint\"]}]"));
82 }
83
84 TEST_F(DocumentScanScanFunctionTest, ScanFailure) {
85 function_->set_user_gesture(true);
86 std::vector<DocumentScanInterface::ScannerDescription> scanner_list;
87 DocumentScanInterface::ScannerDescription scanner;
88 const char kMimeType[] = "img/tempera";
89 const char kScannerName[] = "Michelangelo";
90 scanner.name = kScannerName;
91 scanner.image_mime_type = kMimeType;
92 scanner_list.push_back(scanner);
93 EXPECT_CALL(*document_scan_interface_, ListScanners(_))
94 .WillOnce(InvokeListScannersCallback(scanner_list, ""));
95 const char kScanError[] = "Someone ate all the eggs";
96 EXPECT_CALL(*document_scan_interface_, Scan(kScannerName, _, _, _))
97 .WillOnce(InvokeScanCallback("", "", kScanError));
98 EXPECT_EQ(kScanError,
99 RunFunctionAndReturnError("[{\"mimeTypes\": [\"img/tempera\"]}]"));
100 }
101
102 TEST_F(DocumentScanScanFunctionTest, Success) {
103 std::vector<DocumentScanInterface::ScannerDescription> scanner_list;
104 scanner_list.push_back(DocumentScanInterface::ScannerDescription());
105 EXPECT_CALL(*document_scan_interface_, ListScanners(_))
106 .WillOnce(InvokeListScannersCallback(scanner_list, ""));
107 const char kScanData[] = "A beautiful picture";
108 const char kMimeType[] = "img/encaustic";
109 EXPECT_CALL(*document_scan_interface_, Scan(_, _, _, _))
110 .WillOnce(InvokeScanCallback(kScanData, kMimeType, ""));
111 function_->set_user_gesture(true);
112 scoped_ptr<base::DictionaryValue> result(RunFunctionAndReturnDictionary(
113 function_, "[{}]"));
114 ASSERT_NE(nullptr, result.get());
115 document_scan::ScanResults scan_results;
116 EXPECT_TRUE(document_scan::ScanResults::Populate(*result, &scan_results));
117 EXPECT_THAT(scan_results.data_urls, testing::ElementsAre(kScanData));
118 EXPECT_EQ(kMimeType, scan_results.mime_type);
119 }
120
121 } // namespace api
122
123 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698