Index: components/dom_distiller/core/distilled_content_store_unittest.cc |
diff --git a/components/dom_distiller/core/distilled_content_store_unittest.cc b/components/dom_distiller/core/distilled_content_store_unittest.cc |
index 5bab00e0dcf78818826dedbbe03deb2b311cea1b..f5a43b46096d94d6cb104a85f0ef24c817c71f48 100644 |
--- a/components/dom_distiller/core/distilled_content_store_unittest.cc |
+++ b/components/dom_distiller/core/distilled_content_store_unittest.cc |
@@ -126,7 +126,7 @@ TEST_F(InMemoryContentStoreTest, SaveAndLoadMultipleArticles) { |
// Store second article. |
const ArticleEntry second_entry = |
- CreateEntry("second", "url1", "url2", "url3"); |
+ CreateEntry("second", "url4", "url5", "url6"); |
const DistilledArticleProto second_stored_proto = |
CreateDistilledArticleForEntry(second_entry); |
store_->SaveContent(second_entry, |
@@ -181,7 +181,7 @@ TEST_F(InMemoryContentStoreTest, SaveAndLoadMoreThanMaxArticles) { |
// Store second article. |
const ArticleEntry second_entry = |
- CreateEntry("second", "url1", "url2", "url3"); |
+ CreateEntry("second", "url4", "url5", "url6"); |
const DistilledArticleProto second_stored_proto = |
CreateDistilledArticleForEntry(second_entry); |
store_->SaveContent(second_entry, |
@@ -193,7 +193,7 @@ TEST_F(InMemoryContentStoreTest, SaveAndLoadMoreThanMaxArticles) { |
save_success_ = false; |
// Store third article. |
- const ArticleEntry third_entry = CreateEntry("third", "url1", "url2", "url3"); |
+ const ArticleEntry third_entry = CreateEntry("third", "url7", "url8", "url9"); |
const DistilledArticleProto third_stored_proto = |
CreateDistilledArticleForEntry(third_entry); |
store_->SaveContent(third_entry, |
@@ -218,7 +218,7 @@ TEST_F(InMemoryContentStoreTest, SaveAndLoadMoreThanMaxArticles) { |
// Store fourth article. |
const ArticleEntry fourth_entry = |
- CreateEntry("fourth", "url1", "url2", "url3"); |
+ CreateEntry("fourth", "url10", "url11", "url12"); |
const DistilledArticleProto fourth_stored_proto = |
CreateDistilledArticleForEntry(fourth_entry); |
store_->SaveContent(fourth_entry, |
@@ -240,4 +240,94 @@ TEST_F(InMemoryContentStoreTest, SaveAndLoadMoreThanMaxArticles) { |
EXPECT_FALSE(load_success_); |
} |
+// Tests whether saving and then loading a single article works as expected. |
+TEST_F(InMemoryContentStoreTest, LookupArticleByURL) { |
+ base::MessageLoop loop; |
+ const ArticleEntry entry = CreateEntry("test-id", "url1", "url2", "url3"); |
+ const DistilledArticleProto stored_proto = |
+ CreateDistilledArticleForEntry(entry); |
+ store_->SaveContent(entry, |
+ stored_proto, |
+ base::Bind(&InMemoryContentStoreTest::OnSaveCallback, |
+ base::Unretained(this))); |
+ base::MessageLoop::current()->RunUntilIdle(); |
+ EXPECT_TRUE(save_success_); |
+ save_success_ = false; |
+ |
+ // Create an entry where the entry ID does not match, but the first URL does. |
+ const ArticleEntry lookup_entry1 = CreateEntry("lookup-id", "url1", "", ""); |
+ store_->LoadContent(lookup_entry1, |
+ base::Bind(&InMemoryContentStoreTest::OnLoadCallback, |
+ base::Unretained(this))); |
+ base::MessageLoop::current()->RunUntilIdle(); |
+ EXPECT_TRUE(load_success_); |
+ EXPECT_EQ(stored_proto.SerializeAsString(), |
+ loaded_proto_->SerializeAsString()); |
+ |
+ // Create an entry where the entry ID does not match, but the second URL does. |
+ const ArticleEntry lookup_entry2 = |
+ CreateEntry("lookup-id", "bogus", "url2", ""); |
+ store_->LoadContent(lookup_entry2, |
+ base::Bind(&InMemoryContentStoreTest::OnLoadCallback, |
+ base::Unretained(this))); |
+ base::MessageLoop::current()->RunUntilIdle(); |
+ EXPECT_TRUE(load_success_); |
+ EXPECT_EQ(stored_proto.SerializeAsString(), |
+ loaded_proto_->SerializeAsString()); |
+} |
+ |
+// Verifies that the content store does not store unlimited number of articles, |
+// but expires the oldest ones when the limit for number of articles is reached. |
+TEST_F(InMemoryContentStoreTest, LoadArticleByURLAfterExpungedFromCache) { |
+ base::MessageLoop loop; |
+ |
+ // Create a new store with only |kMaxNumArticles| articles as the limit. |
+ const int kMaxNumArticles = 1; |
+ store_.reset(new InMemoryContentStore(kMaxNumArticles)); |
+ |
+ // Store an article. |
+ const ArticleEntry first_entry = CreateEntry("first", "url1", "url2", "url3"); |
+ const DistilledArticleProto first_stored_proto = |
+ CreateDistilledArticleForEntry(first_entry); |
+ store_->SaveContent(first_entry, |
+ first_stored_proto, |
+ base::Bind(&InMemoryContentStoreTest::OnSaveCallback, |
+ base::Unretained(this))); |
+ base::MessageLoop::current()->RunUntilIdle(); |
+ EXPECT_TRUE(save_success_); |
+ save_success_ = false; |
+ |
+ // Looking up the first entry by URL should succeed when it is still in the |
+ // cache. |
+ const ArticleEntry first_entry_lookup = |
+ CreateEntry("lookup-id", "url1", "", ""); |
+ store_->LoadContent(first_entry_lookup, |
+ base::Bind(&InMemoryContentStoreTest::OnLoadCallback, |
+ base::Unretained(this))); |
+ base::MessageLoop::current()->RunUntilIdle(); |
+ EXPECT_TRUE(load_success_); |
+ EXPECT_EQ(first_stored_proto.SerializeAsString(), |
+ loaded_proto_->SerializeAsString()); |
+ |
+ // Store second article. This will remove the first article from the cache. |
+ const ArticleEntry second_entry = |
+ CreateEntry("second", "url4", "url5", "url6"); |
+ const DistilledArticleProto second_stored_proto = |
+ CreateDistilledArticleForEntry(second_entry); |
+ store_->SaveContent(second_entry, |
+ second_stored_proto, |
+ base::Bind(&InMemoryContentStoreTest::OnSaveCallback, |
+ base::Unretained(this))); |
+ base::MessageLoop::current()->RunUntilIdle(); |
+ EXPECT_TRUE(save_success_); |
+ save_success_ = false; |
+ |
+ // Looking up the first entry by URL should fail when it is not in the cache. |
+ store_->LoadContent(first_entry_lookup, |
+ base::Bind(&InMemoryContentStoreTest::OnLoadCallback, |
+ base::Unretained(this))); |
+ base::MessageLoop::current()->RunUntilIdle(); |
+ EXPECT_FALSE(load_success_); |
+} |
+ |
} // namespace dom_distiller |