| Index: components/ntp_snippets/ntp_snippets_database_unittest.cc
|
| diff --git a/components/ntp_snippets/ntp_snippets_database_unittest.cc b/components/ntp_snippets/ntp_snippets_database_unittest.cc
|
| index 5a7cf570240facbeb590a6c89fe3ab5c248147a7..1640d43e31344bdc49fb2f206bc13388a5eadcda 100644
|
| --- a/components/ntp_snippets/ntp_snippets_database_unittest.cc
|
| +++ b/components/ntp_snippets/ntp_snippets_database_unittest.cc
|
| @@ -83,10 +83,11 @@ class NTPSnippetsDatabaseTest : public testing::Test {
|
| void OnSnippetsLoaded(NTPSnippet::PtrVector snippets) {
|
| OnSnippetsLoadedImpl(snippets);
|
| }
|
| -
|
| MOCK_METHOD1(OnSnippetsLoadedImpl,
|
| void(const NTPSnippet::PtrVector& snippets));
|
|
|
| + MOCK_METHOD1(OnImageLoaded, void(std::string));
|
| +
|
| private:
|
| base::MessageLoop message_loop_;
|
| base::ScopedTempDir database_dir_;
|
| @@ -109,10 +110,15 @@ TEST_F(NTPSnippetsDatabaseTest, LoadBeforeInit) {
|
| CreateDatabase();
|
| EXPECT_FALSE(db()->IsInitialized());
|
|
|
| + // Start a snippet and image load before the DB is initialized.
|
| db()->LoadSnippets(base::Bind(&NTPSnippetsDatabaseTest::OnSnippetsLoaded,
|
| base::Unretained(this)));
|
| + db()->LoadImage("id", base::Bind(&NTPSnippetsDatabaseTest::OnImageLoaded,
|
| + base::Unretained(this)));
|
|
|
| + // They should be serviced once initialization finishes.
|
| EXPECT_CALL(*this, OnSnippetsLoadedImpl(_));
|
| + EXPECT_CALL(*this, OnImageLoaded(_));
|
| base::RunLoop().RunUntilIdle();
|
| EXPECT_TRUE(db()->IsInitialized());
|
| }
|
| @@ -127,10 +133,12 @@ TEST_F(NTPSnippetsDatabaseTest, LoadAfterInit) {
|
|
|
| Mock::VerifyAndClearExpectations(this);
|
|
|
| + EXPECT_CALL(*this, OnSnippetsLoadedImpl(_));
|
| db()->LoadSnippets(base::Bind(&NTPSnippetsDatabaseTest::OnSnippetsLoaded,
|
| base::Unretained(this)));
|
| -
|
| - EXPECT_CALL(*this, OnSnippetsLoadedImpl(_));
|
| + EXPECT_CALL(*this, OnImageLoaded(_));
|
| + db()->LoadImage("id", base::Bind(&NTPSnippetsDatabaseTest::OnImageLoaded,
|
| + base::Unretained(this)));
|
| base::RunLoop().RunUntilIdle();
|
| }
|
|
|
| @@ -140,27 +148,52 @@ TEST_F(NTPSnippetsDatabaseTest, Save) {
|
| ASSERT_TRUE(db()->IsInitialized());
|
|
|
| std::unique_ptr<NTPSnippet> snippet = CreateTestSnippet();
|
| + std::string image_data("pretty image");
|
|
|
| + // Store a snippet and an image.
|
| db()->SaveSnippet(*snippet);
|
| - base::RunLoop().RunUntilIdle();
|
| -
|
| - db()->LoadSnippets(base::Bind(&NTPSnippetsDatabaseTest::OnSnippetsLoaded,
|
| - base::Unretained(this)));
|
| + db()->SaveImage(snippet->id(), image_data);
|
|
|
| + // Make sure they're there.
|
| EXPECT_CALL(*this,
|
| OnSnippetsLoadedImpl(ElementsAre(SnippetEq(snippet.get()))));
|
| + db()->LoadSnippets(base::Bind(&NTPSnippetsDatabaseTest::OnSnippetsLoaded,
|
| + base::Unretained(this)));
|
| base::RunLoop().RunUntilIdle();
|
|
|
| Mock::VerifyAndClearExpectations(this);
|
|
|
| - // The snippet should still exist after recreating the database.
|
| + EXPECT_CALL(*this, OnImageLoaded(image_data));
|
| + db()->LoadImage(snippet->id(),
|
| + base::Bind(&NTPSnippetsDatabaseTest::OnImageLoaded,
|
| + base::Unretained(this)));
|
| + base::RunLoop().RunUntilIdle();
|
| +}
|
| +
|
| +TEST_F(NTPSnippetsDatabaseTest, SavePersist) {
|
| CreateDatabase();
|
| + base::RunLoop().RunUntilIdle();
|
| + ASSERT_TRUE(db()->IsInitialized());
|
|
|
| - db()->LoadSnippets(base::Bind(&NTPSnippetsDatabaseTest::OnSnippetsLoaded,
|
| - base::Unretained(this)));
|
| + std::unique_ptr<NTPSnippet> snippet = CreateTestSnippet();
|
| + std::string image_data("pretty image");
|
| +
|
| + // Store a snippet and an image.
|
| + db()->SaveSnippet(*snippet);
|
| + db()->SaveImage(snippet->id(), image_data);
|
| + base::RunLoop().RunUntilIdle();
|
| +
|
| + // They should still exist after recreating the database.
|
| + CreateDatabase();
|
|
|
| EXPECT_CALL(*this,
|
| OnSnippetsLoadedImpl(ElementsAre(SnippetEq(snippet.get()))));
|
| + db()->LoadSnippets(base::Bind(&NTPSnippetsDatabaseTest::OnSnippetsLoaded,
|
| + base::Unretained(this)));
|
| + EXPECT_CALL(*this, OnImageLoaded(image_data));
|
| + db()->LoadImage(snippet->id(),
|
| + base::Bind(&NTPSnippetsDatabaseTest::OnImageLoaded,
|
| + base::Unretained(this)));
|
| base::RunLoop().RunUntilIdle();
|
| }
|
|
|
| @@ -171,20 +204,19 @@ TEST_F(NTPSnippetsDatabaseTest, Update) {
|
|
|
| std::unique_ptr<NTPSnippet> snippet = CreateTestSnippet();
|
|
|
| + // Store a snippet.
|
| db()->SaveSnippet(*snippet);
|
| - base::RunLoop().RunUntilIdle();
|
|
|
| + // Change it.
|
| const std::string text("some text");
|
| snippet->set_snippet(text);
|
| -
|
| db()->SaveSnippet(*snippet);
|
| - base::RunLoop().RunUntilIdle();
|
| -
|
| - db()->LoadSnippets(base::Bind(&NTPSnippetsDatabaseTest::OnSnippetsLoaded,
|
| - base::Unretained(this)));
|
|
|
| + // Make sure we get the updated version.
|
| EXPECT_CALL(*this,
|
| OnSnippetsLoadedImpl(ElementsAre(SnippetEq(snippet.get()))));
|
| + db()->LoadSnippets(base::Bind(&NTPSnippetsDatabaseTest::OnSnippetsLoaded,
|
| + base::Unretained(this)));
|
| base::RunLoop().RunUntilIdle();
|
| }
|
|
|
| @@ -195,16 +227,62 @@ TEST_F(NTPSnippetsDatabaseTest, Delete) {
|
|
|
| std::unique_ptr<NTPSnippet> snippet = CreateTestSnippet();
|
|
|
| + // Store a snippet.
|
| db()->SaveSnippet(*snippet);
|
| +
|
| + // Make sure it's there.
|
| + EXPECT_CALL(*this,
|
| + OnSnippetsLoadedImpl(ElementsAre(SnippetEq(snippet.get()))));
|
| + db()->LoadSnippets(base::Bind(&NTPSnippetsDatabaseTest::OnSnippetsLoaded,
|
| + base::Unretained(this)));
|
| base::RunLoop().RunUntilIdle();
|
|
|
| + Mock::VerifyAndClearExpectations(this);
|
| +
|
| + // Delete the snippet.
|
| db()->DeleteSnippet(snippet->id());
|
| +
|
| + // Make sure it's gone.
|
| + EXPECT_CALL(*this, OnSnippetsLoadedImpl(IsEmpty()));
|
| + db()->LoadSnippets(base::Bind(&NTPSnippetsDatabaseTest::OnSnippetsLoaded,
|
| + base::Unretained(this)));
|
| base::RunLoop().RunUntilIdle();
|
| +}
|
|
|
| +TEST_F(NTPSnippetsDatabaseTest, DeleteSnippetAlsoDeletesImage) {
|
| + CreateDatabase();
|
| + base::RunLoop().RunUntilIdle();
|
| + ASSERT_TRUE(db()->IsInitialized());
|
| +
|
| + std::unique_ptr<NTPSnippet> snippet = CreateTestSnippet();
|
| + std::string image_data("pretty image");
|
| +
|
| + // Store a snippet and image.
|
| + db()->SaveSnippet(*snippet);
|
| + db()->SaveImage(snippet->id(), image_data);
|
| + base::RunLoop().RunUntilIdle();
|
| +
|
| + // Make sure they're there.
|
| + EXPECT_CALL(*this,
|
| + OnSnippetsLoadedImpl(ElementsAre(SnippetEq(snippet.get()))));
|
| db()->LoadSnippets(base::Bind(&NTPSnippetsDatabaseTest::OnSnippetsLoaded,
|
| base::Unretained(this)));
|
| + EXPECT_CALL(*this, OnImageLoaded(image_data));
|
| + db()->LoadImage(snippet->id(),
|
| + base::Bind(&NTPSnippetsDatabaseTest::OnImageLoaded,
|
| + base::Unretained(this)));
|
| + base::RunLoop().RunUntilIdle();
|
|
|
| - EXPECT_CALL(*this, OnSnippetsLoadedImpl(IsEmpty()));
|
| + Mock::VerifyAndClearExpectations(this);
|
| +
|
| + // Delete the snippet.
|
| + db()->DeleteSnippet(snippet->id());
|
| +
|
| + // Make sure the image is gone.
|
| + EXPECT_CALL(*this, OnImageLoaded(std::string()));
|
| + db()->LoadImage(snippet->id(),
|
| + base::Bind(&NTPSnippetsDatabaseTest::OnImageLoaded,
|
| + base::Unretained(this)));
|
| base::RunLoop().RunUntilIdle();
|
| }
|
|
|
|
|