From c40868b9050ad6506e9a8493cd0a1dff483ed38c Mon Sep 17 00:00:00 2001 From: Oliver Hamlet Date: Sat, 3 Jan 2015 17:36:54 +0000 Subject: [PATCH] Added unit tests for loot_get_masterlist_revision(). And fleshed out the loot_update_masterlist() tests a bit more. --- src/tests/api/api.h | 51 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/src/tests/api/api.h b/src/tests/api/api.h index f766e4ed..18306546 100644 --- a/src/tests/api/api.h +++ b/src/tests/api/api.h @@ -152,8 +152,59 @@ TEST_F(OblivionAPIOperationsTest, UpdateMasterlist) { EXPECT_EQ(loot_error_invalid_args, loot_update_masterlist(db, masterlistPath.string().c_str(), "https://github.com/loot/oblivion.git", NULL, &updated)); EXPECT_EQ(loot_error_invalid_args, loot_update_masterlist(db, masterlistPath.string().c_str(), "https://github.com/loot/oblivion.git", "master", NULL)); + EXPECT_EQ(loot_error_git_error, loot_update_masterlist(db, ";//\?", "https://github.com/loot/oblivion.git", "master", &updated)); + EXPECT_EQ(loot_error_git_error, loot_update_masterlist(db, "", "https://github.com/loot/oblivion.git", "master", &updated)); + EXPECT_EQ(loot_error_git_error, loot_update_masterlist(db, masterlistPath.string().c_str(), "https://github.com/loot/oblivion-does-not-exist.git", "master", &updated)); + EXPECT_EQ(loot_error_git_error, loot_update_masterlist(db, masterlistPath.string().c_str(), "https://github.com/loot/oblivion.git", "missing-branch", &updated)); + EXPECT_EQ(loot_error_git_error, loot_update_masterlist(db, masterlistPath.string().c_str(), "https://github.com/loot/oblivion.git", "", &updated)); + + // Test actual masterlist update. EXPECT_EQ(loot_ok, loot_update_masterlist(db, masterlistPath.string().c_str(), "https://github.com/loot/oblivion.git", "master", &updated)); EXPECT_TRUE(updated); + + // Test with an up-to-date masterlist. + EXPECT_EQ(loot_ok, loot_update_masterlist(db, masterlistPath.string().c_str(), "https://github.com/loot/oblivion.git", "master", &updated)); + EXPECT_FALSE(updated); +} + +TEST_F(OblivionAPIOperationsTest, GetMasterlistRevision) { + char * revisionID; + char * revisionDate; + bool isModified; + EXPECT_EQ(loot_error_invalid_args, loot_get_masterlist_revision(NULL, masterlistPath.string().c_str(), false, &revisionID, &revisionDate, &isModified)); + EXPECT_EQ(loot_error_invalid_args, loot_get_masterlist_revision(db, NULL, false, &revisionID, &revisionDate, &isModified)); + EXPECT_EQ(loot_error_invalid_args, loot_get_masterlist_revision(db, masterlistPath.string().c_str(), false, NULL, &revisionDate, &isModified)); + EXPECT_EQ(loot_error_invalid_args, loot_get_masterlist_revision(db, masterlistPath.string().c_str(), false, &revisionID, NULL, &isModified)); + EXPECT_EQ(loot_error_invalid_args, loot_get_masterlist_revision(db, masterlistPath.string().c_str(), false, &revisionID, &revisionDate, NULL)); + + // Test with no masterlist. + EXPECT_EQ(loot_ok, loot_get_masterlist_revision(db, masterlistPath.string().c_str(), false, &revisionID, &revisionDate, &isModified)); + EXPECT_EQ(NULL, revisionID); + EXPECT_EQ(NULL, revisionDate); + EXPECT_FALSE(isModified); + + // Test with a generated (non-revision-control) masterlist. + ASSERT_NO_THROW(GenerateMasterlist()); + EXPECT_EQ(loot_ok, loot_get_masterlist_revision(db, masterlistPath.string().c_str(), false, &revisionID, &revisionDate, &isModified)); + EXPECT_EQ(NULL, revisionID); + EXPECT_EQ(NULL, revisionDate); + EXPECT_FALSE(isModified); + + // Update the masterlist and test. + bool updated; + ASSERT_EQ(loot_ok, loot_update_masterlist(db, masterlistPath.string().c_str(), "https://github.com/loot/oblivion.git", "master", &updated)); + ASSERT_TRUE(updated); + EXPECT_EQ(loot_ok, loot_get_masterlist_revision(db, masterlistPath.string().c_str(), false, &revisionID, &revisionDate, &isModified)); + EXPECT_STRNE(NULL, revisionID); + EXPECT_STRNE(NULL, revisionDate); + EXPECT_FALSE(isModified); + + // Overwrite the masterlist with a generated one. + ASSERT_NO_THROW(GenerateMasterlist()); + EXPECT_EQ(loot_ok, loot_get_masterlist_revision(db, masterlistPath.string().c_str(), false, &revisionID, &revisionDate, &isModified)); + EXPECT_STRNE(NULL, revisionID); + EXPECT_STRNE(NULL, revisionDate); + EXPECT_TRUE(isModified); } TEST_F(OblivionAPIOperationsTest, LoadLists) {