summaryrefslogtreecommitdiffstats
path: root/xbmc/addons/test/TestAddonDatabase.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'xbmc/addons/test/TestAddonDatabase.cpp')
-rw-r--r--xbmc/addons/test/TestAddonDatabase.cpp80
1 files changed, 80 insertions, 0 deletions
diff --git a/xbmc/addons/test/TestAddonDatabase.cpp b/xbmc/addons/test/TestAddonDatabase.cpp
new file mode 100644
index 0000000..d5557dc
--- /dev/null
+++ b/xbmc/addons/test/TestAddonDatabase.cpp
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2016-2018 Team Kodi
+ * This file is part of Kodi - https://kodi.tv
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ * See LICENSES/README.md for more information.
+ */
+
+#include "addons/AddonDatabase.h"
+#include "addons/addoninfo/AddonInfoBuilder.h"
+#include "filesystem/SpecialProtocol.h"
+#include "settings/AdvancedSettings.h"
+
+#include <set>
+#include <utility>
+
+#include <gtest/gtest.h>
+
+using namespace ADDON;
+
+
+class AddonDatabaseTest : public ::testing::Test
+{
+protected:
+ DatabaseSettings settings;
+ CAddonDatabase database;
+
+ void SetUp() override
+ {
+ settings.type = "sqlite3";
+ settings.name = "test";
+ settings.host = CSpecialProtocol::TranslatePath("special://temp/");
+
+ database.Connect("test", settings, true);
+
+ std::set<std::string> installed{"repository.a", "repository.b"};
+ database.SyncInstalled(installed, installed, std::set<std::string>());
+
+ std::vector<AddonInfoPtr> addons;
+ CreateAddon(addons, "foo.bar", "1.0.0");
+ database.SetRepoUpdateData("repository.a", {});
+ database.UpdateRepositoryContent("repository.a", CAddonVersion("1.0.0"), "test", addons);
+
+ addons.clear();
+ CreateAddon(addons, "foo.baz", "1.1.0");
+ database.SetRepoUpdateData("repository.b", {});
+ database.UpdateRepositoryContent("repository.b", CAddonVersion("1.0.0"), "test", addons);
+ }
+
+ void CreateAddon(std::vector<AddonInfoPtr>& addons, std::string id, const std::string& version)
+ {
+ CAddonInfoBuilderFromDB builder;
+ builder.SetId(std::move(id));
+ builder.SetVersion(CAddonVersion(version));
+ addons.push_back(builder.get());
+ }
+
+ void TearDown() override
+ {
+ database.Close();
+ }
+};
+
+
+TEST_F(AddonDatabaseTest, TestFindById)
+{
+ VECADDONS addons;
+ EXPECT_TRUE(database.FindByAddonId("foo.baz", addons));
+ EXPECT_EQ(1U, addons.size());
+ EXPECT_EQ(addons.at(0)->ID(), "foo.baz");
+ EXPECT_EQ(addons.at(0)->Version().asString(), "1.1.0");
+ EXPECT_EQ(addons.at(0)->Origin(), "repository.b");
+}
+
+TEST_F(AddonDatabaseTest, TestFindByNonExistingId)
+{
+ VECADDONS addons;
+ EXPECT_TRUE(database.FindByAddonId("does.not.exist", addons));
+ EXPECT_EQ(0U, addons.size());
+}