Index: chrome/utility/importer/safari_importer_unittest.mm |
diff --git a/chrome/utility/importer/safari_importer_unittest.mm b/chrome/utility/importer/safari_importer_unittest.mm |
index 043e1866e745fe42ca0c7748dc1a51b5686c81e5..6498a729e717f61d17eb3cf9aa4ee3d45448fd45 100644 |
--- a/chrome/utility/importer/safari_importer_unittest.mm |
+++ b/chrome/utility/importer/safari_importer_unittest.mm |
@@ -28,22 +28,24 @@ using base::ASCIIToUTF16; |
// simulated Library directory containing dummy data files in the same |
// structure as ~/Library in the Chrome test data directory. |
// This function returns the path to that directory. |
-base::FilePath GetTestSafariLibraryPath() { |
+base::FilePath GetTestSafariLibraryPath(const std::string& suffix) { |
base::FilePath test_dir; |
PathService::Get(chrome::DIR_TEST_DATA, &test_dir); |
// Our simulated ~/Library directory |
- test_dir = test_dir.AppendASCII("safari_import"); |
- return test_dir; |
+ return |
+ test_dir.AppendASCII("import").AppendASCII("safari").AppendASCII(suffix); |
} |
class SafariImporterTest : public PlatformTest { |
public: |
SafariImporter* GetSafariImporter() { |
- base::FilePath test_library_dir = GetTestSafariLibraryPath(); |
- CHECK(base::PathExists(test_library_dir)) << |
- "Missing test data directory"; |
+ return GetSafariImporterWithPathSuffix("default"); |
+ } |
+ SafariImporter* GetSafariImporterWithPathSuffix(const std::string& suffix) { |
+ base::FilePath test_library_dir = GetTestSafariLibraryPath(suffix); |
+ CHECK(base::PathExists(test_library_dir)); |
return new SafariImporter(test_library_dir); |
} |
}; |
@@ -153,6 +155,70 @@ TEST_F(SafariImporterTest, BookmarkImport) { |
} |
} |
+TEST_F(SafariImporterTest, BookmarkImportWithEmptyBookmarksMenu) { |
+ // Expected results. |
+ const struct { |
+ bool in_toolbar; |
+ GURL url; |
+ // We store the path with levels of nesting delimited by forward slashes. |
+ base::string16 path; |
+ base::string16 title; |
+ } kImportedBookmarksData[] = { |
+ { |
+ true, |
+ GURL("http://www.apple.com/"), |
+ ASCIIToUTF16("Toolbar/"), |
+ ASCIIToUTF16("Apple") |
+ }, |
+ { |
+ true, |
+ GURL("http://www.yahoo.com/"), |
+ ASCIIToUTF16("Toolbar/"), |
+ ASCIIToUTF16("Yahoo!") |
+ }, |
+ { |
+ true, |
+ GURL("http://www.cnn.com/"), |
+ ASCIIToUTF16("Toolbar/News"), |
+ ASCIIToUTF16("CNN") |
+ }, |
+ { |
+ true, |
+ GURL("http://www.nytimes.com/"), |
+ ASCIIToUTF16("Toolbar/News"), |
+ ASCIIToUTF16("The New York Times") |
+ }, |
+ { |
+ false, |
+ GURL("http://www.webkit.org/blog/"), |
+ base::string16(), |
+ ASCIIToUTF16("Surfin' Safari - The WebKit Blog") |
+ }, |
+ }; |
+ |
+ scoped_refptr<SafariImporter> importer( |
+ GetSafariImporterWithPathSuffix("empty_bookmarks_menu")); |
+ std::vector<ImportedBookmarkEntry> bookmarks; |
+ importer->ParseBookmarks(ASCIIToUTF16("Toolbar"), &bookmarks); |
+ size_t num_bookmarks = bookmarks.size(); |
+ ASSERT_EQ(ARRAYSIZE_UNSAFE(kImportedBookmarksData), num_bookmarks); |
+ |
+ for (size_t i = 0; i < num_bookmarks; ++i) { |
+ ImportedBookmarkEntry& entry = bookmarks[i]; |
+ EXPECT_EQ(kImportedBookmarksData[i].in_toolbar, entry.in_toolbar); |
+ EXPECT_EQ(kImportedBookmarksData[i].url, entry.url); |
+ |
+ std::vector<base::string16> path; |
+ Tokenize(kImportedBookmarksData[i].path, ASCIIToUTF16("/"), &path); |
+ ASSERT_EQ(path.size(), entry.path.size()); |
+ for (size_t j = 0; j < path.size(); ++j) { |
+ EXPECT_EQ(path[j], entry.path[j]); |
+ } |
+ |
+ EXPECT_EQ(kImportedBookmarksData[i].title, entry.title); |
+ } |
+} |
+ |
TEST_F(SafariImporterTest, FaviconImport) { |
scoped_refptr<SafariImporter> importer(GetSafariImporter()); |
sql::Connection db; |
@@ -190,7 +256,8 @@ TEST_F(SafariImporterTest, FaviconImport) { |
TEST_F(SafariImporterTest, CanImport) { |
uint16 items = importer::NONE; |
- EXPECT_TRUE(SafariImporterCanImport(GetTestSafariLibraryPath(), &items)); |
+ EXPECT_TRUE(SafariImporterCanImport( |
+ GetTestSafariLibraryPath("default"), &items)); |
EXPECT_EQ(items, importer::HISTORY | importer::FAVORITES); |
EXPECT_EQ(items & importer::COOKIES, importer::NONE); |
EXPECT_EQ(items & importer::PASSWORDS, importer::NONE); |