mirror of
https://github.com/typesense/typesense.git
synced 2025-05-17 20:22:32 +08:00
Allow override rule with only metadata action.
This commit is contained in:
parent
0007c97c54
commit
35a5ddeb54
@ -22,9 +22,9 @@ Option<bool> override_t::parse(const nlohmann::json& override_json, const std::s
|
||||
|
||||
if(override_json.count("includes") == 0 && override_json.count("excludes") == 0 &&
|
||||
override_json.count("filter_by") == 0 && override_json.count("sort_by") == 0 &&
|
||||
override_json.count("remove_matched_tokens") == 0 &&
|
||||
override_json.count("remove_matched_tokens") == 0 && override_json.count("metadata") == 0 &&
|
||||
override_json.count("replace_query") == 0) {
|
||||
return Option<bool>(400, "Must contain one of: `includes`, `excludes`, "
|
||||
return Option<bool>(400, "Must contain one of: `includes`, `excludes`, `metadata`, "
|
||||
"`filter_by`, `sort_by`, `remove_matched_tokens`, `replace_query`.");
|
||||
}
|
||||
|
||||
|
@ -275,8 +275,8 @@ TEST_F(CollectionOverrideTest, OverrideJSONValidation) {
|
||||
|
||||
parse_op = override_t::parse(include_json2, "", override2);
|
||||
ASSERT_FALSE(parse_op.ok());
|
||||
ASSERT_STREQ("Must contain one of: `includes`, `excludes`, `filter_by`, `sort_by`, `remove_matched_tokens`, `replace_query`.",
|
||||
parse_op.error().c_str());
|
||||
ASSERT_STREQ("Must contain one of: `includes`, `excludes`, `metadata`, `filter_by`, `sort_by`, "
|
||||
"`remove_matched_tokens`, `replace_query`.", parse_op.error().c_str());
|
||||
|
||||
include_json2["includes"] = nlohmann::json::array();
|
||||
include_json2["includes"][0] = 100;
|
||||
@ -3894,20 +3894,37 @@ TEST_F(CollectionOverrideTest, MetadataValidation) {
|
||||
ASSERT_FALSE(op.ok());
|
||||
ASSERT_EQ("The `metadata` must be a JSON object.", op.error());
|
||||
|
||||
// don't allow empty rule without any action
|
||||
override_json1 = R"({
|
||||
"id": "ov-1",
|
||||
"rule": {
|
||||
"query": "queryA",
|
||||
"match": "exact"
|
||||
}
|
||||
})"_json;
|
||||
|
||||
override_t override2;
|
||||
op = override_t::parse(override_json1, "ov-2", override2);
|
||||
ASSERT_FALSE(op.ok());
|
||||
ASSERT_EQ("Must contain one of: `includes`, `excludes`, `metadata`, `filter_by`, `sort_by`, "
|
||||
"`remove_matched_tokens`, `replace_query`.", op.error());
|
||||
|
||||
// should allow only metadata to be present as action
|
||||
|
||||
override_json1 = R"({
|
||||
"id": "ov-1",
|
||||
"rule": {
|
||||
"query": "queryA",
|
||||
"match": "exact"
|
||||
},
|
||||
"filter_by": "category: kids",
|
||||
"metadata": {"foo": "bar"}
|
||||
})"_json;
|
||||
|
||||
op = override_t::parse(override_json1, "ov-1", override1);
|
||||
override_t override3;
|
||||
op = override_t::parse(override_json1, "ov-3", override3);
|
||||
ASSERT_TRUE(op.ok());
|
||||
|
||||
coll1->add_override(override1);
|
||||
coll1->add_override(override3);
|
||||
|
||||
collectionManager.drop_collection("coll1");
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user