[NTP OptOut] Refactoring tests
A promissed follow-up test refactoring, which removes friending of test
classes. It also found a bug, already fixed in original patch.
Bug: 805171
Change-Id: I1d7c3a8043df705f3e21cd7dabdab401b424f08f
Reviewed-on: https://chromium-review.googlesource.com/903586
Commit-Queue: Marc Treib <treib@chromium.org>
Reviewed-by: Marc Treib <treib@chromium.org>
Reviewed-by: Jan Krcal <jkrcal@chromium.org>
Reviewed-by: Tim Schumann <tschumann@chromium.org>
Cr-Commit-Position: refs/heads/master@{#536045}
diff --git a/components/ntp_snippets/remote/remote_suggestions_status_service_impl.h b/components/ntp_snippets/remote/remote_suggestions_status_service_impl.h
index 06aa81e..ed0234bd 100644
--- a/components/ntp_snippets/remote/remote_suggestions_status_service_impl.h
+++ b/components/ntp_snippets/remote/remote_suggestions_status_service_impl.h
@@ -6,7 +6,6 @@
#define COMPONENTS_NTP_SNIPPETS_REMOTE_REMOTE_SUGGESTIONS_STATUS_SERVICE_IMPL_H_
#include "base/callback.h"
-#include "base/gtest_prod_util.h"
#include "base/scoped_observer.h"
#include "components/ntp_snippets/remote/remote_suggestions_status_service.h"
#include "components/prefs/pref_change_registrar.h"
@@ -32,25 +31,6 @@
void OnSignInStateChanged(bool has_signed_in) override;
private:
- // TODO(jkrcal): Rewrite the tests using the public API - observing status
- // changes instead of calling private GetStatusFromDeps() directly.
- FRIEND_TEST_ALL_PREFIXES(RemoteSuggestionsStatusServiceImplTest,
- SigninNeededIfSpecifiedByParam);
- FRIEND_TEST_ALL_PREFIXES(RemoteSuggestionsStatusServiceImplTest,
- NoSigninNeeded);
- FRIEND_TEST_ALL_PREFIXES(RemoteSuggestionsStatusServiceImplTest,
- DisabledViaPref);
- FRIEND_TEST_ALL_PREFIXES(RemoteSuggestionsStatusServiceImplTest,
- DisabledViaAdditionalPref);
- FRIEND_TEST_ALL_PREFIXES(RemoteSuggestionsStatusServiceImplTest,
- EnabledAfterListFolded);
- FRIEND_TEST_ALL_PREFIXES(RemoteSuggestionsStatusServiceImplTest,
- DisabledWhenListFoldedOnStart);
- FRIEND_TEST_ALL_PREFIXES(RemoteSuggestionsStatusServiceImplTest,
- EnablingAfterFoldedStart);
- FRIEND_TEST_ALL_PREFIXES(RemoteSuggestionsStatusServiceImplTest,
- EnablingAfterFoldedStartSignedIn);
-
// Callbacks for the PrefChangeRegistrar.
void OnSnippetsEnabledChanged();
void OnListVisibilityChanged();
diff --git a/components/ntp_snippets/remote/remote_suggestions_status_service_impl_unittest.cc b/components/ntp_snippets/remote/remote_suggestions_status_service_impl_unittest.cc
index eedf9fb..9294376 100644
--- a/components/ntp_snippets/remote/remote_suggestions_status_service_impl_unittest.cc
+++ b/components/ntp_snippets/remote/remote_suggestions_status_service_impl_unittest.cc
@@ -22,14 +22,12 @@
namespace {
const char kTestPrefName[] = "search_suggestions.test_name";
-void OnStatusChange(RemoteSuggestionsStatus old_status,
- RemoteSuggestionsStatus new_status) {}
-
} // namespace
class RemoteSuggestionsStatusServiceImplTest : public ::testing::Test {
public:
- RemoteSuggestionsStatusServiceImplTest() {
+ RemoteSuggestionsStatusServiceImplTest()
+ : last_status_(RemoteSuggestionsStatus::ENABLED_AND_SIGNED_IN) {
RemoteSuggestionsStatusServiceImpl::RegisterProfilePrefs(
utils_.pref_service()->registry());
@@ -45,11 +43,21 @@
auto service = std::make_unique<RemoteSuggestionsStatusServiceImpl>(
false, utils_.pref_service(),
list_hiding_enabled ? std::string() : kTestPrefName);
- service->Init(base::BindRepeating(&OnStatusChange));
+ service->Init(base::BindRepeating(
+ &RemoteSuggestionsStatusServiceImplTest::OnStatusChange,
+ base::Unretained(this)));
return service;
}
+ RemoteSuggestionsStatus last_status() const { return last_status_; }
+
protected:
+ void OnStatusChange(RemoteSuggestionsStatus old_status,
+ RemoteSuggestionsStatus new_status) {
+ last_status_ = new_status;
+ }
+
+ RemoteSuggestionsStatus last_status_;
test::RemoteSuggestionsTestUtils utils_;
variations::testing::VariationParamsManager params_manager_;
};
@@ -58,49 +66,41 @@
auto service = MakeService(/*list_hiding_enabled=*/false);
// By default, no signin is required.
- EXPECT_EQ(RemoteSuggestionsStatus::ENABLED_AND_SIGNED_OUT,
- service->GetStatusFromDeps());
+ EXPECT_EQ(RemoteSuggestionsStatus::ENABLED_AND_SIGNED_OUT, last_status());
// Signin should cause a state change.
service->OnSignInStateChanged(/*has_signed_in=*/true);
- EXPECT_EQ(RemoteSuggestionsStatus::ENABLED_AND_SIGNED_IN,
- service->GetStatusFromDeps());
+ EXPECT_EQ(RemoteSuggestionsStatus::ENABLED_AND_SIGNED_IN, last_status());
}
TEST_F(RemoteSuggestionsStatusServiceImplTest, DisabledViaPref) {
auto service = MakeService(/*list_hiding_enabled=*/false);
// The default test setup is signed out. The service is enabled.
- ASSERT_EQ(RemoteSuggestionsStatus::ENABLED_AND_SIGNED_OUT,
- service->GetStatusFromDeps());
+ ASSERT_EQ(RemoteSuggestionsStatus::ENABLED_AND_SIGNED_OUT, last_status());
// Once the enabled pref is set to false, we should be disabled.
utils_.pref_service()->SetBoolean(prefs::kEnableSnippets, false);
- EXPECT_EQ(RemoteSuggestionsStatus::EXPLICITLY_DISABLED,
- service->GetStatusFromDeps());
+ EXPECT_EQ(RemoteSuggestionsStatus::EXPLICITLY_DISABLED, last_status());
// The state should not change, even though a signin has occurred.
service->OnSignInStateChanged(/*has_signed_in=*/true);
- EXPECT_EQ(RemoteSuggestionsStatus::EXPLICITLY_DISABLED,
- service->GetStatusFromDeps());
+ EXPECT_EQ(RemoteSuggestionsStatus::EXPLICITLY_DISABLED, last_status());
}
TEST_F(RemoteSuggestionsStatusServiceImplTest, DisabledViaAdditionalPref) {
auto service = MakeService(/*list_hiding_enabled=*/false);
// The default test setup is signed out. The service is enabled.
- ASSERT_EQ(RemoteSuggestionsStatus::ENABLED_AND_SIGNED_OUT,
- service->GetStatusFromDeps());
+ ASSERT_EQ(RemoteSuggestionsStatus::ENABLED_AND_SIGNED_OUT, last_status());
// Once the additional pref is set to false, we should be disabled.
utils_.pref_service()->SetBoolean(kTestPrefName, false);
- EXPECT_EQ(RemoteSuggestionsStatus::EXPLICITLY_DISABLED,
- service->GetStatusFromDeps());
+ EXPECT_EQ(RemoteSuggestionsStatus::EXPLICITLY_DISABLED, last_status());
// The state should not change, even though a signin has occurred.
service->OnSignInStateChanged(/*has_signed_in=*/true);
- EXPECT_EQ(RemoteSuggestionsStatus::EXPLICITLY_DISABLED,
- service->GetStatusFromDeps());
+ EXPECT_EQ(RemoteSuggestionsStatus::EXPLICITLY_DISABLED, last_status());
}
TEST_F(RemoteSuggestionsStatusServiceImplTest, EnabledAfterListFolded) {
@@ -109,19 +109,16 @@
EXPECT_TRUE(utils_.pref_service()->GetBoolean(prefs::kArticlesListVisible));
// The default test setup is signed out. The service is enabled.
- ASSERT_EQ(RemoteSuggestionsStatus::ENABLED_AND_SIGNED_OUT,
- service->GetStatusFromDeps());
+ ASSERT_EQ(RemoteSuggestionsStatus::ENABLED_AND_SIGNED_OUT, last_status());
// When the user toggles the visibility of articles list in UI off the service
// should still be enabled until the end of the session.
utils_.pref_service()->SetBoolean(prefs::kArticlesListVisible, false);
- EXPECT_EQ(RemoteSuggestionsStatus::ENABLED_AND_SIGNED_OUT,
- service->GetStatusFromDeps());
+ EXPECT_EQ(RemoteSuggestionsStatus::ENABLED_AND_SIGNED_OUT, last_status());
// Signin should cause a state change.
service->OnSignInStateChanged(/*has_signed_in=*/true);
- EXPECT_EQ(RemoteSuggestionsStatus::ENABLED_AND_SIGNED_IN,
- service->GetStatusFromDeps());
+ EXPECT_EQ(RemoteSuggestionsStatus::ENABLED_AND_SIGNED_IN, last_status());
}
TEST_F(RemoteSuggestionsStatusServiceImplTest, DisabledWhenListFoldedOnStart) {
@@ -129,13 +126,11 @@
auto service = MakeService(/*list_hiding_enabled="*/ true);
// The state should be disabled when starting with no list shown.
- EXPECT_EQ(RemoteSuggestionsStatus::EXPLICITLY_DISABLED,
- service->GetStatusFromDeps());
+ EXPECT_EQ(RemoteSuggestionsStatus::EXPLICITLY_DISABLED, last_status());
// The state should not change, even though a signin has occurred.
service->OnSignInStateChanged(/*has_signed_in=*/true);
- EXPECT_EQ(RemoteSuggestionsStatus::EXPLICITLY_DISABLED,
- service->GetStatusFromDeps());
+ EXPECT_EQ(RemoteSuggestionsStatus::EXPLICITLY_DISABLED, last_status());
}
TEST_F(RemoteSuggestionsStatusServiceImplTest, EnablingAfterFoldedStart) {
@@ -143,19 +138,16 @@
auto service = MakeService(/*list_hiding_enabled="*/ true);
// The state should be disabled when starting with no list shown.
- EXPECT_EQ(RemoteSuggestionsStatus::EXPLICITLY_DISABLED,
- service->GetStatusFromDeps());
+ EXPECT_EQ(RemoteSuggestionsStatus::EXPLICITLY_DISABLED, last_status());
// When the user toggles the visibility of articles list in UI on, the service
// should get enabled.
utils_.pref_service()->SetBoolean(prefs::kArticlesListVisible, true);
- EXPECT_EQ(RemoteSuggestionsStatus::ENABLED_AND_SIGNED_OUT,
- service->GetStatusFromDeps());
+ EXPECT_EQ(RemoteSuggestionsStatus::ENABLED_AND_SIGNED_OUT, last_status());
// Signin should cause a state change.
service->OnSignInStateChanged(/*has_signed_in=*/true);
- EXPECT_EQ(RemoteSuggestionsStatus::ENABLED_AND_SIGNED_IN,
- service->GetStatusFromDeps());
+ EXPECT_EQ(RemoteSuggestionsStatus::ENABLED_AND_SIGNED_IN, last_status());
}
TEST_F(RemoteSuggestionsStatusServiceImplTest,
@@ -165,14 +157,12 @@
// Signin should not cause a state change, because UI is not visible.
service->OnSignInStateChanged(/*has_signed_in=*/true);
- EXPECT_EQ(RemoteSuggestionsStatus::EXPLICITLY_DISABLED,
- service->GetStatusFromDeps());
+ EXPECT_EQ(RemoteSuggestionsStatus::EXPLICITLY_DISABLED, last_status());
// When the user toggles the visibility of articles list in UI on, the service
// should get enabled.
utils_.pref_service()->SetBoolean(prefs::kArticlesListVisible, true);
- EXPECT_EQ(RemoteSuggestionsStatus::ENABLED_AND_SIGNED_IN,
- service->GetStatusFromDeps());
+ EXPECT_EQ(RemoteSuggestionsStatus::ENABLED_AND_SIGNED_IN, last_status());
}
} // namespace ntp_snippets