From dc0dfd7ac9c6fdbd0832abae1f05fcad4dfca0df Mon Sep 17 00:00:00 2001 From: NejcZdovc Date: Mon, 28 Jan 2019 10:19:31 +0100 Subject: [PATCH] Adds unit tests for DB --- .../browser/publisher_info_database.cc | 11 +- .../publisher_info_database_unittest.cc | 100 ++++++++++++++++++ 2 files changed, 107 insertions(+), 4 deletions(-) diff --git a/components/brave_rewards/browser/publisher_info_database.cc b/components/brave_rewards/browser/publisher_info_database.cc index 00b335a2a564..8873210bab8a 100644 --- a/components/brave_rewards/browser/publisher_info_database.cc +++ b/components/brave_rewards/browser/publisher_info_database.cc @@ -302,7 +302,7 @@ PublisherInfoDatabase::GetPanelPublisher( bool initialized = Init(); DCHECK(initialized); - if (!initialized) { + if (!initialized || filter.id.empty()) { return nullptr; } @@ -408,7 +408,7 @@ bool PublisherInfoDatabase::InsertOrUpdateActivityInfo( bool initialized = Init(); DCHECK(initialized); - if (!initialized) { + if (!initialized || info.id.empty()) { return false; } @@ -443,7 +443,7 @@ bool PublisherInfoDatabase::InsertOrUpdateActivityInfos( bool initialized = Init(); DCHECK(initialized); - if (!initialized) { + if (!initialized || list.size() == 0) { return false; } @@ -453,7 +453,10 @@ bool PublisherInfoDatabase::InsertOrUpdateActivityInfos( } for (const auto& info : list) { - InsertOrUpdateActivityInfo(info); + if (!InsertOrUpdateActivityInfo(info)) { + transaction.Rollback(); + return false; + } } return transaction.Commit(); diff --git a/components/brave_rewards/browser/publisher_info_database_unittest.cc b/components/brave_rewards/browser/publisher_info_database_unittest.cc index 14966c230bdb..e0b847c4c80f 100644 --- a/components/brave_rewards/browser/publisher_info_database_unittest.cc +++ b/components/brave_rewards/browser/publisher_info_database_unittest.cc @@ -401,6 +401,106 @@ TEST_F(PublisherInfoDatabaseTest, InsertOrUpdateRecurringDonation) { EXPECT_FALSE(info_sql_2.Step()); } +TEST_F(PublisherInfoDatabaseTest, GetPanelPublisher) { + base::ScopedTempDir temp_dir; + base::FilePath db_file; + CreateTempDatabase(&temp_dir, &db_file); + + /** + * Publisher ID is missing + */ + ledger::ActivityInfoFilter filter_1; + EXPECT_EQ(publisher_info_database_->GetPanelPublisher(filter_1), nullptr); + + /** + * Empty table + */ + ledger::ActivityInfoFilter filter_2; + filter_2.id = "test"; + EXPECT_EQ(publisher_info_database_->GetPanelPublisher(filter_2), nullptr); + + /** + * Ignore month and year filter + */ + ledger::PublisherInfo info_1; + info_1.id = "brave.com"; + info_1.url = "https://brave.com"; + info_1.percent = 11; + info_1.month = ledger::ACTIVITY_MONTH::JANUARY; + info_1.year = 2019; + info_1.reconcile_stamp = 10; + + bool success = publisher_info_database_->InsertOrUpdateActivityInfo(info_1); + EXPECT_TRUE(success); + + ledger::ActivityInfoFilter filter_3; + filter_3.id = "brave.com"; + filter_3.month = ledger::ACTIVITY_MONTH::ANY; + filter_3.year = -1; + filter_3.reconcile_stamp = 10; + std::unique_ptr result = + publisher_info_database_->GetPanelPublisher(filter_3); + EXPECT_TRUE(result); + EXPECT_EQ(result->id, "brave.com"); +} + +TEST_F(PublisherInfoDatabaseTest, InsertOrUpdateActivityInfos) { + base::ScopedTempDir temp_dir; + base::FilePath db_file; + CreateTempDatabase(&temp_dir, &db_file); + + /** + * Good path + */ + ledger::PublisherInfo info_1; + info_1.id = "brave.com"; + info_1.url = "https://brave.com"; + info_1.percent = 11; + info_1.month = ledger::ACTIVITY_MONTH::JANUARY; + info_1.year = 2019; + info_1.reconcile_stamp = 10; + + ledger::PublisherInfo info_2; + info_2.id = "clifton.io"; + info_2.url = "https://clifton.io"; + info_2.percent = 11; + info_2.month = ledger::ACTIVITY_MONTH::JANUARY; + info_2.year = 2019; + info_2.reconcile_stamp = 10; + + ledger::PublisherInfoList list; + list.push_back(info_1); + list.push_back(info_2); + + bool success = publisher_info_database_->InsertOrUpdateActivityInfos(list); + EXPECT_TRUE(success); + + /** + * Empty list + */ + ledger::PublisherInfoList list_empty; + + success = publisher_info_database_->InsertOrUpdateActivityInfos(list_empty); + EXPECT_FALSE(success); + + /** + * One publisher has empty ID + */ + + ledger::PublisherInfo info_3; + info_3.id = ""; + info_3.url = "https://page.io"; + info_3.percent = 11; + info_3.month = ledger::ACTIVITY_MONTH::JANUARY; + info_3.year = 2019; + info_3.reconcile_stamp = 10; + + list.push_back(info_3); + + success = publisher_info_database_->InsertOrUpdateActivityInfos(list); + EXPECT_FALSE(success); +} + TEST_F(PublisherInfoDatabaseTest, InsertPendingContribution) { }