// Copyright 2022 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/ui/content_suggestions/content_suggestions_mediator.h"
#import "base/memory/raw_ptr.h"
#import "base/memory/scoped_refptr.h"
#import "base/test/scoped_feature_list.h"
#import "components/signin/public/base/signin_pref_names.h"
#import "components/sync_preferences/testing_pref_service_syncable.h"
#import "ios/chrome/browser/default_browser/model/utils_test_support.h"
#import "ios/chrome/browser/shared/model/browser/browser.h"
#import "ios/chrome/browser/shared/model/browser/test/test_browser.h"
#import "ios/chrome/browser/shared/model/prefs/pref_names.h"
#import "ios/chrome/browser/shared/model/profile/test/test_profile_ios.h"
#import "ios/chrome/browser/shared/model/web_state_list/web_state_list.h"
#import "ios/chrome/browser/shared/model/web_state_list/web_state_opener.h"
#import "ios/chrome/browser/shared/public/features/features.h"
#import "ios/chrome/browser/ui/content_suggestions/content_suggestions_constants.h"
#import "ios/chrome/test/ios_chrome_scoped_testing_local_state.h"
#import "ios/web/public/test/fakes/fake_navigation_manager.h"
#import "ios/web/public/test/fakes/fake_web_state.h"
#import "ios/web/public/test/web_task_environment.h"
#import "testing/gtest_mac.h"
#import "testing/platform_test.h"
#import "third_party/ocmock/OCMock/OCMock.h"
#import "third_party/ocmock/gtest_support.h"
// Testing Suite for ContentSuggestionsMediator
class ContentSuggestionsMediatorTest : public PlatformTest {
public:
void SetUp() override {
TestChromeBrowserState::Builder test_cbs_builder;
chrome_browser_state_ = std::move(test_cbs_builder).Build();
browser_ = std::make_unique<TestBrowser>(chrome_browser_state_.get());
web_state_list_ = browser_->GetWebStateList();
fake_web_state_ = std::make_unique<web::FakeWebState>();
fake_web_state_->SetBrowserState(chrome_browser_state_.get());
consumer_ = OCMProtocolMock(@protocol(ContentSuggestionsConsumer));
mediator_ = [[ContentSuggestionsMediator alloc] init];
mediator_.consumer = consumer_;
}
~ContentSuggestionsMediatorTest() override { [mediator_ disconnect]; }
protected:
std::unique_ptr<web::FakeWebState> CreateWebState(const char* url) {
auto test_web_state = std::make_unique<web::FakeWebState>();
test_web_state->SetCurrentURL(GURL(url));
test_web_state->SetNavigationManager(
std::make_unique<web::FakeNavigationManager>());
test_web_state->SetBrowserState(chrome_browser_state_.get());
return test_web_state;
}
web::WebTaskEnvironment task_environment_;
base::test::ScopedFeatureList scoped_feature_list_;
sync_preferences::TestingPrefServiceSyncable pref_service_;
IOSChromeScopedTestingLocalState scoped_testing_local_state_;
std::unique_ptr<TestChromeBrowserState> chrome_browser_state_;
std::unique_ptr<Browser> browser_;
raw_ptr<WebStateList> web_state_list_;
std::unique_ptr<web::FakeWebState> fake_web_state_;
id consumer_;
ContentSuggestionsMediator* mediator_;
};