1 // Copyright 2019 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "components/send_tab_to_self/features.h"
6 
7 #include <memory>
8 #include "base/test/task_environment.h"
9 
10 #include "components/sync/base/sync_prefs.h"
11 #include "components/sync_preferences/testing_pref_service_syncable.h"
12 #include "testing/gtest/include/gtest/gtest.h"
13 
14 namespace send_tab_to_self {
15 
16 namespace {
17 
18 class SendTabToSelfFeaturesTest : public testing::Test {
19  public:
SendTabToSelfFeaturesTest()20   SendTabToSelfFeaturesTest() {
21     syncer::SyncPrefs::RegisterProfilePrefs(prefs_.registry());
22     sync_prefs_ = std::make_unique<syncer::SyncPrefs>(&prefs_);
23   }
24 
25  protected:
26   sync_preferences::TestingPrefServiceSyncable prefs_;
27   std::unique_ptr<syncer::SyncPrefs> sync_prefs_;
28   base::test::TaskEnvironment task_environment_;
29 };
30 
TEST_F(SendTabToSelfFeaturesTest,IsReceivingEnabledByUserOnThisDevice_Enabled)31 TEST_F(SendTabToSelfFeaturesTest,
32        IsReceivingEnabledByUserOnThisDevice_Enabled) {
33   sync_prefs_->SetSyncRequested(true);
34   sync_prefs_->SetFirstSetupComplete();
35   sync_prefs_->SetSelectedTypes(
36       /*keep_everything_synced=*/false,
37       /*registered_types=*/syncer::UserSelectableTypeSet::All(),
38       /*selected_types=*/{syncer::UserSelectableType::kTabs});
39 
40   EXPECT_TRUE(IsReceivingEnabledByUserOnThisDevice(&prefs_));
41 }
42 
TEST_F(SendTabToSelfFeaturesTest,IsReceivingEnabledByUserOnThisDevice_SyncNotRequested)43 TEST_F(SendTabToSelfFeaturesTest,
44        IsReceivingEnabledByUserOnThisDevice_SyncNotRequested) {
45   sync_prefs_->SetSyncRequested(false);
46   sync_prefs_->SetFirstSetupComplete();
47   sync_prefs_->SetSelectedTypes(
48       /*keep_everything_synced=*/false,
49       /*registered_types=*/syncer::UserSelectableTypeSet::All(),
50       /*selected_types=*/{syncer::UserSelectableType::kTabs});
51 
52   EXPECT_FALSE(IsReceivingEnabledByUserOnThisDevice(&prefs_));
53 }
54 
TEST_F(SendTabToSelfFeaturesTest,IsReceivingEnabledByUserOnThisDevice_FirstSetupNotCompleted)55 TEST_F(SendTabToSelfFeaturesTest,
56        IsReceivingEnabledByUserOnThisDevice_FirstSetupNotCompleted) {
57   sync_prefs_->SetSyncRequested(true);
58   // Skip setting FirstSetupComplete.
59   sync_prefs_->SetSelectedTypes(
60       /*keep_everything_synced=*/false,
61       /*registered_types=*/syncer::UserSelectableTypeSet::All(),
62       /*selected_types=*/{syncer::UserSelectableType::kTabs});
63 
64   EXPECT_FALSE(IsReceivingEnabledByUserOnThisDevice(&prefs_));
65 }
66 
TEST_F(SendTabToSelfFeaturesTest,IsReceivingEnabledByUserOnThisDevice_TabsNotSelected)67 TEST_F(SendTabToSelfFeaturesTest,
68        IsReceivingEnabledByUserOnThisDevice_TabsNotSelected) {
69   sync_prefs_->SetSyncRequested(true);
70   sync_prefs_->SetFirstSetupComplete();
71   sync_prefs_->SetSelectedTypes(
72       /*keep_everything_synced=*/false,
73       /*registered_types=*/syncer::UserSelectableTypeSet::All(),
74       /*selected_types=*/{});
75 
76   EXPECT_FALSE(IsReceivingEnabledByUserOnThisDevice(&prefs_));
77 }
78 
79 }  // namespace
80 
81 }  // namespace send_tab_to_self
82