blob: cba7e08d40929cf6e777d7a9c5f66fec8f26fc72 [file] [log] [blame]
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#import "ios/chrome/browser/bookmarks/bookmarks_utils.h"
#import "components/bookmarks/browser/bookmark_model.h"
#import "ios/chrome/browser/bookmarks/bookmark_ios_unit_test_support.h"
#import "ios/chrome/browser/shared/model/browser_state/test_chrome_browser_state.h"
#import "ios/chrome/browser/shared/model/prefs/pref_names.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."
#endif
namespace {
class BookmarksUtilsTest : public BookmarkIOSUnitTestSupport {
protected:
void SetUp() override {
BookmarkIOSUnitTestSupport::SetUp();
prefs_ = chrome_browser_state_->GetPrefs();
mobile_node_ = local_or_syncable_bookmark_model_->mobile_node();
folder_node_ = AddFolder(mobile_node_, u"Folder");
bookmark_node_ = AddBookmark(folder_node_, u"Bookmark");
}
void SetDefaultBookmarkFolderPrefsHelper(int64_t folder_id) {
prefs_->SetInt64(prefs::kIosBookmarkLastUsedFolderReceivingBookmarks,
folder_id);
prefs_->SetInteger(
prefs::kIosBookmarkLastUsedStorageReceivingBookmarks,
static_cast<int>(bookmarks::StorageType::kLocalOrSyncable));
}
const bookmarks::BookmarkNode* GetDefaultBookmarkFolderHelper() {
return GetDefaultBookmarkFolder(
prefs_, /*is_account_bookmark_model_available*/ false,
local_or_syncable_bookmark_model_, account_bookmark_model_);
}
PrefService* prefs_ = nullptr;
const bookmarks::BookmarkNode* mobile_node_ = nullptr;
const bookmarks::BookmarkNode* folder_node_ = nullptr;
const bookmarks::BookmarkNode* bookmark_node_ = nullptr;
};
// Tests GetDefaultBookmarkFolder() when not default folder was set.
TEST_F(BookmarksUtilsTest, GetDefaultBookmarkFolderWithNoValueSet) {
// Test default folder, with no value set before.
const bookmarks::BookmarkNode* default_folder_node =
GetDefaultBookmarkFolderHelper();
EXPECT_EQ(default_folder_node, mobile_node_);
}
// Tests when an unknown id is set as the default folder.
TEST_F(BookmarksUtilsTest, GetDefaultBookmarkFolderWithWrongValue) {
SetDefaultBookmarkFolderPrefsHelper(-1);
const bookmarks::BookmarkNode* default_folder_node =
GetDefaultBookmarkFolderHelper();
EXPECT_EQ(default_folder_node, mobile_node_);
}
// Tests when the folder is set.
TEST_F(BookmarksUtilsTest, GetDefaultBookmarkFolderWithDefaultFolderSet) {
SetDefaultBookmarkFolderPrefsHelper(folder_node_->id());
const bookmarks::BookmarkNode* default_folder_node =
GetDefaultBookmarkFolderHelper();
EXPECT_EQ(default_folder_node, folder_node_);
}
// Test when a bookmark node is set as the default folder.
// See crbug.com/1450146.
TEST_F(BookmarksUtilsTest, GetDefaultBookmarkFolderWithDefaultBookmarkSet) {
SetDefaultBookmarkFolderPrefsHelper(bookmark_node_->id());
const bookmarks::BookmarkNode* default_folder_node =
GetDefaultBookmarkFolderHelper();
EXPECT_EQ(default_folder_node, mobile_node_);
}
} // namespace