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