Index: components/ntp_snippets/remote/remote_suggestions_status_service_unittest.cc |
diff --git a/components/ntp_snippets/remote/remote_suggestions_status_service_unittest.cc b/components/ntp_snippets/remote/remote_suggestions_status_service_unittest.cc |
index a8c6baaf8f44587c09de836e92fbd5b93a019b7c..30511f81fb8631f21562fb3bcef1c595a3920a8c 100644 |
--- a/components/ntp_snippets/remote/remote_suggestions_status_service_unittest.cc |
+++ b/components/ntp_snippets/remote/remote_suggestions_status_service_unittest.cc |
@@ -6,6 +6,8 @@ |
#include <memory> |
+#include "components/ntp_snippets/features.h" |
+#include "components/ntp_snippets/ntp_snippets_constants.h" |
#include "components/ntp_snippets/pref_names.h" |
#include "components/ntp_snippets/remote/test_utils.h" |
#include "components/prefs/pref_registry_simple.h" |
@@ -14,6 +16,7 @@ |
#include "components/signin/core/browser/fake_signin_manager.h" |
#include "components/signin/core/browser/test_signin_client.h" |
#include "components/signin/core/common/signin_pref_names.h" |
+#include "components/variations/variations_params_manager.h" |
#include "testing/gmock/include/gmock/gmock.h" |
#include "testing/gtest/include/gtest/gtest.h" |
@@ -33,11 +36,40 @@ class RemoteSuggestionsStatusServiceTest : public ::testing::Test { |
protected: |
test::RemoteSuggestionsTestUtils utils_; |
+ variations::testing::VariationParamsManager params_manager_; |
}; |
-// TODO(jkrcal): Extend the ways to override variation parameters in unit-test |
-// (bug 645447), and recover the SigninStateCompatibility test that sign-in is |
-// required when the parameter is overriden. |
+TEST_F(RemoteSuggestionsStatusServiceTest, SigninNeededIfSpecifiedByParam) { |
+ // Specify by the parameter that signin is required. |
+ params_manager_.SetVariationParamsWithFeatureAssociations( |
+ ntp_snippets::kStudyName, {{"fetching_requires_signin", "true"}}, |
+ {ntp_snippets::kArticleSuggestionsFeature.name}); |
+ |
+ auto service = MakeService(); |
+ |
+ // The default test setup is signed out. |
+ EXPECT_EQ(RemoteSuggestionsStatus::SIGNED_OUT_AND_DISABLED, |
+ service->GetStatusFromDeps()); |
+ |
+ // Once signed in, we should be in a compatible state. |
+ utils_.fake_signin_manager()->SignIn("foo@bar.com"); |
+ EXPECT_EQ(RemoteSuggestionsStatus::ENABLED_AND_SIGNED_IN, |
+ service->GetStatusFromDeps()); |
+} |
+ |
+TEST_F(RemoteSuggestionsStatusServiceTest, NoSigninNeeded) { |
+ auto service = MakeService(); |
+ |
+ // By default, no signin is required. |
+ EXPECT_EQ(RemoteSuggestionsStatus::ENABLED_AND_SIGNED_OUT, |
+ service->GetStatusFromDeps()); |
+ |
+ // One can still sign in. |
+ utils_.fake_signin_manager()->SignIn("foo@bar.com"); |
+ EXPECT_EQ(RemoteSuggestionsStatus::ENABLED_AND_SIGNED_IN, |
+ service->GetStatusFromDeps()); |
+} |
+ |
TEST_F(RemoteSuggestionsStatusServiceTest, DisabledViaPref) { |
auto service = MakeService(); |
@@ -50,7 +82,7 @@ TEST_F(RemoteSuggestionsStatusServiceTest, DisabledViaPref) { |
EXPECT_EQ(RemoteSuggestionsStatus::EXPLICITLY_DISABLED, |
service->GetStatusFromDeps()); |
- // Signing-in shouldn't matter anymore. |
+ // The other dependencies shouldn't matter anymore. |
utils_.fake_signin_manager()->SignIn("foo@bar.com"); |
EXPECT_EQ(RemoteSuggestionsStatus::EXPLICITLY_DISABLED, |
service->GetStatusFromDeps()); |