Skip to content

Commit

Permalink
[Brave News]: Don't use TestingProfile in component unittests (#25914)
Browse files Browse the repository at this point in the history
  • Loading branch information
fallaciousreasoning authored Oct 15, 2024
1 parent 0d79285 commit b3602aa
Show file tree
Hide file tree
Showing 9 changed files with 240 additions and 241 deletions.
32 changes: 0 additions & 32 deletions components/brave_news/browser/DEPS
Original file line number Diff line number Diff line change
Expand Up @@ -7,35 +7,3 @@ include_rules = [
"+services/network/test",
"+third_party/re2",
]

specific_include_rules = {
# unit tests should not depend on Profile
# also components should not depend on Profile
"brave_news_pref_manager_unittest\.cc": [
"!chrome/test/base/testing_profile.h",
],
"channels_controller_unittest\.cc": [
"!chrome/test/base/testing_profile.h",
],
"direct_feed_controller_unittest\.cc": [
"!chrome/test/base/testing_profile.h",
],
"direct_feed_controller_unittest\.cc": [
"!chrome/test/base/testing_profile.h",
],
"initialization_promise_unittest\.cc": [
"!chrome/test/base/testing_profile.h",
],
"publishers_controller_unittest\.cc": [
"!chrome/test/base/testing_profile.h",
],
"suggestions_controller_unittest\.cc": [
"!chrome/test/base/testing_profile.h",
],
"topics_fetcher_unittest\.cc": [
"!chrome/test/base/testing_profile.h",
],
"feed_building_unittest\.cc": [
"!chrome/test/base/testing_profile.h",
],
}
176 changes: 91 additions & 85 deletions components/brave_news/browser/brave_news_pref_manager_unittest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -5,45 +5,50 @@

#include "brave/components/brave_news/browser/brave_news_pref_manager.h"

#include <memory>

#include "base/containers/contains.h"
#include "base/containers/flat_set.h"
#include "brave/components/brave_news/common/brave_news.mojom.h"
#include "brave/components/brave_news/common/pref_names.h"
#include "brave/components/brave_news/common/subscriptions_snapshot.h"
#include "chrome/test/base/testing_profile.h"
#include "content/public/test/browser_task_environment.h"
#include "components/sync_preferences/testing_pref_service_syncable.h"
#include "testing/gtest/include/gtest/gtest.h"

namespace brave_news {

class BraveNewsPrefManagerTest : public testing::Test {
public:
BraveNewsPrefManagerTest() : pref_manager_(*profile_.GetPrefs()) {}
BraveNewsPrefManagerTest() {
prefs::RegisterProfilePrefs(pref_service_.registry());

pref_manager_ = std::make_unique<BraveNewsPrefManager>(pref_service_);
}

protected:
content::BrowserTaskEnvironment browser_task_environment_;
sync_preferences::TestingPrefServiceSyncable pref_service_;

TestingProfile profile_;
BraveNewsPrefManager pref_manager_;
std::unique_ptr<BraveNewsPrefManager> pref_manager_;
};

TEST_F(BraveNewsPrefManagerTest, CanAddDirectFeed) {
EXPECT_NE("", pref_manager_.AddDirectPublisher(GURL("https://example.com"),
"Example"));
EXPECT_NE("", pref_manager_->AddDirectPublisher(GURL("https://example.com"),
"Example"));
}

TEST_F(BraveNewsPrefManagerTest, CantAddDuplicateFeed) {
auto id = pref_manager_.AddDirectPublisher(GURL("https://example.com"),
"Example 1");
auto id = pref_manager_->AddDirectPublisher(GURL("https://example.com"),
"Example 1");

// As the feed is already present, this should be the same publisher.
EXPECT_EQ(id, pref_manager_.AddDirectPublisher(GURL("https://example.com"),
"Example 2"));
EXPECT_EQ(id, pref_manager_->AddDirectPublisher(GURL("https://example.com"),
"Example 2"));
}

TEST_F(BraveNewsPrefManagerTest, EmptyTitleFallsBackToFeedSource) {
constexpr char kFeedSource[] = "https://example.com/";
auto id = pref_manager_.AddDirectPublisher(GURL(kFeedSource), "");
auto subscriptions = pref_manager_.GetSubscriptions().direct_feeds();
auto id = pref_manager_->AddDirectPublisher(GURL(kFeedSource), "");
auto subscriptions = pref_manager_->GetSubscriptions().direct_feeds();
ASSERT_EQ(1u, subscriptions.size());

for (const auto& subscription : subscriptions) {
Expand All @@ -54,25 +59,25 @@ TEST_F(BraveNewsPrefManagerTest, EmptyTitleFallsBackToFeedSource) {
}

TEST_F(BraveNewsPrefManagerTest, ChannelsDiffIsSane) {
auto one = pref_manager_.GetSubscriptions();
pref_manager_.SetChannelSubscribed("en_US", "News", true);
auto one = pref_manager_->GetSubscriptions();
pref_manager_->SetChannelSubscribed("en_US", "News", true);

auto two = pref_manager_.GetSubscriptions();
auto two = pref_manager_->GetSubscriptions();
auto diff = two.DiffChannels(one);
ASSERT_EQ(1u, diff.changed.size());
EXPECT_EQ("News", diff.changed[0]);

pref_manager_.SetChannelSubscribed("en_NZ", "News", true);
auto three = pref_manager_.GetSubscriptions();
pref_manager_->SetChannelSubscribed("en_NZ", "News", true);
auto three = pref_manager_->GetSubscriptions();
ASSERT_EQ(0u, three.DiffChannels(two).changed.size());

pref_manager_.SetChannelSubscribed("en_NZ", "The Spinoff", true);
pref_manager_.SetChannelSubscribed("en_NZ", "Politics", true);
auto four = pref_manager_.GetSubscriptions();
pref_manager_->SetChannelSubscribed("en_NZ", "The Spinoff", true);
pref_manager_->SetChannelSubscribed("en_NZ", "Politics", true);
auto four = pref_manager_->GetSubscriptions();

pref_manager_.SetChannelSubscribed("en_NZ", "FooBar", true);
pref_manager_.SetChannelSubscribed("en_NZ", "Politics", false);
auto five = pref_manager_.GetSubscriptions();
pref_manager_->SetChannelSubscribed("en_NZ", "FooBar", true);
pref_manager_->SetChannelSubscribed("en_NZ", "Politics", false);
auto five = pref_manager_->GetSubscriptions();

diff = five.DiffChannels(four);
EXPECT_EQ(2u, diff.changed.size());
Expand All @@ -81,28 +86,29 @@ TEST_F(BraveNewsPrefManagerTest, ChannelsDiffIsSane) {
}

TEST_F(BraveNewsPrefManagerTest, PublishersDiffIsSane) {
pref_manager_.SetPublisherSubscribed("One", mojom::UserEnabled::ENABLED);
pref_manager_.SetPublisherSubscribed("Two", mojom::UserEnabled::ENABLED);
pref_manager_.SetPublisherSubscribed("Three", mojom::UserEnabled::ENABLED);
pref_manager_.SetPublisherSubscribed("Four", mojom::UserEnabled::DISABLED);
pref_manager_.SetPublisherSubscribed("Five", mojom::UserEnabled::DISABLED);
pref_manager_.SetPublisherSubscribed("Six", mojom::UserEnabled::DISABLED);
pref_manager_->SetPublisherSubscribed("One", mojom::UserEnabled::ENABLED);
pref_manager_->SetPublisherSubscribed("Two", mojom::UserEnabled::ENABLED);
pref_manager_->SetPublisherSubscribed("Three", mojom::UserEnabled::ENABLED);
pref_manager_->SetPublisherSubscribed("Four", mojom::UserEnabled::DISABLED);
pref_manager_->SetPublisherSubscribed("Five", mojom::UserEnabled::DISABLED);
pref_manager_->SetPublisherSubscribed("Six", mojom::UserEnabled::DISABLED);
auto direct_one =
pref_manager_.AddDirectPublisher(GURL("https://example.com"), "");
pref_manager_.AddDirectPublisher(GURL("https://foobar.com"), "");

auto s1 = pref_manager_.GetSubscriptions();
pref_manager_.SetPublisherSubscribed("One", mojom::UserEnabled::NOT_MODIFIED);
pref_manager_.SetPublisherSubscribed("Two", mojom::UserEnabled::DISABLED);
pref_manager_.SetPublisherSubscribed("Four",
mojom::UserEnabled::NOT_MODIFIED);
pref_manager_.SetPublisherSubscribed("Five", mojom::UserEnabled::ENABLED);
pref_manager_.SetPublisherSubscribed(direct_one,
mojom::UserEnabled::DISABLED);
pref_manager_->AddDirectPublisher(GURL("https://example.com"), "");
pref_manager_->AddDirectPublisher(GURL("https://foobar.com"), "");

auto s1 = pref_manager_->GetSubscriptions();
pref_manager_->SetPublisherSubscribed("One",
mojom::UserEnabled::NOT_MODIFIED);
pref_manager_->SetPublisherSubscribed("Two", mojom::UserEnabled::DISABLED);
pref_manager_->SetPublisherSubscribed("Four",
mojom::UserEnabled::NOT_MODIFIED);
pref_manager_->SetPublisherSubscribed("Five", mojom::UserEnabled::ENABLED);
pref_manager_->SetPublisherSubscribed(direct_one,
mojom::UserEnabled::DISABLED);
auto direct_three =
pref_manager_.AddDirectPublisher(GURL("https://foo.nz"), "");
pref_manager_->AddDirectPublisher(GURL("https://foo.nz"), "");

auto s2 = pref_manager_.GetSubscriptions();
auto s2 = pref_manager_->GetSubscriptions();
auto diff = s2.DiffPublishers(s1);

base::flat_set<std::string> distinct_changes(diff.changed);
Expand All @@ -119,109 +125,109 @@ TEST_F(BraveNewsPrefManagerTest, PublishersDiffIsSane) {

TEST_F(BraveNewsPrefManagerTest, DirectFeedCanBeInspectedAndRemoved) {
auto id =
pref_manager_.AddDirectPublisher(GURL("https://example.com"), "Example");
pref_manager_->AddDirectPublisher(GURL("https://example.com"), "Example");

auto parsed = pref_manager_.GetSubscriptions().direct_feeds();
auto parsed = pref_manager_->GetSubscriptions().direct_feeds();
EXPECT_EQ(parsed.size(), 1u);
EXPECT_EQ(id, parsed[0].id);
EXPECT_EQ("Example", parsed[0].title);
EXPECT_EQ(GURL("https://example.com"), parsed[0].url);

pref_manager_.SetPublisherSubscribed(id, mojom::UserEnabled::DISABLED);
parsed = pref_manager_.GetSubscriptions().direct_feeds();
pref_manager_->SetPublisherSubscribed(id, mojom::UserEnabled::DISABLED);
parsed = pref_manager_->GetSubscriptions().direct_feeds();
EXPECT_EQ(0u, parsed.size());
}

TEST_F(BraveNewsPrefManagerTest, CanToggleChannelSubscribed) {
EXPECT_FALSE(
pref_manager_.GetSubscriptions().GetChannelSubscribed("en_US", "Test"));
pref_manager_->GetSubscriptions().GetChannelSubscribed("en_US", "Test"));

pref_manager_.SetChannelSubscribed("en_US", "Test", true);
pref_manager_->SetChannelSubscribed("en_US", "Test", true);
EXPECT_TRUE(
pref_manager_.GetSubscriptions().GetChannelSubscribed("en_US", "Test"));
pref_manager_->GetSubscriptions().GetChannelSubscribed("en_US", "Test"));

pref_manager_.SetChannelSubscribed("en_US", "Test", false);
pref_manager_->SetChannelSubscribed("en_US", "Test", false);
EXPECT_FALSE(
pref_manager_.GetSubscriptions().GetChannelSubscribed("en_US", "Test"));
pref_manager_->GetSubscriptions().GetChannelSubscribed("en_US", "Test"));
}

TEST_F(BraveNewsPrefManagerTest,
ChangingAChannelInOneLocaleDoesNotAffectOtherLocales) {
EXPECT_FALSE(
pref_manager_.GetSubscriptions().GetChannelSubscribed("en_US", "Test"));
pref_manager_->GetSubscriptions().GetChannelSubscribed("en_US", "Test"));
EXPECT_FALSE(
pref_manager_.GetSubscriptions().GetChannelSubscribed("ja_JA", "Test"));
pref_manager_->GetSubscriptions().GetChannelSubscribed("ja_JA", "Test"));

pref_manager_.SetChannelSubscribed("en_US", "Test", true);
pref_manager_->SetChannelSubscribed("en_US", "Test", true);
EXPECT_TRUE(
pref_manager_.GetSubscriptions().GetChannelSubscribed("en_US", "Test"));
pref_manager_->GetSubscriptions().GetChannelSubscribed("en_US", "Test"));
EXPECT_FALSE(
pref_manager_.GetSubscriptions().GetChannelSubscribed("ja_JA", "Test"));
pref_manager_->GetSubscriptions().GetChannelSubscribed("ja_JA", "Test"));

pref_manager_.SetChannelSubscribed("ja_JA", "Test", true);
pref_manager_->SetChannelSubscribed("ja_JA", "Test", true);
EXPECT_TRUE(
pref_manager_.GetSubscriptions().GetChannelSubscribed("en_US", "Test"));
pref_manager_->GetSubscriptions().GetChannelSubscribed("en_US", "Test"));
EXPECT_TRUE(
pref_manager_.GetSubscriptions().GetChannelSubscribed("ja_JA", "Test"));
pref_manager_->GetSubscriptions().GetChannelSubscribed("ja_JA", "Test"));

pref_manager_.SetChannelSubscribed("en_US", "Test", false);
pref_manager_->SetChannelSubscribed("en_US", "Test", false);
EXPECT_FALSE(
pref_manager_.GetSubscriptions().GetChannelSubscribed("en_US", "Test"));
pref_manager_->GetSubscriptions().GetChannelSubscribed("en_US", "Test"));
EXPECT_TRUE(
pref_manager_.GetSubscriptions().GetChannelSubscribed("ja_JA", "Test"));
pref_manager_->GetSubscriptions().GetChannelSubscribed("ja_JA", "Test"));

pref_manager_.SetChannelSubscribed("ja_JA", "Test", false);
pref_manager_->SetChannelSubscribed("ja_JA", "Test", false);
EXPECT_FALSE(
pref_manager_.GetSubscriptions().GetChannelSubscribed("en_US", "Test"));
pref_manager_->GetSubscriptions().GetChannelSubscribed("en_US", "Test"));
EXPECT_FALSE(
pref_manager_.GetSubscriptions().GetChannelSubscribed("ja_JA", "Test"));
pref_manager_->GetSubscriptions().GetChannelSubscribed("ja_JA", "Test"));
}

TEST_F(BraveNewsPrefManagerTest, NoChannelsNoChannelLocales) {
EXPECT_EQ(0u, pref_manager_.GetSubscriptions().GetChannelLocales().size());
EXPECT_EQ(0u, pref_manager_->GetSubscriptions().GetChannelLocales().size());
}

TEST_F(BraveNewsPrefManagerTest, SubscribedChannelLocalesIncluded) {
pref_manager_.SetChannelSubscribed("en_US", "Test", true);
pref_manager_->SetChannelSubscribed("en_US", "Test", true);

auto locales = pref_manager_.GetSubscriptions().GetChannelLocales();
auto locales = pref_manager_->GetSubscriptions().GetChannelLocales();
EXPECT_EQ(1u, locales.size());
EXPECT_EQ("en_US", locales[0]);

pref_manager_.SetChannelSubscribed("en_US", "Foo", true);
locales = pref_manager_.GetSubscriptions().GetChannelLocales();
pref_manager_->SetChannelSubscribed("en_US", "Foo", true);
locales = pref_manager_->GetSubscriptions().GetChannelLocales();
EXPECT_EQ(1u, locales.size());

pref_manager_.SetChannelSubscribed("ja_JA", "Foo", true);
locales = pref_manager_.GetSubscriptions().GetChannelLocales();
pref_manager_->SetChannelSubscribed("ja_JA", "Foo", true);
locales = pref_manager_->GetSubscriptions().GetChannelLocales();
EXPECT_EQ(2u, locales.size());
EXPECT_EQ("en_US", locales[0]);
EXPECT_EQ("ja_JA", locales[1]);
}

TEST_F(BraveNewsPrefManagerTest, LocaleWithNoSubscribedChannelsIsNotIncluded) {
pref_manager_.SetChannelSubscribed("en_US", "Test", true);
pref_manager_->SetChannelSubscribed("en_US", "Test", true);

auto locales = pref_manager_.GetSubscriptions().GetChannelLocales();
auto locales = pref_manager_->GetSubscriptions().GetChannelLocales();
EXPECT_EQ(1u, locales.size());
EXPECT_EQ("en_US", locales[0]);

pref_manager_.SetChannelSubscribed("en_US", "Test", false);
locales = pref_manager_.GetSubscriptions().GetChannelLocales();
pref_manager_->SetChannelSubscribed("en_US", "Test", false);
locales = pref_manager_->GetSubscriptions().GetChannelLocales();
EXPECT_EQ(0u, locales.size());
}

TEST_F(BraveNewsPrefManagerTest, ChannelMigrationsAreApplied) {
pref_manager_.SetChannelSubscribed("en_US", "Tech News", true);
pref_manager_.SetChannelSubscribed("en_US", "Sport", true);
pref_manager_->SetChannelSubscribed("en_US", "Tech News", true);
pref_manager_->SetChannelSubscribed("en_US", "Sport", true);

EXPECT_FALSE(pref_manager_.GetSubscriptions().GetChannelSubscribed(
EXPECT_FALSE(pref_manager_->GetSubscriptions().GetChannelSubscribed(
"en_US", "Tech News"));
EXPECT_TRUE(pref_manager_.GetSubscriptions().GetChannelSubscribed(
EXPECT_TRUE(pref_manager_->GetSubscriptions().GetChannelSubscribed(
"en_US", "Technology"));
EXPECT_FALSE(
pref_manager_.GetSubscriptions().GetChannelSubscribed("en_US", "Sport"));
EXPECT_TRUE(
pref_manager_.GetSubscriptions().GetChannelSubscribed("en_US", "Sports"));
pref_manager_->GetSubscriptions().GetChannelSubscribed("en_US", "Sport"));
EXPECT_TRUE(pref_manager_->GetSubscriptions().GetChannelSubscribed("en_US",
"Sports"));
}
} // namespace brave_news
Loading

0 comments on commit b3602aa

Please sign in to comment.