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

Unified Diff: components/ntp_snippets/ntp_snippets_service_unittest.cc

Issue 2061803002: 📰 The Status card reports disabled sync states (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@simplifyBridge
Patch Set: Refactor out status detection, update tests. Created 4 years, 6 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 side-by-side diff with in-line comments
Download patch
Index: components/ntp_snippets/ntp_snippets_service_unittest.cc
diff --git a/components/ntp_snippets/ntp_snippets_service_unittest.cc b/components/ntp_snippets/ntp_snippets_service_unittest.cc
index fac43c445ef9a5c64085345bbd062289c8f7e571..2a158822fcb8b3667a0b15796af45aef0f1c3630 100644
--- a/components/ntp_snippets/ntp_snippets_service_unittest.cc
+++ b/components/ntp_snippets/ntp_snippets_service_unittest.cc
@@ -27,13 +27,11 @@
#include "components/ntp_snippets/ntp_snippets_database.h"
#include "components/ntp_snippets/ntp_snippets_fetcher.h"
#include "components/ntp_snippets/ntp_snippets_scheduler.h"
+#include "components/ntp_snippets/ntp_snippets_test_utils.h"
#include "components/ntp_snippets/switches.h"
#include "components/prefs/testing_pref_service.h"
-#include "components/signin/core/browser/account_tracker_service.h"
#include "components/signin/core/browser/fake_profile_oauth2_token_service.h"
#include "components/signin/core/browser/fake_signin_manager.h"
-#include "components/signin/core/browser/test_signin_client.h"
-#include "components/sync_driver/fake_sync_service.h"
#include "google_apis/google_api_keys.h"
#include "net/url_request/test_url_fetcher_factory.h"
#include "net/url_request/url_request_test_util.h"
@@ -223,21 +221,12 @@ class MockScheduler : public NTPSnippetsScheduler {
MOCK_METHOD0(Unschedule, bool());
};
-class MockSyncService : public sync_driver::FakeSyncService {
- public:
- MockSyncService() {}
- virtual ~MockSyncService() {}
- MOCK_CONST_METHOD0(CanSyncStart, bool());
- MOCK_CONST_METHOD0(IsSyncActive, bool());
- MOCK_CONST_METHOD0(ConfigurationDone, bool());
- MOCK_CONST_METHOD0(GetActiveDataTypes, syncer::ModelTypeSet());
-};
-
class MockServiceObserver : public NTPSnippetsServiceObserver {
public:
MOCK_METHOD0(NTPSnippetsServiceLoaded, void());
MOCK_METHOD0(NTPSnippetsServiceShutdown, void());
- MOCK_METHOD0(NTPSnippetsServiceDisabled, void());
+ MOCK_METHOD1(NTPSnippetsServiceDisabledReasonChanged,
+ void(DisabledReason disabled_reason));
};
class WaitForDBLoad : public NTPSnippetsServiceObserver {
@@ -259,7 +248,8 @@ class WaitForDBLoad : public NTPSnippetsServiceObserver {
}
void NTPSnippetsServiceShutdown() override {}
- void NTPSnippetsServiceDisabled() override {}
+ void NTPSnippetsServiceDisabledReasonChanged(
+ DisabledReason disabled_reason) override {}
NTPSnippetsService* service_;
base::RunLoop run_loop_;
@@ -269,20 +259,15 @@ class WaitForDBLoad : public NTPSnippetsServiceObserver {
} // namespace
-class NTPSnippetsServiceTest : public testing::Test {
+class NTPSnippetsServiceTest : public test::NTPSnippetsTestBase {
public:
NTPSnippetsServiceTest()
: fake_url_fetcher_factory_(
/*default_factory=*/&failing_url_fetcher_factory_),
test_url_(base::StringPrintf(kTestContentSnippetsServerFormat,
- google_apis::GetAPIKey().c_str())),
- pref_service_(new TestingPrefServiceSimple()),
- signin_client_(new TestSigninClient(nullptr)),
- account_tracker_(new AccountTrackerService()),
- fake_signin_manager_(new FakeSigninManagerBase(signin_client_.get(),
- account_tracker_.get())),
- fake_token_service_(new FakeProfileOAuth2TokenService()) {
- NTPSnippetsService::RegisterProfilePrefs(pref_service_->registry());
+ google_apis::GetAPIKey().c_str())) {
+ NTPSnippetsService::RegisterProfilePrefs(pref_service()->registry());
+
// Since no SuggestionsService is injected in tests, we need to force the
// service to fetch from all hosts.
base::CommandLine::ForCurrentProcess()->AppendSwitch(
@@ -302,7 +287,7 @@ class NTPSnippetsServiceTest : public testing::Test {
}
void SetUp() override {
- ResetSyncServiceMock();
+ test::NTPSnippetsTestBase::SetUp();
EXPECT_CALL(mock_scheduler(), Schedule(_, _, _, _)).Times(1);
CreateSnippetsService(/*enabled=*/true);
}
@@ -320,16 +305,24 @@ class NTPSnippetsServiceTest : public testing::Test {
// create the new one, otherwise opening the new database will fail.
service_.reset();
+ ResetSigninManager();
+ NTPSnippetsFetcher* snippets_fetcher = new NTPSnippetsFetcher(
Bernhard Bauer 2016/06/28 13:47:39 FWIW, I would probably put this into a unique_ptr
dgn 2016/06/28 16:38:57 Done.
+ fake_signin_manager(), fake_token_service_.get(),
+ std::move(request_context_getter), base::Bind(&ParseJson),
+ /*is_stable_channel=*/true);
+
+ fake_signin_manager()->SignIn("foo@bar.com");
+ snippets_fetcher->SetPersonalizationForTesting(
+ NTPSnippetsFetcher::Personalization::kNonPersonal);
+
service_.reset(new NTPSnippetsService(
- enabled, pref_service_.get(), mock_sync_service_.get(), nullptr,
- std::string("fr"), &scheduler_,
- base::WrapUnique(new NTPSnippetsFetcher(
- fake_signin_manager_.get(), fake_token_service_.get(),
- std::move(request_context_getter), base::Bind(&ParseJson),
- /*is_stable_channel=*/true)),
- /*image_fetcher=*/nullptr, /*image_decoder=*/nullptr,
- base::WrapUnique(new NTPSnippetsDatabase(database_dir_.path(),
- task_runner))));
+ enabled, pref_service(), nullptr, std::string("fr"), &scheduler_,
Bernhard Bauer 2016/06/28 13:47:39 std::string has an implicit constructor, so you do
dgn 2016/06/28 16:38:57 Done.
+ base::WrapUnique(snippets_fetcher), /*image_fetcher=*/nullptr,
+ /*image_fetcher=*/nullptr, base::WrapUnique(new NTPSnippetsDatabase(
+ database_dir_.path(), task_runner)),
+ base::WrapUnique(new NTPSnippetsStatusService(fake_signin_manager(),
+ mock_sync_service()))));
+
if (enabled)
WaitForDBLoad(service_.get());
}
@@ -338,7 +331,6 @@ class NTPSnippetsServiceTest : public testing::Test {
const GURL& test_url() { return test_url_; }
NTPSnippetsService* service() { return service_.get(); }
MockScheduler& mock_scheduler() { return scheduler_; }
- MockSyncService* mock_sync_service() { return mock_sync_service_.get(); }
// Provide the json to be returned by the fake fetcher.
void SetUpFetchResponse(const std::string& json) {
@@ -352,34 +344,12 @@ class NTPSnippetsServiceTest : public testing::Test {
base::RunLoop().RunUntilIdle();
}
- // Call before the service is set up to initialize a sync service.
- // Subsequent calls reset the return values of the mocked methods.
- void ResetSyncServiceMock() {
- if (!mock_sync_service_) {
- // Use a NiceMock to avoid the "uninteresting call" warnings.
- mock_sync_service_.reset(new testing::NiceMock<MockSyncService>);
- }
-
- ON_CALL(*mock_sync_service_, CanSyncStart()).WillByDefault(Return(true));
- ON_CALL(*mock_sync_service_, IsSyncActive()).WillByDefault(Return(true));
- ON_CALL(*mock_sync_service_, ConfigurationDone())
- .WillByDefault(Return(true));
- ON_CALL(*mock_sync_service_, GetActiveDataTypes())
- .WillByDefault(
- Return(syncer::ModelTypeSet(syncer::HISTORY_DELETE_DIRECTIVES)));
- }
-
private:
base::MessageLoop message_loop_;
FailingFakeURLFetcherFactory failing_url_fetcher_factory_;
// Instantiation of factory automatically sets itself as URLFetcher's factory.
net::FakeURLFetcherFactory fake_url_fetcher_factory_;
const GURL test_url_;
- std::unique_ptr<TestingPrefServiceSimple> pref_service_;
- std::unique_ptr<TestSigninClient> signin_client_;
- std::unique_ptr<AccountTrackerService> account_tracker_;
- std::unique_ptr<MockSyncService> mock_sync_service_; // Null by default.
- std::unique_ptr<SigninManagerBase> fake_signin_manager_;
std::unique_ptr<OAuth2TokenService> fake_token_service_;
MockScheduler scheduler_;
// Last so that the dependencies are deleted after the service.
@@ -393,6 +363,7 @@ class NTPSnippetsServiceTest : public testing::Test {
class NTPSnippetsServiceDisabledTest : public NTPSnippetsServiceTest {
public:
void SetUp() override {
+ test::NTPSnippetsTestBase::SetUp();
EXPECT_CALL(mock_scheduler(), Unschedule()).Times(1);
CreateSnippetsService(/*enabled=*/false);
}
@@ -875,59 +846,25 @@ TEST_F(NTPSnippetsServiceTest, DiscardShouldRespectAllKnownUrls) {
ASSERT_THAT(service()->snippets(), IsEmpty());
}
-TEST_F(NTPSnippetsServiceTest, SyncStateCompatibility) {
- // The default test setup has a compatible sync state.
- EXPECT_EQ(DisabledReason::NONE, service()->GetDisabledReason());
-
- // History sync disabled.
- ON_CALL(*mock_sync_service(), GetActiveDataTypes())
- .WillByDefault(Return(syncer::ModelTypeSet()));
- EXPECT_EQ(DisabledReason::HISTORY_SYNC_DISABLED,
- service()->GetDisabledReason());
- ResetSyncServiceMock();
-
- // Not done loading.
- ON_CALL(*mock_sync_service(), ConfigurationDone())
- .WillByDefault(Return(false));
- ON_CALL(*mock_sync_service(), GetActiveDataTypes())
- .WillByDefault(Return(syncer::ModelTypeSet()));
- EXPECT_EQ(DisabledReason::HISTORY_SYNC_STATE_UNKNOWN,
- service()->GetDisabledReason());
- ResetSyncServiceMock();
-
- // Sync disabled.
- ON_CALL(*mock_sync_service(), CanSyncStart()).WillByDefault(Return(false));
- EXPECT_EQ(DisabledReason::HISTORY_SYNC_DISABLED,
- service()->GetDisabledReason());
- ResetSyncServiceMock();
-
- // No service.
- service()->sync_service_ = nullptr;
- EXPECT_EQ(DisabledReason::HISTORY_SYNC_DISABLED,
- service()->GetDisabledReason());
-}
-
TEST_F(NTPSnippetsServiceTest, HistorySyncStateChanges) {
MockServiceObserver mock_observer;
service()->AddObserver(&mock_observer);
- // Simulate user disabled sync.
- ON_CALL(*mock_sync_service(), CanSyncStart()).WillByDefault(Return(false));
- // The service should notify observers it's been disabled and clear the
- // snippets instead of pulling new ones.
- EXPECT_CALL(mock_observer, NTPSnippetsServiceDisabled());
+ // Simulate user signed out
SetUpFetchResponse(GetTestJson({GetSnippet()}));
- service()->OnStateChanged();
+ EXPECT_CALL(mock_observer, NTPSnippetsServiceDisabledReasonChanged(
+ DisabledReason::SIGNED_OUT));
+ service()->UpdateStateForStatus(DisabledReason::SIGNED_OUT);
base::RunLoop().RunUntilIdle();
EXPECT_EQ(NTPSnippetsService::State::DISABLED, service()->state_);
EXPECT_THAT(service()->snippets(), IsEmpty()); // No fetch should be made.
- // Simulate user sign in.
- ResetSyncServiceMock();
- // The service should be ready again and load snippets.
- EXPECT_CALL(mock_scheduler(), Schedule(_, _, _, _)).Times(1);
+ // Simulate user sign in. The service should be ready again and load snippets.
SetUpFetchResponse(GetTestJson({GetSnippet()}));
- service()->OnStateChanged();
+ EXPECT_CALL(mock_observer,
+ NTPSnippetsServiceDisabledReasonChanged(DisabledReason::NONE));
+ EXPECT_CALL(mock_scheduler(), Schedule(_, _, _, _)).Times(1);
+ service()->UpdateStateForStatus(DisabledReason::NONE);
base::RunLoop().RunUntilIdle();
EXPECT_EQ(NTPSnippetsService::State::READY, service()->state_);
EXPECT_FALSE(service()->snippets().empty());

Powered by Google App Engine
This is Rietveld 408576698