Add getting only masterlist metadata to the API

This commit is contained in:
Oliver Hamlet
2017-02-06 18:02:31 +00:00
parent 63e458eea6
commit fc626ced24
4 changed files with 29 additions and 6 deletions
+6 -1
View File
@@ -179,11 +179,16 @@ public:
* @brief Get all a plugin's loaded metadata.
* @param plugin
* The filename of the plugin to look up metadata for.
* @param includeUserMetadata
* If true, any user metadata the plugin has is included in the
* returned metadata, otherwise the metadata returned only includes
* metadata from the masterlist.
* @returns A PluginMetadata object containing all the plugin's metadata.
* If the plugin has no metadata, PluginMetadata.IsNameOnly()
* will return true.
*/
virtual PluginMetadata GetPluginMetadata(const std::string& plugin) = 0;
virtual PluginMetadata GetPluginMetadata(const std::string& plugin,
bool includeUserMetadata = true) = 0;
/**
* @brief Get a plugin's metadata loaded from the given userlist.
+6 -2
View File
@@ -133,9 +133,13 @@ std::vector<Message> ApiDatabase::GetGeneralMessages() {
return masterlistMessages;
}
PluginMetadata ApiDatabase::GetPluginMetadata(const std::string& plugin) {
PluginMetadata ApiDatabase::GetPluginMetadata(const std::string& plugin,
bool includeUserMetadata) {
PluginMetadata metadata = game_.GetMasterlist().FindPlugin(plugin);
metadata.MergeMetadata(game_.GetUserlist().FindPlugin(plugin));
if (includeUserMetadata) {
metadata.MergeMetadata(game_.GetUserlist().FindPlugin(plugin));
}
return metadata;
}
+2 -1
View File
@@ -62,7 +62,8 @@ struct ApiDatabase : public DatabaseInterface {
std::vector<Message> GetGeneralMessages();
PluginMetadata GetPluginMetadata(const std::string& plugin);
PluginMetadata GetPluginMetadata(const std::string& plugin,
bool includeUserMetadata = true);
PluginMetadata GetPluginUserMetadata(const std::string& plugin);
+15 -2
View File
@@ -355,12 +355,12 @@ TEST_P(DatabaseInterfaceTest, getPluginMetadataShouldReturnAnEmptyPluginMetadata
EXPECT_TRUE(metadata.HasNameOnly());
}
TEST_P(DatabaseInterfaceTest, getPluginMetadataShouldReturnMergedMasterAndUserMetadataForTheGivenPlugin) {
TEST_P(DatabaseInterfaceTest, getPluginMetadataShouldReturnMergedMasterAndUserMetadataForTheGivenPluginIfIncludeUserMetadataIsTrue) {
ASSERT_NO_THROW(GenerateMasterlist());
ASSERT_NO_THROW(GenerateUserlist());
ASSERT_NO_THROW(db_->LoadLists(masterlistPath.string(), userlistPath_.string()));
auto metadata = db_->GetPluginMetadata(blankEsm);
auto metadata = db_->GetPluginMetadata(blankEsm, true);
std::set<File> expectedLoadAfter({
File(masterFile),
@@ -369,6 +369,19 @@ TEST_P(DatabaseInterfaceTest, getPluginMetadataShouldReturnMergedMasterAndUserMe
EXPECT_EQ(expectedLoadAfter, metadata.LoadAfter());
}
TEST_P(DatabaseInterfaceTest, getPluginMetadataShouldReturnOnlyMasterlistMetadataForTheGivenPluginIfIncludeUserMetadataIsFalse) {
ASSERT_NO_THROW(GenerateMasterlist());
ASSERT_NO_THROW(GenerateUserlist());
ASSERT_NO_THROW(db_->LoadLists(masterlistPath.string(), userlistPath_.string()));
auto metadata = db_->GetPluginMetadata(blankEsm, false);
std::set<File> expectedLoadAfter({
File(masterFile),
});
EXPECT_EQ(expectedLoadAfter, metadata.LoadAfter());
}
TEST_P(DatabaseInterfaceTest, getPluginUserMetadataShouldReturnAnEmptyPluginMetadataObjectIfThePluginHasNoUserMetadata) {
ASSERT_NO_THROW(GenerateMasterlist());
ASSERT_NO_THROW(GenerateUserlist());