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

Side by Side Diff: ui/file_manager/file_manager/background/js/duplicate_finder_unittest.js

Issue 980603003: Move content deduplication into the scan process. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Don't report error count when zero, and don't report an explicit END to import...since that is impl… Created 5 years, 9 months 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
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** @type {!importer.DuplicateFinder} */ 5 /** @type {!importer.DuplicateFinder} */
6 var duplicateFinder; 6 var duplicateFinder;
7 7
8 /** @type {!VolumeInfo} */ 8 /** @type {!VolumeInfo} */
9 var drive; 9 var drive;
10 10
11 /** 11 /**
12 * Map of file URL to hash code. 12 * Map of file URL to hash code.
13 * @type {!Object<string, string>} 13 * @type {!Object<string, string>}
14 */ 14 */
15 var hashes = {}; 15 var hashes = {};
16 16
17 /** 17 /**
18 * Map of hash code to file URL. 18 * Map of hash code to file URL.
19 * @type {!Object<string, string>} 19 * @type {!Object<string, string>}
20 */ 20 */
21 var fileUrls = {}; 21 var fileUrls = {};
22 22
23 /** @type {!MockFileSystem} */ 23 /** @type {!MockFileSystem} */
24 var fileSystem; 24 var fileSystem;
25 25
26 /** @type {!importer.TestImportHistory} */
27 var testHistory;
28
29 /** @type {function(!FileEntry, !importer.Destination):
30 !importer.Disposition} */
31 var getDisposition;
32
26 // Set up string assets. 33 // Set up string assets.
27 loadTimeData.data = { 34 loadTimeData.data = {
28 CLOUD_IMPORT_ITEMS_REMAINING: '', 35 CLOUD_IMPORT_ITEMS_REMAINING: '',
29 DRIVE_DIRECTORY_LABEL: 'My Drive', 36 DRIVE_DIRECTORY_LABEL: 'My Drive',
30 DOWNLOADS_DIRECTORY_LABEL: 'Downloads' 37 DOWNLOADS_DIRECTORY_LABEL: 'Downloads'
31 }; 38 };
32 39
33 function setUp() { 40 function setUp() {
34 // importer.setupTestLogger(); 41 // importer.setupTestLogger();
35 fileSystem = new MockFileSystem('fake-filesystem'); 42 fileSystem = new MockFileSystem('fake-filesystem');
(...skipping 25 matching lines...) Expand all
61 result[hash] = fileUrls[hash] || []; 68 result[hash] = fileUrls[hash] || [];
62 }); 69 });
63 callback(result); 70 callback(result);
64 } 71 }
65 }, 72 },
66 runtime: { 73 runtime: {
67 lastError: null 74 lastError: null
68 } 75 }
69 }; 76 };
70 77
71 duplicateFinder = new importer.DriveDuplicateFinder(); 78 testHistory = new importer.TestImportHistory();
79 var tracker = new TestTracker();
80 duplicateFinder = new importer.DriveDuplicateFinder(tracker);
81
82 getDisposition = importer.DispositionChecker.createChecker(
83 testHistory, tracker);
72 } 84 }
73 85
74 // Verifies the correct result when a duplicate exists. 86 // Verifies the correct result when a duplicate exists.
75 function testCheckDuplicateTrue(callback) { 87 function testCheckDuplicateTrue(callback) {
76 var filePaths = ['/foo.txt']; 88 var filePaths = ['/foo.txt'];
77 var fileHashes = ['abc123']; 89 var fileHashes = ['abc123'];
78 var files = setupHashes(filePaths, fileHashes); 90 var files = setupHashes(filePaths, fileHashes);
79 91
80 reportPromise( 92 reportPromise(
81 duplicateFinder.checkDuplicate(files[0]) 93 duplicateFinder.isDuplicate(files[0])
82 .then( 94 .then(
83 function(isDuplicate) { 95 function(isDuplicate) {
84 assertTrue(isDuplicate); 96 assertTrue(isDuplicate);
85 }), 97 }),
86 callback); 98 callback);
87 }; 99 };
88 100
89 // Verifies the correct result when a duplicate doesn't exist. 101 // Verifies the correct result when a duplicate doesn't exist.
90 function testCheckDuplicateFalse(callback) { 102 function testCheckDuplicateFalse(callback) {
91 var filePaths = ['/foo.txt']; 103 var filePaths = ['/foo.txt'];
92 var fileHashes = ['abc123']; 104 var fileHashes = ['abc123'];
93 var files = setupHashes(filePaths, fileHashes); 105 var files = setupHashes(filePaths, fileHashes);
94 106
95 // Make another file. 107 // Make another file.
96 var newFilePath = '/bar.txt'; 108 var newFilePath = '/bar.txt';
97 fileSystem.populate([newFilePath]); 109 fileSystem.populate([newFilePath]);
98 var newFile = fileSystem.entries[newFilePath]; 110 var newFile = fileSystem.entries[newFilePath];
99 111
100 reportPromise( 112 reportPromise(
101 duplicateFinder.checkDuplicate(newFile) 113 duplicateFinder.isDuplicate(newFile)
102 .then( 114 .then(
103 function(isDuplicate) { 115 function(isDuplicate) {
104 assertFalse(isDuplicate); 116 assertFalse(isDuplicate);
105 }), 117 }),
106 callback); 118 callback);
107 }; 119 };
108 120
121 // Verifies the correct result when a duplicate doesn't exist.
Ben Kwa 2015/03/05 20:05:10 "when a content duplicate exists."
Steve McKay 2015/03/05 21:39:03 Removed line entirely.
122 function testDispositionChecker_ContentDupe(callback) {
123 var filePaths = ['/foo.txt'];
124 var fileHashes = ['abc123'];
125 var files = setupHashes(filePaths, fileHashes);
126
127 reportPromise(
128 getDisposition(files[0], importer.Destination.GOOGLE_DRIVE)
129 .then(
130 function(disposition) {
131 assertEquals(
132 importer.Disposition.CONTENT_DUPLICATE,
133 disposition);
134 }),
135 callback);
136 };
137
138 // Verifies the correct result when a duplicate doesn't exist.
Ben Kwa 2015/03/05 20:05:10 "when a history duplicate exists."
Steve McKay 2015/03/05 21:39:03 Ditto.
139 function testDispositionChecker_HistoryDupe(callback) {
140 var filePaths = ['/foo.txt'];
141 var fileHashes = ['abc123'];
142 var files = setupHashes(filePaths, fileHashes);
143
144 testHistory.importedPaths[
mtomasz 2015/03/05 04:36:52 nit: Line wrappings look off.
Steve McKay 2015/03/05 21:39:03 Done.
145 '/foo.txt'] =
146 [importer.Destination.GOOGLE_DRIVE];
147
148 reportPromise(
149 getDisposition(files[0], importer.Destination.GOOGLE_DRIVE)
150 .then(
151 function(disposition) {
152 assertEquals(
153 importer.Disposition.HISTORY_DUPLICATE,
154 disposition);
155 }),
156 callback);
157 };
158
159 // Verifies the correct result when a duplicate doesn't exist.
160 function testDispositionChecker_Original(callback) {
161 var filePaths = ['/foo.txt'];
162 var fileHashes = ['abc123'];
163 var files = setupHashes(filePaths, fileHashes);
164
165 // Make another file.
166 var newFilePath = '/bar.txt';
167 fileSystem.populate([newFilePath]);
168 var newFile = fileSystem.entries[newFilePath];
169
170 reportPromise(
171 getDisposition(newFile, importer.Destination.GOOGLE_DRIVE)
172 .then(
173 function(disposition) {
174 assertEquals(importer.Disposition.ORIGINAL, disposition);
175 }),
176 callback);
177 };
178
109 /** 179 /**
110 * @param {!Array.<string>} filePaths 180 * @param {!Array.<string>} filePaths
111 * @param {!Array.<string>} fileHashes 181 * @param {!Array.<string>} fileHashes
112 * @return {!Array.<!FileEntry>} Created files. 182 * @return {!Array.<!FileEntry>} Created files.
113 */ 183 */
114 function setupHashes(filePaths, fileHashes) { 184 function setupHashes(filePaths, fileHashes) {
115 // Set up a filesystem with some files. 185 // Set up a filesystem with some files.
116 fileSystem.populate(filePaths); 186 fileSystem.populate(filePaths);
117 187
118 var files = filePaths.map( 188 var files = filePaths.map(
119 function(filename) { 189 function(filename) {
120 return fileSystem.entries[filename]; 190 return fileSystem.entries[filename];
121 }); 191 });
122 192
123 files.forEach(function(file, index) { 193 files.forEach(function(file, index) {
124 hashes[file.toURL()] = fileHashes[index]; 194 hashes[file.toURL()] = fileHashes[index];
125 fileUrls[fileHashes[index]] = file.toURL(); 195 fileUrls[fileHashes[index]] = file.toURL();
126 }); 196 });
127 197
128 return files; 198 return files;
129 } 199 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698