Commit 509a7f00 authored by treib's avatar treib Committed by Commit bot

[NTP Snippets] Extend NTPSnippetsDatabase tests for images

Also clean up the existing tests a bit

BUG=605870

Review-Url: https://codereview.chromium.org/2079833002
Cr-Commit-Position: refs/heads/master@{#400651}
parent 7c6861df
......@@ -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();
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment