mirror of
https://github.com/loot/libloot.git
synced 2026-07-27 14:16:01 -07:00
Add getting only masterlist metadata to the API
This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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());
|
||||
|
||||
Reference in New Issue
Block a user